ZigBee OTA [bramka ZigBee]

Moderator: vajera

User avatar
vajera
Posts: 7290
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 289 times
Been thanked: 161 times

Post

Temat, który pojawia się prawie od początku istnienia bramki i ostatnia pozycja na liście Zbyszka 😉

Wziąłem ten temat na tapet na początku zeszłego tygodnia i chciałbym się z Wami podzielić moimi dotychczasowymi doświadczeniami w tym temacie.

Miało być prosto, łatwo i przyjemnie - tym bardziej, że obsługa OTA została przecież dodana do biblioteki ZigBee w Arduino Core...

1689584984691.jpeg

Owszem, obsługa OTA została dodana do biblioteki ZigBee w
Arduino Core, ale tylko w zakresie klienta OTA, a bramka ma pełnić funkcję serwera OTA.
Zakasałem więc rękawy i wziąłem się do pracy wykorzystując przykład z Espressif IDE (ota_server). Wkrótce udało mi się zaimplementować wszystkie niezbędne funkcje i mogłem przystąpić do testów.

Na obiekt testowy wybrałem głowicę Sonoff TRVZB z oprogramowaniem 1.3.0 oraz plik z nowym firmware w wersji 1.4.1 (celowo nie zacząłem od najnowszej wersji 1.4.4, żeby zostawić sobie przestrzeń na kolejną próbę).

Plik 1.4.1 ma około 320 kB, ale Sonoff pobiera dane w paczkach po 63 bajty, więc wysyłanie całego pliku OTA zajmuje około 32 minut, co oczywiście znacząco utrudnia testowanie tej funkcjonalności.

Pierwsza próba - wysłałem plik zgodnie z przykładem z biblioteki ZigBee, czyli bez nagłówka pliku (pierwsze 56 bajtów) - error INVALID IMAGE.
Druga próba - wysłałem cały plik - error INVALID IMAGE.
Trzecia próba - wysłałem tylko cześć pliku, tzw. sub-element 0x0000 - error INVALID IMAGE.

Oczywiście każdą z tych prób powtarzałem przynajmniej kilka razy, wprowadzając po drodze liczne modyfikacje i dodatkowe testy - biorąc pod uwagę czas pojedynczego testu, zajęło mi to łącznie kilka dni.
Niestety efekt za każdym razem był taki sam...INVALID IMAGE...Po 7 dniach walki z tym tematem pierwszy raz w historii bramki byłem gotowy poddać się, bo nie miałem pomysłu, co mógłbym jeszcze zrobić.

Wczoraj postanowiłem zrobić jeszcze jeden test - zacząłem analizować pakiety danych, które przysyła Sonoff (next image block request) i znalazłem błąd w bibliotece ZigBee Espressif - w skrócie polega on na tym, że Sonoff wysyła komunikat "wyślij mi 63 bajty od pozycji 0" a biblioteka ZigBee wysyła mu 7 bajtów, prawdopodobnie dlatego, że obcina ten nagłówek (56 bajtów + 7 bajtów = 63 bajty), natomiast Sonoff potrzebuje cały plik (łącznie z nagłówkiem).

Dla zainteresowanych wrzucam odnośnik do zgłoszenia błędu, które zrobiłem wczoraj do Espressif:
https://github.com/espressif/arduino-esp32/issues/12469.

Podsumowując - mamy zasadniczy błąd w bibliotece ESP ZigBee, uniemożliwiający wgranie całego pliku OTA do jakiegokolwiek komercyjnego urządzenia ZigBee.

W tej sytuacji pozostało mi już tylko poddać się i odpuścić temat - przynajmniej do momentu, aż Espressif poprawi kod.
You do not have the required permissions to view the files attached to this post.
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

@vajera nie wiem czy to będzie pocieszenie. Ale nie pierwszy raz wykazujesz upór godny podziwu. No i pewnie jakaś ulga związana z wnioskami że to nie kwestia "czegoś kurna nie zrobiłem co trzeba". Nie ma tego złego, jak to się mówi. Jak Ci to nie dawało spokoju i siedziałeś nad tym kilka dni i walczyłeś to teraz odpuść i odpoczywaj.
User avatar
vajera
Posts: 7290
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 289 times
Been thanked: 161 times

Post

zzrr wrote: Mon Mar 23, 2026 12:30 pm @vajera nie wiem czy to będzie pocieszenie. Ale nie pierwszy raz wykazujesz upór godny podziwu. No i pewnie jakaś ulga związana z wnioskami że to nie kwestia "czegoś kurna nie zrobiłem co trzeba". Nie ma tego złego, jak to się mówi. Jak Ci to nie dawało spokoju i siedziałeś nad tym kilka dni i walczyłeś to teraz odpuść i odpoczywaj.
To ostatnie zdanie, to był żart oczywiście - nie dało mi to spokoju, więc drążyłem dalej.

Wykorzystując funkcję esp_zb_raw_command_handler_register, przejąłem obsługę rozkazu OTA Image Block Request od biblioteki ESP ZigBee i napisałem własną odpowiedź na ten rozkaz. Wymagało to zbudowania pełnej ramki ZigBee od zera i wysłania jej rozkazem esp_zb_aps_data_request - szczerze powiedziawszy nie sądziłem, że to wystarczy, ale...:

Zrzut ekranu 2026-03-20 125229.png
Zrzut ekranu 2026-03-23 104817.png
You do not have the required permissions to view the files attached to this post.
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

vajera wrote: Mon Mar 23, 2026 12:38 pm ....
To ostatnie zdanie, to był żart oczywiście - nie dało mi to spokoju, więc drążyłem dalej.
...
:lol: Dobry jesteś. Ale rozumiem i znam ten stan.
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

zzrr wrote: Mon Mar 23, 2026 12:30 pm walczyłeś to teraz odpuść i odpoczywaj.
Daj, ać ja pobruszę, a ty poczywaj ;)
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
vajera
Posts: 7290
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 289 times
Been thanked: 161 times

Post

klew wrote: Mon Mar 23, 2026 1:38 pm
zzrr wrote: Mon Mar 23, 2026 12:30 pm walczyłeś to teraz odpuść i odpoczywaj.
Daj, ać ja pobruszę, a ty poczywaj ;)
:lol:

Właśnie naczelny koordynator ZigBee w Espressif Jan Prochazka (aka P-R-O-C-H-Y) poprosił mnie o PR mojej poprawki - odpisałem, że chętnie bym to zrobił, ale kod tej biblioteki jest zamknięty, więc mogę się jedynie podzielić moim rozwiązaniem ;)

https://github.com/espressif/arduino-esp32/issues/12469
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

klew wrote: Mon Mar 23, 2026 1:38 pm
zzrr wrote: Mon Mar 23, 2026 12:30 pm walczyłeś to teraz odpuść i odpoczywaj.
Daj, ać ja pobruszę, a ty poczywaj ;)
Sęk w tym że trzeba by mieć chociaż część wiedzy jaką posiadasz Ty czy @vajera w temacie żeby pobruszyć. Nie da rady ;)
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

zzrr wrote: Mon Mar 23, 2026 2:11 pm
Sęk w tym że trzeba by mieć chociaż część wiedzy jaką posiadasz Ty czy @vajera w temacie żeby pobruszyć. Nie da rady ;)
Ja pobruszyłem poprzez like'owanie issue na github :)
Najlepsze suple dla Twojego domu :mrgreen:
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

klew wrote: Mon Mar 23, 2026 2:21 pm
zzrr wrote: Mon Mar 23, 2026 2:11 pm
Sęk w tym że trzeba by mieć chociaż część wiedzy jaką posiadasz Ty czy @vajera w temacie żeby pobruszyć. Nie da rady ;)
Ja pobruszyłem poprzez like'owanie issue na github :)
:lol: No właśnie, a moje zgłoszenie wciąż czeka :) ;)
User avatar
vajera
Posts: 7290
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 289 times
Been thanked: 161 times

Post

zzrr wrote: Mon Mar 23, 2026 2:24 pm
klew wrote: Mon Mar 23, 2026 2:21 pm
zzrr wrote: Mon Mar 23, 2026 2:11 pm
Sęk w tym że trzeba by mieć chociaż część wiedzy jaką posiadasz Ty czy @vajera w temacie żeby pobruszyć. Nie da rady ;)
Ja pobruszyłem poprzez like'owanie issue na github :)
:lol: No właśnie, a moje zgłoszenie wciąż czeka :) ;)
To do mnie czy do Krzysztofa? 😉
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277

Return to “Bramka ZigBee”