Модуль 4. MQTT и Home Assistant · Урок 8 из 12

Урок 8. Home Assistant MQTT Discovery: сущности, unique_id, birth/will

Устройство в Zigbee2MQTT присутствует, но в Home Assistant его нет: что проверять.

Чему вы научитесь

Понимать жизненный цикл MQTT discovery и отличать отсутствие сущности от отсутствия Zigbee-связи.

Discovery добавляет сущность, а не меняет радиосеть

Интеграция MQTT в Home Assistant может автоматически создавать устройства и сущности, когда получает корректные discovery-публикации. Конфигурация содержит тип компонента, нужные топики и при поддержке уникальный идентификатор. Если датчик отвечает в Zigbee2MQTT, но не появляется в Home Assistant, это может быть проблема discovery, MQTT broker, настройки интеграции или уникального ID, а вовсе не поломка Zigbee маршрутизаторов.

Сначала разделите три факта: существует ли Zigbee-событие, дошла ли публикация до брокера и видит ли Home Assistant корректную discovery-конфигурацию. Пример нельзя считать выполненным только потому, что на стенде нарисована зелёная линия между блоками: нужен подтверждённый обмен на каждом уровне.

Birth and Will, retained и перезапуски

Home Assistant публикует событие запуска MQTT-интеграции в системный статусный топик, часто homeassistant/status. Система-публикатор может использовать этот сигнал для повторной публикации discovery-конфигурации. Альтернативой являются retained discovery-сообщения, которые новый подписчик получает после подключения. При отсутствующем unique_id некоторые MQTT-объекты могут не восстановиться так, как ожидает пользователь; детали зависят от действующей версии интеграции.

Если после перезапуска Home Assistant исчезли сущности, сначала проверяют состояние брокера и сообщения discovery, а не сбрасывают физические устройства к заводским настройкам. Сброс оборудования может создать гораздо больше проблем, включая потерю binding и родителя в Zigbee Mesh.

Не путать Device, Entity и Availability

Один многоканальный прибор Zigbee может соответствовать нескольким Home Assistant entities: реле, измерение потребления, температура, уровень батареи. Наличие объекта device не гарантирует наличие всех нужных сущностей. Иногда свойство отключено в expose, не поддерживается firmware, отсутствует или скрыто в интерфейсе HA. К тому же availability MQTT определяет отдельный индикатор состояния доступности, не всегда равный реальному времени последнего радиоответа.

Успешный тест discovery требует показать, что нужная сущность существует и её state обновился после соответствующего события. Курс учит объяснять ограничения: иногда для восстановления достаточно конфигурации MQTT и повторного discovery, но конкретные действия должны соответствовать текущей версии программ и сохранённой резервной копии.

Практическая работа

Для датчика с температурой и влажностью объясните отличие device от двух сущностей. Как это проверить без доступа к чужим учётным данным?

Составьте последовательность после перезапуска HA: брокер, системный статус, discovery-конфигурация, сущность, состояние.

Самопроверка: сформулируйте результат своими словами, а затем пройдите вопросы ниже. Если устройство или программа не доступны, выполните задание на бумаге или в учебном тренажёре.

Проверьте себя

Контрольные вопросы

Ответьте на все вопросы. При ошибке изучите пояснение и попробуйте ещё раз. Все задания бесплатны.

1. Если устройство Zigbee2MQTT видно, но HA его не создал, всегда ли виноват Zigbee?
2. Чем полезны retained discovery сообщения?
3. Зачем unique_id в MQTT discovery?

Правильных ответов: 0 из 3

Урок завершён?

Повторите ключевые идеи и убедитесь, что выполнили практическое задание.