Восстановление удаленных устройств в Zigbee2MQTT

Восстановление удаленных устройств в Zigbee2MQTT
Рекомендация
Управляй умным домом с компьютера

Яндекс Браузер со встроенной Алисой — бесплатно

Установить
Реклама. ООО «Яндекс», ИНН 7736207543

Случайное удаление умного устройства из системы автоматизации — распространенная проблема. Будь то случайный клик по кнопке «Удалить» в веб-интерфейсе, сбой интеграции MQTT или очистка неактивных сущностей в Home Assistant, результат один: датчик или реле перестают работать, а завязанные на них автоматизации ломаются.

Самое неприятное в этой ситуации — перспектива повторного сопряжения. Если датчик температуры намертво приклеен к стене, датчик протечки лежит под тяжелой ванной, а встроенное реле замуровано в подрозетнике за бетонной стеной, физический доступ к кнопке сброса (Reset) становится серьезной проблемой. К счастью, архитектура протокола Zigbee и плагина Zigbee2MQTT позволяет восстановить удаленные устройства программным путем без необходимости физического доступа к ним. В этом руководстве мы подробно разберем, как в homeassistant вернуть удалённые устройства zigbee2mqtt быстро и безболезненно.


Сценарий 1. Устройство удалено только в Home Assistant (но осталось в Zigbee2MQTT)

Если в веб-интерфейсе Zigbee2MQTT устройство отображается в списке и имеет статус Online, но в самом Home Assistant сущности датчика горят серым цветом (состояние Unavailable), это означает сбой передачи конфигурационных данных по протоколу MQTT.

Home Assistant использует автообнаружение (MQTT Discovery). Чтобы вернуть устройство, вам не нужно удалять его из сети. Выполните следующие шаги:

  1. Откройте панель Zigbee2MQTT -> Настройки (Settings) -> Перезапуск (Restart) и перезапустите службу. При старте плагин заново отправит все конфигурационные топики в брокер Mosquitto MQTT.
  2. Если это не помогло, перейдите в Home Assistant -> Настройки -> Устройства и службы -> интеграция MQTT. Нажмите «Настроить» и убедитесь, что брокер активен.
  3. Перейдите во вкладку «Состояния» в инструментах разработчика HA, найдите объект вашего устройства и проверьте, получает ли он данные. Обычно простой перезапуск службы MQTT полностью восстанавливает все сущности.

Сценарий 2. Устройство удалено из базы Zigbee2MQTT (но датчик не сбрасывали физически)

Если вы нажали кнопку удаления устройства непосредственно в панели Zigbee2MQTT (выбрав обычный Remove или даже Force remove), запись об устройстве стирается из локальной базы данных database.db на сервере. Однако сам физический датчик об этом не знает, так как обратная связь от координатора до спящего (end-device) датчика в этот момент могла не дойти.

Поскольку датчик все еще помнит старый Network Key (ключ сети), PAN ID и рабочий радиоканал, его можно вернуть обратно в сеть без долгого зажатия кнопки сброса.

Пошаговый алгоритм восстановления:

  1. В веб-интерфейсе Zigbee2MQTT в верхнем меню нажмите кнопку Permit join (All) (Разрешить подключение для всех устройств).
  2. Возьмите удаленный датчик и один раз коротко нажмите на его физическую кнопку (например, скрепкой или пальцем). ВАЖНО: не зажимайте кнопку на 5–10 секунд, иначе датчик сбросит внутреннюю память и сотрет ключ сети! Нам нужно просто отправить сигнал «просыпания» (Wakeup).
  3. Если физический доступ к датчику невозможен (он замурован), спровоцируйте его на отправку данных естественным путем:
    • Проведите рукой перед датчиком движения.
    • Намочите контакты датчика протечки мокрой салфеткой.
    • Нажмите на клавишу выключателя, если это проводное реле.
    • Измените температуру возле датчика климата (например, подуйте на него теплым воздухом).
  4. Проснувшись и попытавшись передать данные, датчик отправит в эфир пакет со старым ключом сети. Координатор Zigbee (например, стик Sonoff 3.0 Dongle Plus) опознает знакомый ключ шифрования, автоматически примет устройство обратно в сеть и заново внесет его в список устройств.

Сценарий 3. Редактирование конфигурации для сохранения истории данных

При повторном обнаружении устройства Zigbee2MQTT присвоит ему стандартный адрес (например, 0x00158d000abcdefg). При этом в Home Assistant создадутся новые сущности, а старые сущности с friendly name будут окончательно удалены, что сломает ваши сценарии и очистит историю графиков.

Чтобы этого избежать, выполните следующие действия:

  1. Сразу после того, как устройство снова появилось в списке Zigbee2MQTT, перейдите в его настройки.
  2. В поле Friendly name введите точное старое имя устройства (например, sensor_living_room_temp).
  3. Обязательно активируйте переключатель Update Home Assistant entity ID (Обновить ID сущностей в Home Assistant).
  4. Нажмите кнопку Rename (Переименовать).

TIP

Чтобы подстраховаться от таких сбоев, настройте автоматическое резервное копирование папки конфигурации Home Assistant. О том, как это сделать, читайте в нашей статье по настройке бэкапов Home Assistant на Яндекс Диск.

После этого интеграция обновит конфигурационные топики в MQTT, и Home Assistant привяжет новые физические адреса устройства к старым именам сущностей. История графиков в базе данных SQLite/InfluxDB и все автоматизации продолжат работать без изменений.

WARNING

Если вы применили физический сброс к датчику (индикатор долго моргал синим или красным цветом), вернуть его старым ключом сети не получится. Устройство полностью забыло параметры сети и потребует стандартной процедуры сопряжения. В этом случае ознакомьтесь с нашей инструкцией по правильному сбросу и сопряжению датчиков Zigbee.

Инструкция по устранению

1

Проверка статуса в базе Zigbee2MQTT

Откройте веб-интерфейс Zigbee2MQTT и убедитесь, осталось ли устройство в общем списке датчиков или было полностью стерто из базы данных database.db.

2

Активация режима Permit Join

Включите режим сопряжения «Permit Join» в панели Zigbee2MQTT и кратковременно нажмите кнопку на датчике (без долгого зажатия), чтобы вернуть его в сеть.