Aktualizacja oprogramowania urządzeń ZigBee

Z roku na rok coraz większą wagę zaczynamy przywiązywać do bezpieczeństwa naszych inteligentnych domów. Wypływ na to, poza coraz większą świadomością użytkowników, ma przede wszystkim rosnąca popularność takich rozwiązań, a co za tym idzie zainteresowanie tematem cyber-przestępców. Taki proces to nic nowego w świecie technologii. Wspomnieć można choćby jak wyglądały, a raczej jak nie wyglądały, zabezpieczenia protokołu SMTP, odpowiedzialnego za pocztę e-mail, w czasach gdy elektroniczna korespondencja nie skażona była jeszcze spamem i phishingiem.

Głowica termostatyczna ZigBee – Tuya TS0601

Jedną z metod dbania o bezpieczeństwo są regularne aktualizacje oprogramowania wewnętrznego urządzeń. Oczywiście to także droga do poprawy funkcjonalności i naprawy błędów. Opisywałem już taki proces w przypadku falownika Fronius. Trzeba mieć jednak świadomość, że tych urządzeń jest w naszych domach coraz więcej. Oczywiście zawsze należy szacować ryzyko, bo podatności w niektórych urządzeniach są zwykle mniej krytyczne niż w innych, natomiast nie ulega wątpliwości, że o możliwie regularne aktualizacje lepiej dbać.

Opisywałem ostatnio współpracę urządzeń ZigBee z Raspberry Pi, z użyciem tanich adapterów USB-ZigBee CC2531. Konsekwencją tego, że odrzucamy ekosystem producenta bramki, jest fakt, iż sami musimy zadbać o aktualizacje podłączonych urządzeń ZigBee. Proces wgrywania nowego oprogramowania jest jednak jak najbardziej możliwy. Prześledzimy go na przykładzie głowicy termostatycznej Tuya TS0601.

Zacznijmy od tego, jak przedstawiła się głowica podczas parowania, co było widoczne w logu Zigbee2MQTT:

Zigbee2MQTT:info 2020-11-10 17:24:13: Successfully interviewed '0x60a423fffeab2088', device has successfully been paired
Zigbee2MQTT:info 2020-11-10 17:24:13: Device '0x60a423fffeab2088' is supported, identified as: TuYa Radiator valve with thermostat (TS0601_thermostat)

Ponieważ zawór znajduje się w na grzejniku w kuchni, więc nadałem mu nazwę kuchnia-grzejnik. Aby to wykonać wystarczyło wysłać odpowiednią komendę przez MQTT:

mqtt_pub -t "zigbee2mqtt/bridge/config/rename" '{"old": "0x60a423fffeab2088", "new": "kuchnia-grzejnik"}'

Od tej pory możemy już prosić nasz serwer Zigbee2MQTT o sprawdzenie najnowszego oprogramowania dla obsługiwanego sprzętu:

mqtt_pub -t "zigbee2mqtt/bridge/ota_update/check" 'kuchnia-grzejnik'

W odpowiedzi w logach odnajdujemy informację, że oprogramowanie zostało znalezione i rozpoczyna się proces aktualizacji:

Zigbee2MQTT:info 2020-11-28 12:46:06: Updating 'kuchnia-grzejnik' to latest firmware
Zigbee2MQTT:info 2020-11-28 12:46:06: MQTT publish: topic 'zigbee2mqtt/bridge/log', payload '{"message":"Updating 'kuchnia-grzejnik' to latest firmware","meta":{"device":"kuchnia-grzejnik","status":"update_in_progress"},"type":"ota_update"}'

A następnie zaczynają się powoli pojawiać informacje o postępach procesu:

 Zigbee2MQTT:info 2020-11-28 12:46:19: Update of 'kuchnia-grzejnik' at 0.00%
 Zigbee2MQTT:info  2020-11-28 12:47:19: MQTT publish: topic 'zigbee2mqtt/bridge/log', payload '{"message":"Update of 'kuchnia-grzejnik' at 2.39%, +- 45 minutes remaining","meta":{"device":"kuchnia-grzejnik","progress":2.39,"status":"update_progress"},"type":"ota_update"}'

Oczywiście, nie należy oczekiwać, że aktualizacja zostanie wykonana szybko i raczej należy uzbroić się w cierpliwość. Jak wcześniej wspominałem, sieć Zigbee ani urządzenia w niej działające nie zostały zaprojektowane do szybkich transferów danych, ponieważ ważniejsze są inne cechy protokołu, w tym energooszczędność.

Warto też się przygotować na sytuację, że aktualizacja może się nie udać:

zigbee2mqtt/bridge/log {"message":"Update of 'kuchnia-grzejnik' failed (Timeout: device did not request any image blocks)","meta":{"device":"kuchnia-grzejnik","status":"update_failed"},"type":"ota_update"}

Jednak ostatecznie powinniśmy zobaczyć informację o pomyślnym zakończeniu procesu:

Zigbee2MQTT:info 2020-11-28 13:36:35: MQTT publish: topic 'zigbee2mqtt/bridge/log', payload '{"message":"kuchnia-grzejnik","meta":{"device":"kuchnia-grzejnik","from":null,"status":"update_succeeded","to":null},"type":"ota_update"}'

Aktualizacja nie jest więc szybka, ani nie daje gwarancji 100% niezawodności. Natomiast przede wszystkim jej wykonanie nie jest trudne z punktu widzenia użytkownika. Mamy tak naprawdę jedną komendę do wydania.

Jak często należy przeprowadzać aktualizacje? To już pozostawiam do indywidualnej oceny. Trzeba próbować znaleźć złoty środek między bezpieczeństwem, stabilnością i wygodą. Oczywiście można też pokusić się o automatyzację tego procesu, natomiast mam pewne wątpliwości, czy to na pewno zawsze jest właściwa droga, ale to także kwestia podejścia.

Ten wpis został opublikowany w kategorii Inteligentny Dom i oznaczony tagami , , , , , . Dodaj zakładkę do bezpośredniego odnośnika.

5 odpowiedzi na Aktualizacja oprogramowania urządzeń ZigBee

  1. namex pisze:

    Hej

    Fajnie, że się da . A u mnie jak zwykle coś nie tak.
    Chyba czas zrobić nową czystą instalację, bo zawsze pod górkę.

    -bash: mqtt_pub: nie znaleziono polecenia

    Możesz jakoś pomóc?

  2. jendrush pisze:

    Możesz napisać czy te głowice TS0601 są warte polecenia? Obecnie mam różne rozwiązania, ale z racji posiadania coraz większej ilości urządzeń Zigbee, chciałbym przejść też na głowice w tym standardzie.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *