Powiadomienia
Wyczyść wszystko

[Rozwiązany] Nie reaguje przycisk przełącznika w sytuacji braku połączenie z HA i MQTT

14 Wpisów
3 Użytkownicy
4 Reactions
3,338 Wyświetleń
kadasz
Wpisów: 79
Autor tematu
(@kadasz)
Kontrybutor
Dołączył: 7 lat temu

Jako że jestem tutaj nowicjuszem oraz jest to mój pierwszy post chciałbym się przywitać, zatem cześć i czołem.

 

Ok, wracając do tematu... od kilku dni poznaję i wgłębiam się w tematykę IoT. W wyniku czego posiadam obecnie taki setup: 2 Sonoff'y Basic z wgranym AFE Firmware T0, włączonym MQTT i HTTP API, skonfigurowane w Home Assistant po mqtt i działają jako włącznik do lampek. Dzisiaj miałem dziwną sytuację, w której nie reagował przycisk przełącznika przy braku połączenia do HA i MQTT. Usługi HA oraz mosquitto działają na tym samym serwerze, który dzisiaj na jakiś czas wyłączyłem. W efekcie tego sonoff (mowa tylko o jednym działającym w tym czasie) wszedł w dziwny stan - wciskając wbudowany przycisk (kilka razy) nie reagował, nie wyłączył lampki. Dioda migała na zielono, trochę wolniej, a jeżeli wtedy, gdy jest w trybie konfiguracji. Wchodząc z poziomu przeglądarki na ipek sonoff'a, czekałem kilkanaście, a nawet kilkadziesiąt sekund zanim strona się wczytała - AFE w trybie operacyjnym. Przycisk nie działał do czasu, kiedy przez HTTP API zmieniłem stan przełącznika komendą toggle. Dzięki za odp.

13 Odpowiedzi
1 Reply
adrian
Admin Zasłużony dla Forum, Patron Strony
(@adrian)
Dołączył: 11 lat temu

Szefu
Wpisów: 4040

witaj @krl 🙂

tak, jest mi to znany problem.

i na razie nie mam na niego rozwiązania i nie wiem jak szczerze go rozwiązać.

Jeśli urządzenie utraci połączenie do MQTT Brokera, to musi przejść ponownie proces łączenia się. 

Urządzenie niestety nie pracuje wielowątkowo - robi jedną rzecz w danym momencie. W przypadku łączenia się do brokera - przez jakąś chwile czeka na odpowiedź od niego i wtedy przymiera i nie reaguje na np. przycisk.

Zdecydowałem się, zrobić tak, żeby nie czekać w nieskończoność, że MQTT Broker w końcu wstanie, a co za tym idzie nie blokować całkowicie urządzenia na czas braku połączenia z MQTT Brokerem, żę 

  • można ustawić ilość prób łączenia się po których urządzenie przechodzi do trybu działania bez MQTT brokera, a
  • po X czasie znowu próbuje się połączyć do MQTT Brokera 
  • w tym czasie X urządzenie powinno działać bez problemu - sterowanie z przycisku i HTTP

Te mruganie co widzisz od czasu do czasu to kolejna próba łączenia się. Jeśli nie zmieniałeś parametrów domyślnych

  • to mruga 10 razy, później
  • przestaje i przycisk powinien działać,
  • ponownie zacznie mrugać po 60sek. po których próbuje się 10x łaczyć
  • i tak cały czas, aż nie uzyska połączenia do MQTT Brokera

To co możesz zrobić to zmienić sobie ustawienia w łączeniach się, ale uwaga: jeśli MQTT Brokera, albo sieć WiFi jest wolna lub urządzenie jest daleko to zmniejszanie ilości prób może spowodować, że będzie miał trudności z łączeniem się na kilku próbach. Sugeruje jedynie zwiększać czas między kolejnymi próbami łączeń się np, co 5min lub więcej

No ale najlepiej, żeby MQTT broker chodził 😉

Odpowiedz
kadasz
Wpisów: 79
Autor tematu
(@kadasz)
Kontrybutor
Dołączył: 7 lat temu

@adrian, thx za dogłębne i rzeczowne wyjaśnienie problemu, póki co zwiększę sobie ten czas między kolejnymi próbami łączenia, lecz dla mnie nie jest to rozwiązanie. Wiem, że najlepiej, gdy usługa mqtt działała bez przerwy, jednak obecnie mam w mieszkaniu tak, że mój serwer nie działa non stop. Śpi kiedy ja śpię, bo po co mam słuchać "jego chrapania" tzn. działających wiatraków. Wiem, wiem rozwiązaniem może być np. malinka ...

Mimo wszystko warto rozważyć jakąś alternatywę, gdyż najważniejszym jest chyba, aby w sytuacji wszelakich problemów połączeniowych nadal można było manualnie sterować tym urządzeniem bez kolejkowo i by nie czekać ilenaście sekund, aż funkcja łączenia zwolni (i to tak tylko na X czasu) nam urządzenie. Nie o to chodzi że nie chce mi się czekać, lecz przypadki w których celowo brak jest połączenia z wifi lub mqtt, bądź awaria jest kontrolowana.  Mam na myśli wszystkie okoliczności związane z maintenance, np. aktualizacja routera/mqtt/OS czy w ogóle wymiana urządzenia/sprzętu, które wiąże się już dłuższą przerwą w nie działaniu. 

Teraz powiedzmy, że w domu mamy n takich przełączników w konfiguracji z lampą sufitową oraz przełącznikiem ściennym. Powstaje jedna z wyżej opisywanych sytuacji i mamy chaos, ponieważ babcia krzyczy, że wciska włącznik w łazience, a światła nie ma, brat również marudzi, bo w kotłowni również.

Odnośnie alternatywy może opcja kontrolowanego wyłączenia tej funkcji, która powoduje to ponowne łączenia się w stanie utraty komunikacji z wifi czy mqtt? @adrian, co o tym myślisz?

Odpowiedz
1 Reply
adrian
Admin Zasłużony dla Forum, Patron Strony
(@adrian)
Dołączył: 11 lat temu

Szefu
Wpisów: 4040

@krl - to może nie korzystaj z MQTT tylko steruj przez HTTP - nie będziesz miał tego problemu bo nie będzie łączyć się z MQTT Brokerem.

Odpowiedz
Wpisów: 183
Donator 2K21 Donator 2K18
(@l3m4r)
Weteran
Dołączył: 7 lat temu

babcia, brat ?

ja już od żony usłyszałem, że "jak mi się tylko któraś lampa nie zapali ..." 🙂

Odpowiedz
kadasz
Wpisów: 79
Autor tematu
(@kadasz)
Kontrybutor
Dołączył: 7 lat temu
Dodane przez: Marcin L.

babcia, brat ?

ja już od żony usłyszałem, że "jak mi się tylko któraś lampa nie zapali ..." 🙂

Taak, większe wdrożenie zamierzam zrobić w domu rodzinnym, w którym mieszka babcia i często przebywa u niej brat . Heheh od mojej również dostałem podobną reprymendę, kiedy tylko sonoffa zintegrowałem z oświetlenia żony toaletki, no coż nie ma lekko ...

Odpowiedz
kadasz
Wpisów: 79
Autor tematu
(@kadasz)
Kontrybutor
Dołączył: 7 lat temu
Dodane przez: adrian

@krl - to może nie korzystaj z MQTT tylko steruj przez HTTP - nie będziesz miał tego problemu bo nie będzie łączyć się z MQTT Brokerem.

@adrian nie pomyślałem o tym, a jest to jakieś rozwiązanie, jednak w niektórych okolicznościach protokół HTTP może być trochę za wolny, w każdym razie zastanów się nad moją sugestią, gdyż daje ona pewną elastyczność ... 🙂

Odpowiedz
Strona 1 / 2
Udostępnij: