Как выполнять OTA‑обновления Zigbee‑устройств через ZHA
Да — ZHA поддерживает OTA‑обновления Zigbee‑устройств: нужно подключить провайдер образов (встроенные, zigpy-ota, z2m или локальные .ota/.bin), правильно настроить секцию zigpy_config.ota и подготовить сеть и устройство (awake/питание). Ниже — практическая инструкция.
Как работает OTA в ZHA и какие ограничения
ZHA использует Zigbee OTAU: для каждого устройства проверяется наличие образа у подключённых провайдеров; если образ найден — в HA появится стандартная сущность Update и кнопку установки. Основные ограничения:
- Образ должен соответствовать vendor id / image type устройства — несовпадение может «окирпичить» девайс.
- Батарейные (sleepy) устройства должны быть пробуждены во время начала сессии.
- Процесс чувствителен к качеству сети: слабый приём или потеря маршрутизатора приводят к зависаниям.
Не применяйте образы, если не уверены в соответствии vendor id и image type. Всегда делайте бэкап zigbee.db.
Настройка провайдеров OTA и конфигурация ZHA
Варианты источников OTA: встроенные провайдеры (производители), централизованный репозиторий zigpy-ota, репозиторий z2m (Zigbee2MQTT) и локальные файлы. Минимальная конфигурация в configuration.yaml для включения провайдеров:
zha:
zigpy_config:
ota:
# включить отдельные провайдеры
ikea_provider: true
sonoff_provider: true
# добавить локальную папку с .ota/.bin (advanced)
extra_providers:
- type: advanced
path: /config/zigbee_ota
warning: >-
I understand I can *destroy* my devices by enabling OTA updates
from files.
Шаги:
- Создайте /config/zigbee_ota и поместите туда проверенные .ota/.bin (если используете локально).
- Перезапустите Home Assistant после правок.
- Проверьте в логах ZHA/zigpy, что провайдеры успешно инициализировались.
Если образа нет в одном репозитории — попробуйте подключить z2m или локально добавить проверенный файл. Начинайте с обновления рядом с координатором.
Пошаговый процесс запуска OTA и чек‑лист
Пошагово — от подготовки до контроля:
- Бэкап Home Assistant и zigbee.db.
- Убедитесь в актуальной версии HA и интеграции ZHA.
- Проверьте источник образа и сопоставьте vendor id/model/image type.
- Обеспечьте питание/свежие батареи и хорошее покрытие (маршрутизаторы рядом).
- Если устройство sleepy — подготовьте способ пробуждения (кнопка).
- В интерфейсе HA: устройство → вкладка «Обновления» → нажмите Install/Update.
- Наблюдайте логи ZHA; не прерывайте процесс. После успешного обновления перезапустите устройство/проверьте функциональность.
Чек‑лист перед запуском:
- [ ] Бэкап zigbee.db
- [ ] Свежие батареи/питание
- [ ] Маршрутизаторы в зоне обновления
- [ ] Устройство пробуждено (если батарейное)
- [ ] Провайдер с нужным образом активен
Частые ошибки
- Update не начинается — устройство не пробуждено или батарея разряжена.
- Обновление зависает/падает на X% — слабое покрытие, повторите рядом с координатором, обновляйте по одному устройству.
- Неправильный образ — потеря функциональности или кирпич; всегда сверяйте идентификаторы.
- Несогласованные провайдеры — дублирование образов может путать механизм выбора; временно отключите лишние провайдеры.
Обновления с локальных файлов особенно рискованы: одно неверное совпадение image type может привести к необратимым последствиям.
FAQ
- Нужно ли обновлять все устройства? Только если производитель выкатил фикс/функцию, которую вы действительно хотите; обновление несёт риск.
- Сколько времени занимает OTA? Обычно 10–30 минут на устройство, в зависимости от качества связи.
- Можно ли автоматизировать обновления? Да — через автоматизации HA, но лучше проводить вручную и по одному устройству.
- Как понять vendor id и image type? Смотрите диагностику устройства в ZHA: там отображаются идентификаторы, которые нужно сопоставлять с метаданными образа.
Заключение: правильная подготовка (бэкап, питание, покрытие), внимательный выбор образа и обновление по одному устройству — главные принципы безопасной OTA‑прошивки через ZHA. Если хотите — пришлите ваш zha: блок конфигурации или параметры устройства (manufacturer, model, ieee) — подготовлю конкретную проверку совместимости.