[Problem-rozwiązany] Samoistny restart bramki [bramka ZigBee]

Moderator: vajera

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

Post

Pora na wstępne podsumowanie tego maratonu 😉

Wczoraj zdemontowałem moją bramkę produkcyjną STRYCH, wgrałem do niej wersję z logami i rozpocząłem intensywne testy. Zacytuję tutaj @Krzysztofa - logi trzeba czytać - i to powinno być credo każdego programisty systemów embedded (i nie tylko 😉).

Tak naprawdę mamy tutaj do czynienia ze zbiegiem kilku czynników/błędów, więc po kolei:
  1. Najbardziej oczywisty błąd wprowadziłem w wersji 1.5.42 w kodzie dedykowanym obsłudze termometru SNZB-02DR2 - w metodzie iterateAlways() dodałem wysłanie wartości T/H w zadanych odcinkach czasu, ale...zapomniałem dodać linię resetującą odmierzany czas po upływie danego interwału, co powodowało, że po 5 minutach moja bramka zaczynała zalewać ten termometr morzem komunikatów, blokując m.in. wysyłanie default response w odpowiedzi na komunikat o temperaturze z termostatu ZWT198, co z kolei powodowało, że ten termostat wysyłał komunikaty w tempie kilku/sekundę.
    Powyższy scenariusz wymuszał na bramce takie tempo pracy, że minimalne opóźnienie (Telnet, GUI) mogło doprowadzić do restartu.
  2. Kolejny czynnik to ...same urządzenia ZigBee. Wczoraj wróciłem do logów @zzrr, ale spojrzałem na nie pod innym kątem, a mianowicie przyjrzałem się znacznikom czasowym. Wiadomości z tej czujki PIR lecą z prędkością karabinu maszynowego, co może dawać objawy podobne do pkt. 1.
  3. Kolejny drobiazg, to zmiana w kodzie obsługi komunikatów TUYA_SYNC_TIME, którą wprowadziłem walcząc z termometrem kolegi @Jaroni, a które dla odmiany nie do końca współgrały np. z termostatami ściennymi Tuya.
Reasumując - oczywiste błędy naprawiłem, przy okazji wprowadziłem sporo zmian w obszarach kodu krytycznego czasowo, ale to jeszcze nie koniec. Tak naprawdę muszę mocno przemyśleć sposób komunikacji stosu ZigBee z głównym kodem bramki - może wykorzystam mechanizm kolejek.

@zzrr Prośba do Ciebie o logi z bramki z tą czujką PIR w wersji 1 5.64.

Od tego momentu wznawiam pracę nad dalszym rozwojem bramki, równolegle pracując nad kwestią usprawnienia krytycznych elementów kodu.
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
bokk
Posts: 730
Joined: Fri Mar 01, 2019 4:26 am
Has thanked: 7 times
Been thanked: 25 times

Post

U mnie niestety po wgraniu 1.5.64 na pozostałe bramki po krótkiej pracy 1 się zrestartowała a 2 po restarcie już nie wstała
You do not have the required permissions to view the files attached to this post.
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

vajera wrote: Thu Jun 04, 2026 8:24 am .....
@zzrr Prośba do Ciebie o logi z bramki z tą czujką PIR w wersji 1 5.64.
....
Oczywiście. I coś jako ciekawostka. Do tej pory wszystkie testy jak robiłem na tej bramce robiłem logi równolegle gdzie ich wielkość dochodziła do kilkunastu Mb. Wczoraj tak optymistycznie zabrzmiało wprowadzenie tej 1.5.64 że sobie logi odpuściłem.
Niestety w tej chwili popatrzyłem a czas pracy bramki wskazuje 18minut. Czyli był restart lub restarty bramki.
Już ją przełączam na laptop i zbieram logi. Czy interesują Cie ogólnie te logi z pracy przez jakiś czas czy czekamy na ewentualny restart?
I jeszcze coś...
Bramka z wersją 1.5.44 w identycznej konfiguracji jak ta co ją testuję w domu. Tak jak ją zostawiłem
tydzień.jpg
You do not have the required permissions to view the files attached to this post.
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

@vajera restart po 27 minutach. Wg timestamp 13:07:37.770 :?
1.5.64_13_07_37_770_restart.rar
You do not have the required permissions to view the files attached to this post.
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

@vajera posiadasz plik Z2S_Gateway.ino.elf z kompilacji 1.5.64. Nie ukrywam że jestem bardzo ciekawy na jakie funkcje by teraz wskazywały adresy z loga. Czy takie same jak te wcześniej czy coś innego. Hmm
User avatar
vajera
Posts: 7293
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 291 times
Been thanked: 161 times

Post

zzrr wrote: Thu Jun 04, 2026 11:58 am @vajera posiadasz plik Z2S_Gateway.ino.elf z kompilacji 1.5.64. Nie ukrywam że jestem bardzo ciekawy na jakie funkcje by teraz wskazywały adresy z loga. Czy takie same jak te wcześniej czy coś innego. Hmm
Te adresy prowadzą do funkcji odczytującej stan pamięci. Tak się składa, że ta funkcja oprócz odczytu sprawdza też integralność sterty i wykrywszy jej naruszenie generuje panic error.
Mam już gotową teorię: w którymś momencie dochodzi do naruszenia integralności sterty (na 99% gdzieś w obsłudze GUI) i wtedy przy najbliższej aktualizacji stanu wolnej pamięci mamy crash. Oczywiście mogę wyłączyć ten odczyt pamięci, ale zbicie termometru nie wyleczy gorączki 😉
Na ten moment optymalnym rozwiązaniem jest wyłączenie GUI w przypadku bramek produkcyjnych i używanie go tylko doraźnie. Oczywiście tematu nie odpuszczam, przy okazji udało mi się wykryć kilka błędów i je naprawić.
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: Thu Jun 04, 2026 12:22 pm
zzrr wrote: Thu Jun 04, 2026 11:58 am @vajera posiadasz plik Z2S_Gateway.ino.elf z kompilacji 1.5.64. Nie ukrywam że jestem bardzo ciekawy na jakie funkcje by teraz wskazywały adresy z loga. Czy takie same jak te wcześniej czy coś innego. Hmm
Te adresy prowadzą do funkcji odczytującej stan pamięci. Tak się składa, że ta funkcja oprócz odczytu sprawdza też integralność sterty i wykrywszy jej naruszenie generuje panic error.
Mam już gotową teorię: w którymś momencie dochodzi do naruszenia integralności sterty (na 99% gdzieś w obsłudze GUI) i wtedy przy najbliższej aktualizacji stanu wolnej pamięci mamy crash. Oczywiście mogę wyłączyć ten odczyt pamięci, ale zbicie termometru nie wyleczy gorączki 😉
Na ten moment optymalnym rozwiązaniem jest wyłączenie GUI w przypadku bramek produkcyjnych i używanie go tylko doraźnie. Oczywiście tematu nie odpuszczam, przy okazji udało mi się wykryć kilka błędów i je naprawić.
W wersji 1.5.46 zdaje się że coś zmieniałeś w temacie pobierania parametrów a dokładniej sposobu wyciągania danych z urządzeń i przekazywania ich do GUI. Mówię to tylko na podstawie przeglądania diff z tych wersji, ale to bardziej z ciekawości bo wiedza w temacie Zigbee jest u mnie na bardzo niskim poziomie. Tylko że jak tak patrzę jak idzie bramka z wersją 1.5.44 a problemy zostały zgłoszone na 1.5.46 to nie wiem czy to tam nie powstał jakiś główny powód kłopotów. Tak sobie myślę sam trochę dla siebie bo nie sadzę żebym mógł powiedzieć coś czego Ty nie wiesz. :) ;)
User avatar
vajera
Posts: 7293
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 291 times
Been thanked: 161 times

Post

zzrr wrote: Thu Jun 04, 2026 12:35 pm
vajera wrote: Thu Jun 04, 2026 12:22 pm
zzrr wrote: Thu Jun 04, 2026 11:58 am @vajera posiadasz plik Z2S_Gateway.ino.elf z kompilacji 1.5.64. Nie ukrywam że jestem bardzo ciekawy na jakie funkcje by teraz wskazywały adresy z loga. Czy takie same jak te wcześniej czy coś innego. Hmm
Te adresy prowadzą do funkcji odczytującej stan pamięci. Tak się składa, że ta funkcja oprócz odczytu sprawdza też integralność sterty i wykrywszy jej naruszenie generuje panic error.
Mam już gotową teorię: w którymś momencie dochodzi do naruszenia integralności sterty (na 99% gdzieś w obsłudze GUI) i wtedy przy najbliższej aktualizacji stanu wolnej pamięci mamy crash. Oczywiście mogę wyłączyć ten odczyt pamięci, ale zbicie termometru nie wyleczy gorączki 😉
Na ten moment optymalnym rozwiązaniem jest wyłączenie GUI w przypadku bramek produkcyjnych i używanie go tylko doraźnie. Oczywiście tematu nie odpuszczam, przy okazji udało mi się wykryć kilka błędów i je naprawić.
W wersji 1.5.46 zdaje się że coś zmieniałeś w temacie pobierania parametrów a dokładniej sposobu wyciągania danych z urządzeń i przekazywania ich do GUI. Mówię to tylko na podstawie przeglądania diff z tych wersji, ale to bardziej z ciekawości bo wiedza w temacie Zigbee jest u mnie na bardzo niskim poziomie. Tylko że jak tak patrzę jak idzie bramka z wersją 1.5.44 a problemy zostały zgłoszone na 1.5.46 to nie wiem czy to tam nie powstał jakiś główny powód kłopotów. Tak sobie myślę sam trochę dla siebie bo nie sadzę żebym mógł powiedzieć coś czego Ty nie wiesz. :) ;)
Znowu prośba o tę Twoją "zaczarowaną" bramkę - możesz wgrać w nią 1.5.66-04/06/26 i sprawdzić, czy się zresetuje?
Jeżeli tak się stanie, to jeszcze jedna prośba - wyczyść tę bramkę testową do zera (erase flash), wgraj 1.5.66-04/06/26 w opcji merged i sparuj z nią tylko tę czujkę PIR?
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: Thu Jun 04, 2026 2:57 pm ...
Znowu prośba o tę Twoją "zaczarowaną" bramkę - możesz wgrać w nią 1.5.66-04/06/26 i sprawdzić, czy się zresetuje?
Jeżeli tak się stanie, to jeszcze jedna prośba - wyczyść tę bramkę testową do zera (erase flash), wgraj 1.5.66-04/06/26 w opcji merged i sparuj z nią tylko tę czujkę PIR?
Ok. Oczywiście. Już się robi. 👍
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

@vajera wersja update restart po 2min. później w tym samym logu po 30 min.
1.5.66.rar
Instaluje od zera tylko z PIR.
You do not have the required permissions to view the files attached to this post.

Return to “Bramka ZigBee”