Powiadomienia
Wyczyść wszystko

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

kadasz
(@kadasz)
Stażysta

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.

Cytuj
Autor tematu Dodane : 21/03/2018 5:57 pm
adrian
(@adrian)
Prezes Zasłużony dla Forum, Patron Strony

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ł 😉

OdpowiedzCytuj
Dodane : 21/03/2018 6:44 pm
kadasz polubień
kadasz
(@kadasz)
Stażysta

@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?

OdpowiedzCytuj
Autor tematu Dodane : 21/03/2018 9:07 pm
Marcin Lewandowski
(@l3m4r)
Brygadzista Donator 2K21 Donator 2018

babcia, brat ?

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

OdpowiedzCytuj
Dodane : 22/03/2018 9:08 pm
adrian
(@adrian)
Prezes Zasłużony dla Forum, Patron Strony

@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.

OdpowiedzCytuj
Dodane : 22/03/2018 9:12 pm
kadasz
(@kadasz)
Stażysta
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 ...

OdpowiedzCytuj
Autor tematu Dodane : 22/03/2018 9:27 pm
kadasz
(@kadasz)
Stażysta
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ść ... 🙂

OdpowiedzCytuj
Autor tematu Dodane : 24/03/2018 1:26 pm
adrian
(@adrian)
Prezes Zasłużony dla Forum, Patron Strony

mogę zrobić opcję włączania / wyłączania API przez MQTT i HTTP 

będzie okay?

 

OdpowiedzCytuj
Dodane : 24/03/2018 3:21 pm
kadasz
(@kadasz)
Stażysta

super by było, gdyby była taka możliwość na jakąś ewentualność 🙂

@adrian pisząc "włączania / wyłączania API" co masz dokładnie na myśli?

OdpowiedzCytuj
Autor tematu Dodane : 26/03/2018 1:28 pm
adrian
(@adrian)
Prezes Zasłużony dla Forum, Patron Strony

że możesz wysłać komendę MQTT lub HTTP włącz / wyłacz MQTT API 

czyli np możesz sobie zrobić regułę w Twoim system do automatyki, jak wyłączasz serwer wysyła komendę wyłącz MQTT API, a jak włączsz serwer wysyła włącza MQTT API

 

OdpowiedzCytuj
Dodane : 26/03/2018 2:01 pm
kadasz polubień
kadasz
(@kadasz)
Stażysta

okej, o to chodzi ... żeby podczas aktualizacji i innych prac administracyjnych nie blokować przekaźników

OdpowiedzCytuj
Autor tematu Dodane : 26/03/2018 2:12 pm
Marcin Lewandowski
(@l3m4r)
Brygadzista Donator 2K21 Donator 2018

https://github.com/arendst/Sonoff-Tasmota/issues/1169

Zgodnie z powyższym problem w bibliotekach arduino, inne firmware też maja z tym kłopot. No niestety, skoro zachciało się automatyki, to nie wystarczy mieć w domu prąd, musi być jeszcze stabilna sieć WiFi i (opcjonalnie) stabilny server MQTT :-). Nie bez powodu alternatywne FW Sonoffów miewają primary i backup Wifi. Dalsze konsekwencje to stabilny system automatyki, przykładowo mając Raspberry Pi nie można oszczędzać na zasilaczu i karcie pamięci (złe doswiadczenia z Kingston 16GB - polecam Sandisk). Sami sobie skomplikowaliśmy życie, żeby sobie je ułatwić :-).

Firmware ESPEasy ma do pewnego stopnia automatykę opierającą się na bezpośredniej komunikacji Sonofów ze sobą, od biedy można załączanie świateł zrobić bez HA, OpenHAB czy Domoticz, ale wg mnie nie warto.

OdpowiedzCytuj
Dodane : 27/03/2018 11:16 am
adrian
(@adrian)
Prezes Zasłużony dla Forum, Patron Strony

@krl w wersji T0 dodałem możliwość włączania / wyłaczania MQTT, HTTP i Domoticz bez wchodzenia w panel konfiguracyjny

format z HTTP:

format z MQTT

  • tematy:
    • /temat-zdefiniowany-w-konfiguracji-mqtt-brokera/configuration/api/http/cmd
    • /temat-zdefiniowany-w-konfiguracji-mqtt-brokera/configuration/api/mqtt/cmd 
    • /temat-zdefiniowany-w-konfiguracji-mqtt-brokera/configuration/api/domoticz/cmd 
  • wiadomość: on lub off
  • oczywiście on nie działa dla mqtt

jak znajde trochę czasu to przeniosę kod do pozostałych wersji

OdpowiedzCytuj
Dodane : 04/04/2018 11:51 pm
kadasz polubień
kadasz
(@kadasz)
Stażysta

@adrian dzięki, wdrażam i testuje funkcjonalność 🙂

OdpowiedzCytuj
Autor tematu Dodane : 07/04/2018 12:02 pm
adrian polubień
Udostępnij: