Дубли показаний в IoT могут появляться из-за повторной отправки, reconnect, QoS, retain-сообщений, нестабильной сети или отсутствия уникального идентификатора события.

Когда это становится проблемой

Температура, счетчик или статус устройства записывается несколько раз. Графики становятся неверными, уведомления срабатывают повторно, а аналитика показывает неправильные значения.

Что проверяю в первую очередь

  • QoS MQTT и поведение клиента при повторной доставке
  • Retain-сообщения и повторную подписку
  • Reconnect и повторную отправку буфера
  • Наличие timestamp, sequence number или message id
  • Логи брокера, клиента и обработчика данных

Как исправляю

Я отделяю повторную доставку сообщения от повторного измерения. Затем добавляю идемпотентную запись и правила дедупликации, чтобы одно событие не портило данные.

  • Настраиваю корректный QoS и retain
  • Добавляю уникальный ключ события или sequence number
  • Исправляю reconnect-логику устройства
  • Делаю дедупликацию на стороне обработчика или базы

Что важно не сломать

Нельзя просто удалять все одинаковые значения подряд: реальный датчик может честно отправить одинаковое показание несколько раз.

Что будет после исправления

  • Повторные сообщения не создают дубли в базе
  • Графики и уведомления становятся точнее
  • Система переносит reconnect без повреждения данных
  • Причины повторов видны в логах

Что подготовить перед обращением

  • Топик MQTT и пример сообщений
  • QoS и настройки клиента
  • Логи брокера или обработчика
  • Как данные сохраняются в базу

Вопросы и ответы

Можно ли исправить без полной переделки?

Да, даже если прошивку датчика менять сложно, часто можно добавить дедупликацию на серверной стороне.

Сколько времени занимает диагностика?

Зависит от доступа к устройству и брокеру. Серверную дедупликацию можно сделать быстрее, чем перепрошивку.

Нужна похожая задача?

Напишите в Telegram @rabotator_support и коротко опишите проблему. Я посмотрю симптомы, предложу понятный план работ и скажу, какие доступы нужны для безопасного исправления.