Дубли показаний в IoT могут появляться из-за повторной отправки, reconnect, QoS, retain-сообщений, нестабильной сети или отсутствия уникального идентификатора события.
Когда это становится проблемой
Температура, счетчик или статус устройства записывается несколько раз. Графики становятся неверными, уведомления срабатывают повторно, а аналитика показывает неправильные значения.
Что проверяю в первую очередь
- QoS MQTT и поведение клиента при повторной доставке
- Retain-сообщения и повторную подписку
- Reconnect и повторную отправку буфера
- Наличие timestamp, sequence number или message id
- Логи брокера, клиента и обработчика данных
Как исправляю
Я отделяю повторную доставку сообщения от повторного измерения. Затем добавляю идемпотентную запись и правила дедупликации, чтобы одно событие не портило данные.
- Настраиваю корректный QoS и retain
- Добавляю уникальный ключ события или sequence number
- Исправляю reconnect-логику устройства
- Делаю дедупликацию на стороне обработчика или базы
Что важно не сломать
Нельзя просто удалять все одинаковые значения подряд: реальный датчик может честно отправить одинаковое показание несколько раз.
Что будет после исправления
- Повторные сообщения не создают дубли в базе
- Графики и уведомления становятся точнее
- Система переносит reconnect без повреждения данных
- Причины повторов видны в логах
Что подготовить перед обращением
- Топик MQTT и пример сообщений
- QoS и настройки клиента
- Логи брокера или обработчика
- Как данные сохраняются в базу
Вопросы и ответы
Можно ли исправить без полной переделки?
Да, даже если прошивку датчика менять сложно, часто можно добавить дедупликацию на серверной стороне.
Сколько времени занимает диагностика?
Зависит от доступа к устройству и брокеру. Серверную дедупликацию можно сделать быстрее, чем перепрошивку.
Нужна похожая задача?
Напишите в Telegram @rabotator_support и коротко опишите проблему. Я посмотрю симптомы, предложу понятный план работ и скажу, какие доступы нужны для безопасного исправления.