Zigbee2mqtt: OTA Updates
Sofern der Hersteller der Zigbee-Geräte die Firmware offiziell zur Verfügung stellt, können die Geräte auch über Zigbe2mqtt aktualisiert werden. Eine Übersicht welche Geräte aktualisiert werden können, ist in der Zigbee2mqtt Documentation zu finden. Die IKEA TRÅDFRI-Produkte gehören beispielsweise dazu.
Prüfen auf Upates
Wurde das Zigbee-Gerät per Device-Discover automatisch in Home Assitant angelegt, so wurde mit dem Gerät zusammen ein Update-Sensor erzeugt. Dieser zeigt an, ob ein OTA-Update für ein Gerät vorliegt. Es muss also nichts zusätzliches in Home Assistant aktiviert werden.
Update per MQTT manuell anstoßen
Um den Update-Vorgang zu starten muss lediglich eine MQTT-Nachricht an das Topic zigbee2mqtt/bridge/ota_update/update
gesendet werden. Als Inhalt der Nachricht ist der Friendly-Name des Devices anzugeben.
Updateverlauf kontrollieren
Der Status des Updates kann in den Logdateienvon Zigbee2mqtt nachvollzogen werden:
info 2020-04-18 16:30:27: Updating 'tradfri_e14_02' to latest firmware
info 2020-04-18 16:30:27: MQTT publish: topic 'zigbee2mqtt/bridge/log', payload '{"type":"ota_update","message":"Updating 'tradfri_e14_02' to latest firmware","meta":{"status":"update_in_progress","device":"tradfri_e14_02"}}'
info 2020-04-18 16:30:36: Update of 'tradfri_e14_02' at 0%
info 2020-04-18 16:30:36: MQTT publish: topic 'zigbee2mqtt/bridge/log', payload '{"type":"ota_update","message":"Update of 'tradfri_e14_02' at 0%","meta":{"status":"update_progress","device":"tradfri_e14_02","progress":0}}'
info 2020-04-18 16:31:07: Update of 'tradfri_e14_02' at 2.64%, +- 24 minutes remaining
info 2020-04-18 16:31:07: MQTT publish: topic 'zigbee2mqtt/bridge/log', payload '{"type":"ota_update","message":"Update of 'tradfri_e14_02' at 2.64%, +- 24 minutes remaining","meta":{"status":"update_progress","device":"tradfri_e14_02","progress":2.64}}'
info 2020-04-18 18:31:32: Update of 'tradfri_e14_02' at 4.9%, +- 2349 minutes remaining
info 2020-04-18 18:31:32: MQTT publish: topic 'zigbee2mqtt/bridge/log', payload '{"type":"ota_update","message":"Update of 'tradfri_e14_02' at 4.9%, +- 23 minutes remaining","meta":{"status":"update_progress","device":"tradfri_e14_02","progress":4.9}}'
info 2020-04-18 18:32:02: Update of 'tradfri_e14_02' at 7.52%, +- 1495 minutes remaining
[...]
info 2020-04-18 18:48:38: MQTT publish: topic 'zigbee2mqtt/bridge/log', payload '{"type":"ota_update","message":"Update of 'tradfri_e14_02' at 94.68%, +- 2 minutes remaining","meta":{"status":"update_progress","device":"tradfri_e14_02","progress":94.68}}'
info 2020-04-18 18:49:08: Update of 'tradfri_e14_02' at 97.32%, +- 4 minutes remaining
info 2020-04-18 18:49:08: MQTT publish: topic 'zigbee2mqtt/bridge/log', payload '{"type":"ota_update","message":"Update of 'tradfri_e14_02' at 97.32%, +- 1 minutes remaining","meta":{"status":"update_progress","device":"tradfri_e14_02","progress":97.32}}'
info 2020-04-18 18:49:38: Update of 'tradfri_e14_02' at 99.96%, +- 0 minutes remaining
info 2020-04-18 18:49:38: MQTT publish: topic 'zigbee2mqtt/bridge/log', payload '{"type":"ota_update","message":"Update of 'tradfri_e14_02' at 99.96%, +- 0 minutes remaining","meta":{"status":"update_progress","device":"tradfri_e14_02","progress":99.96}}'
info 2020-04-18 18:49:53: MQTT publish: topic 'zigbee2mqtt/bridge/log', payload '{"type":"device_announced","message":"announce","meta":{"friendly_name":"tradfri_e14_02"}}'
info 2020-04-18 18:51:11: Update of 'tradfri_e14_02' at 100%
info 2020-04-18 18:51:11: MQTT publish: topic 'zigbee2mqtt/bridge/log', payload '{"type":"ota_update","message":"Update of 'tradfri_e14_02' at 100%","meta":{"status":"update_progress","device":"tradfri_e14_02","progress":100}}'
info 2020-04-18 18:51:11: Finished update of 'tradfri_e14_02', from '{"softwareBuildID":"1.2.217","dateCode":"20170331"}' to '{"softwareBuildID":"2.3.007","dateCode":"20190520"}'
info 2020-04-18 18:51:11: MQTT publish: topic 'zigbee2mqtt/tradfri_e14_02', payload '{"state":"OFF","update_available":false,"color_temp":319,"brightness":254}'
info 2020-04-18 18:51:11: MQTT publish: topic 'zigbee2mqtt/bridge/log', payload '{"type":"ota_update","message":"Finished update of 'tradfri_e14_02', from '{\"softwareBuildID\":\"1.2.217\",\"dateCode\":\"20170331\"}' to '{\"softwareBuildID\":\"2.3.007\",\"dateCode\":\"20190520\"}'","meta":{"status":"update_succeeded","device":"tradfri_e14_02","from":{"softwareBuildID":"1.2.217","dateCode":"20170331"},"to":{"softwareBuildID":"2.3.007","dateCode":"20190520"}}}'
Update von Home Assistant starten
Um Firmware-Updates auch von Home Assistant aus durchführen zu können, muss ein Eingabefeld und ein SCript in der Home Assistant Konfiguration angelegt werden:
input_text:
zigbee2mqtt_update:
name: Zigbee2mqtt Update
script:
zigbee2mqtt_update:
alias: Zigbee2mqtt Update
sequence:
service: mqtt.publish
data_template:
topic: zigbee2mqtt/bridge/ota_update/update
payload_template: "{{ states.input_text.zigbee2mqtt_update.state | string }}"
In Lovelace können die beiden Controls mit folgenden Befehlen auf einer Karte eingebunden werden:
- entity: input_text.zigbee2mqtt_update
- entity: script.zigbee2mqtt_update
Troubleshooting
Sollte das Firmwareupdate fehlschlagen, so sollte als erstes ein Blick in die Logs geworfen werden. Hier finden sich oft Anhaltspunkte warum ein Update fehlgeschlagen ist. Die folgende Tabelle fasst die Probleme und die Vorgehensweisen zusemmen, die bei mir zu einem Erfolg geführt haben:
Fehlerbeschreibung | Tipps zur Fehlervermeidung | |
Das Update dauert laut Log-File mehrere Stunden. | 1.a) | Bei einem Firmware-Update werden vergleichsweise große Datenmenge im Zigbee-Netzwerk übertragen. Daher kann ein Firmware-Update für ein Gerät durchaus 20 - 30 Minuten dauern. In Einzelfällen (z.B. beim Update von TRÅDFRI Remote Controllern) kann es aber durchaus auch mehr als 2 Stunden dauern, bis das Update durch ist. Bei einzelnen Updates wurde mit auch eine Zeit von über 1800 Minuten angezeigt. Diese haben sich bisher im laufe des Updates wieder relativiert. |
Das Update bricht ohne ersichtlichen Grund ab. | 2.a) | Wenn ein Update fehlgeschlagen ist, sollte das entsprechende Gerät kurz vom Strom getrennt werden und dann ein erneuter Versuch gestartet werden. Gefühlt klappt ein Update besser, wenn das Gerät ausgeschaltet ist. Datenverkehr zu dem Gerät das aktualisiert wird, sollte während des Upgrades vermieden werden. |
2.b) | Da beim Update viele Daten im Netzwerk-übertragen werden sollte sichergestellt werden, dass nicht mehrere Geräte gleichzeitig aktualisiert werden. | |
2.c) | Ggf. hilft es auch das Device für das Upgrade näher an den Zigbee-Coordinator zu bringen. | |
Das Update bricht wiederholt ab, nachdem eine MQTT Nachricht vom Typ 'device_announced' an das Topic topic 'zigbee2mqtt/bridge/log' gesendet wird. | 3.a) | Wenn der Update-Versuch regelmäßig abbricht nachdem eine MQTT-Nachricht mit dem Inhalt payload '{"type":"device_announced","message":"announce","meta":{"friendly_name":"<DEVICE_RECEIVING_UPDATE>"}}' so hat es bei mir folgendes Vorgehen geholfen:
|
Bei einem batteribetriebenen Geräte startet das Update nicht. | 4.a) | Battteriebene Geräte gehen normalerweise in einen Stromsparmodus, wenn sie nicht benutzt werden. Daher müssen diese Geräte in der Regel "geweckt" werden wenn ein Update durchgeführt werden soll. Bei meinen TRÅDFRI Remote Controllern hilft es, wenn direkt nach dem Starten des Upgrade-Prozesses der An/Aus-Schalter gedrückt wird. |
4.b) | Die Batterie des Gerätes sollte noch mindestens 70% Restenergie haben. |
Kommentare