Старое значение после запуска: как работают retained-сообщения MQTT
Почему число возвращается сразу после перезапуска панели и что оно говорит о датчике. Разбираем сохранённое состояние, доступность устройства и время измерения на одном примере.
Панель умного дома перезапустилась и сразу показала температуру кладовой. Датчик при этом мог ещё не отправить новое измерение: значение способно прийти из сохранённого сообщения MQTT. Чтобы использовать его в автоматизации, нужно понимать происхождение числа и отдельно проверять доступность источника.
MQTT передаёт сообщения через брокер, а участники публикуют и получают их в именованных каналах, которые называют топиками. Ниже рассматривается механизм retained-сообщений, описанный в MQTT 3.1.1, и его применение в Home Assistant. Поведение конкретной прошивки и её настроек потребуется уточнить отдельно.
Что остаётся у брокера
В стандарте OASIS MQTT 3.1.1, разделе 3.3.1.3 определён флаг RETAIN. Он позволяет сохранить сообщение у брокера для будущих подписчиков, а при новой подписке получить последнее сохранённое сообщение соответствующего топика. Такой механизм удобен для восстановления известного состояния.
Само получение retained-сообщения не доказывает, что измерение выполнено в момент открытия панели. Значение могло поступить раньше, затем ждать нового подписчика. Сохранённое сообщение также не является архивом всех предыдущих измерений, для истории нужна отдельная организация хранения.
Возьмём условный пример с топиком flat/storage/temperature. Датчик передал значение 21,4, брокер сохранил его с флагом RETAIN, затем питание датчика отключили. Позже панель заново подписалась на этот топик и получила прежнее число. Такая последовательность объясняет возврат значения без нового измерения и сама по себе не сообщает причину отключения устройства.
Состояние и доступность настраиваются отдельно
Документация Home Assistant по MQTT описывает восстановление состояния через retained-сообщение при подписке на соответствующий топик. Там же есть предупреждение: сообщения могут оставаться у брокера после прекращения работы устройства или сервиса, в том числе после перезапусков системы и брокера.
Для доступности предусмотрен отдельный механизм. Устройство может сообщать о своём подключении и задавать брокеру Will-сообщение, которое тот публикует при потере соединения. При соответствующей настройке Home Assistant использует такие сообщения, чтобы отмечать сущность недоступной. Совпадение названий топиков и ожидаемых значений проверяют по документации конкретного устройства.
Обнаружение разрыва связи занимает время, поэтому мгновенного изменения индикатора обещать нельзя. Кроме того, доступное соединение подтверждает связь клиента с брокером, а исправность измерительной части датчика требует собственных проверок. Даже аккуратно настроенный индикатор online имеет ограниченный смысл.
Добавьте вопрос о времени измерения
Для своей системы полезно выписать рядом с каждой важной величиной, откуда берётся её время. Время получения сообщения панелью и момент измерения датчиком могут различаться, особенно после повторной подписки. Если прошивка передаёт метку измерения или отдельный признак свежести, нужно проверить их смысл и использование в интеграции.
Условие автоматизации формулируют с учётом этого ограничения. Для учебного сценария в кладовой можно отдельно описать допустимый возраст показания, реакцию на недоступность и поведение при отсутствии сведений о свежести. Конкретные пороги выбирают под задачу, готового универсального числа для всех датчиков здесь нет.
Наличие поля времени в интерфейсе ещё стоит сопоставить с источником. Попросите интегратора показать, какое событие обновляет это поле, и сохраните ответ вместе с описанием топиков. Такая запись особенно пригодится, если позже поменяется панель, а прошивка датчика останется прежней.
Проверьте механизм на учебном датчике
Выберите датчик, от которого не зависят ответственные функции, запишите его текущее значение и доступность. Затем по согласованной процедуре отключите именно его питание, наблюдая за тем, что остаётся на панели. Отдельным шагом можно проверить новую подписку при перезапуске тестового клиента, сохранив работающий брокер.
В результате нужны четыре наблюдения: какое значение вернулось, когда изменился статус доступности, какое время отображается и как ведёт себя учебная автоматизация. После возврата питания дождитесь нового сообщения и убедитесь, что опыт завершён. Не очищайте рабочие топики ради сравнения: это меняет исходное состояние системы.
Если брокер расположен дома, обмен может оставаться локальным при сохранённых питании и сети. Облачный брокер добавляет зависимость от внешнего подключения. Сохранившееся число в обоих случаях требует той же проверки происхождения, прежде чем на него будет опираться действие.
Источники проверены 10 ноября 2026 года. На обложке условная редакционная схема сети, она не изображает конкретную модель оборудования.