04.01.2025 вышел релиз аддона Zigbee2MQTT версии 2.0.0. Этот аддон может работать не только с Home Assistant, но в данной статье речь пойдёт именно о нём.
Как обычно, смена мажорного номера версии (первой цифры) означает кардинальные изменения продукта. А нулевые минорные значения версии (вторая и третья цифры), как правило, предупреждают о возможной "сырости" продукта, то есть недостаточной степени его оттестированности. И зачастую при обновлении ПО мажорной версии возникают различные проблемы совместимости. Так случилось и в этот раз. И я, не будучи "прошаренным" специалистом, убил почти целый день на это обновление. Правда, предположение о "сырости" именно Zigbee2MQTT в итоге не подтвердились.
Конечно же, прежде чем устанавливать такое серьёзное обновление, я прочитал описание релиза и морально подготовился к возможным трудностям, а также выделил достаточно свободного времени на эту процедуру.
Что сломалось - zigbee-координатор
Итак, обновление аддона Zigbee2MQTT в Home Assistant установлено.
Сразу же после этого перестала работать вся zigbee-сеть!
Умный дом в этой части полностью лёг! А у меня на данный момент в zigbee-сети уже 33 устройства.
Что-ж, неприятно, но ожидаемо. Придётся разбираться.
И это - минус использования аддона Zigbee2MQTT в сравнении с нативной интеграцией Zigbee Home Automation в Home Assistant - в случае проблем нужно уметь разбираться. Не могу сказать, что умею, но приходится учиться.
Первым делом смотрим лог аддона Zigbee2MQTT в Home Assistant:
Настройки -> Дополнения -> Zigbee2MQTT -> Журнал.
Лично я там увидел вот такую ошибку:
Error: Adapter EZSP protocol version (8) is not supported by Host [13-16]
Что сие означает мне понятно лишь отдалённо - мой координатор как-то не очень стал совместим по версии протокола с хостом, то есть с аддоном Zigbee2MQTT.
Что делать
Что первым делом делают в случае любых проблем любого ПО? Очевидно - проверяют его свежесть. Последняя ли версия используется. И если аддон я уже обновил, то значит нужно проверить прошивку координатора.
Zigbee-координатор и виды прошивок
Я использую довольно популярный zigbee-координатор
SONOFF Zigbee 3.0 USB Dongle Plus-E:
Официальный сайт предлагает старую статью по настройке этого координатора в Home Assistant:
В которой есть ссылка на не менее старую инструкцию по обновлению его прошивки, в которой указан репозиторий на GitHub с актуальной прошивкой семимесячной давности:
Ещё до обновления Zigbee2MQTT с текущей (старой) прошивкой координатора 6.10.3 я постоянно получал вот такие ошибки:
Поэтому вопрос обновления больше не стоял. Нужно перепрошивать координатор. Но вот как и на что?
К этому моменту я уже слышал о том, что существует два разных типа прошивки zigbee-координаторов - EZSP и Ember. Хотя тут, конечно, странный нейминг, потому что EZSP - это EmberZNet Serial Protocol. А Ember это вроде как просто EmberZNet. Поди разберись. Но вот EZSP больше не поддерживается, а Ember поддерживается. В общем, я в этом нейминге ни черта не понял, и что в итоге я установил - тоже не понял )) Понял только, что прошивка неофициальная. Но заработало, и это главное.
Обновление прошивки SONOFF USB Dongle Plus-E
Эту инструкцию подсмотрел у Alex Kvazis:
Берём наш координатор и вставляем его в USB-порт своего компьютера. Затем открываем вот этот сайт:
Нажимаем там кнопку CONNECT под картинкой соответствующего координатора:
Выбираем координатор и подключаемся к нему:
Ждём минутку, пока произойдёт подключение:
И тут я не стал качать прошивку из репозитория и выбирать этот файл для прошивки, а просто нажал кнопку "UPGRADE TO 7.4.4.0":
Всё прошло успешно, по окончании процесса прошивки вставил координатор обратно в сервер умного дома. После перезагрузки аддона Zigbee2MQTT у меня сразу же всё заработало, никаких дополнительных настроек и конфигов (типа изменения типа адаптера с ezsp на ember) я не производил:
Ну и вот какую прошивку я в итоге залил, кто мне скажет? EZSP или Ember?
Что ещё сломалось - внешние конвертеры
Заработали все zigbee-устройства, кроме одного. Это датчик углекислого газа и качества воздуха EfektaLab "EFEKTA AQ Smart Monitor":
В моей zigbee-сети на данный момент это единственное устройство, которое требует внешнего конвертера для работы. Внешний конвертер - нечто вроде драйвера для умного устройства, когда стандартными средствами протокола zigbee не удаётся реализовать его функционал правильно или в полной мере. В случае с данным датчиком такой конвертер необходим как минимум потому, что в протоколе zigbee не предусмотрен кластер для типа данных VOC (индекса качества воздуха - концентрации летучих органических соединений).
В обновленной версии Zigbee2MQTT изменился алгоритм подключения внешних конвертеров. Теперь этой вкладки нет в настройках аддона, и все конвертеры подгружаются и распознаются автоматически. Нужно только положить их в определённую папку. И вот тут возникла заминка, и далеко не только у меня одного.
Дело в том, что в описании релиза некорректно указан путь, куда нужно сохранять файлы конвертеров. Там указан такой путь:
data/external_converters
И этот путь неверный. Никакой data не нужен. Правильный путь:
/homeassistant/zigbee2mqtt/external_converters
Создав папку external_converters в папке zigbee2mqtt и переложив в неё файл конвертера EFEKTA_AQ_Smart_Monitor_R4.js, после перезагрузки аддона Zigbee2MQTT датчик заработал как прежде.
Резюме
Прошивка координатора EmberZNet 7.4.4 пока что ведёт себя гораздо лучше, чем прежняя EZSP 6.10.3. Как минимум в течение суток в логах чисто, ошибок доступа к памяти за пределами буфера я больше не наблюдаю. Да и вообще никаких ошибок пока нет. А раньше, помимо ошибок с памятью, проскакивали ещё всякие разные, связанные с некорректным парсингом сообщений.