Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Smogomierz przestaje wysyłać updaty #103

Open
artiwal opened this issue Jul 8, 2020 · 1 comment
Open

Smogomierz przestaje wysyłać updaty #103

artiwal opened this issue Jul 8, 2020 · 1 comment

Comments

@artiwal
Copy link

artiwal commented Jul 8, 2020

Dzień dobry,
Bardzo fajny projekt i dobrze opisany jednakże mam z nim problem.
Zbudowałem smogomierz na bazie ESP8266, pms7003 i bme280. Przez pierwsze 2 tyg wszystko było w porządku. Teraz od jakiegoś czasu zauważyłem iż urządzenie przestaje wysyłać aktualizacje stanów do wszystkich serwisów oraz przez MQTT. Gdy wejdę na nie bezpośrednio przez web pokazuje mi odczyty jednakże dopóki go nie zrestartuje nie odświeża Home Assistant (sprawdzałem i nic nie przychodzi przez mqtt) oraz api.eco czy airmonitor. Podpiąłem go też testowo pod thingspeak i widzę to samo zachowanie. Deepsleep wyłączony, zasięg wifi w porządku, urządzenie jest cały czas dostępne przez wifi. Zasilane z ładowaki do telefonu podpiętej do prądu. Dopiero odłączenie zasilania jednakże tylko na losowy czas (kilka do kilkunastu godzin).
Spróbowałem zrobić upgrade przez OTA do testowej wersji 2.8, zmieniać interwały updatów ale to nie rozwiązało problemu.

Dodatkowo zastanawiam się czy da się zwiększyć timeout na mqtt bo gdy działa to Mosquitto pluje mi w logach przy każdym updacie(wydaje się tylko kosmetycznym problemem):
1594192398: New client connected from 192.168.13.19 as ESP8266Client (p2, c1, k15, u'mqtt').
1594192422: Client ESP8266Client has exceeded timeout, disconnecting.

Fajnie by było także wprowadzić opcje zdalnego restartu na takie sytuacje. Jak nie to będę musiał podłączyć jakiś dodatkowy inteligentny przekaźnik.

Pozdrawiam i trzymajcie tak dalej!
Artur

@NorbertDudek
Copy link

NorbertDudek commented Feb 11, 2021

Dzień dobry

Miałem ten sam problem.

W kodzie nazwą klienta dla połączenia z serwerem MQTT jest: ESP8266Client. Do serwera MQTT nie mogą być połączeni dwaj klienci o tym samym ID.
Jeżeli masz w sieci inne urządzenia, stworzone na podstawie przykladów PubSubClient, jest duża szansa, że podłącza się ono do serwera MQTT z podanym wyżej identyfikatorem.
Serwer MQTT nie pozwoli przekazywać tematów drugiemu urządzeniu z zduplikowaną nazwą. Jednak PubSubClient podczas połączenia nie zgłasza błędu. Wygląda, że wszystko się udało.

W linii 451 pliku smogomierz.ino
if (mqttclient.connect("ESP8266Client", MQTT_USER, MQTT_PASSWORD)) {
zmień nazwę na device_name:
if (mqttclient.connect(device_name, MQTT_USER, MQTT_PASSWORD)) {

Powinno pomóc.
Dodałem w tej sprawie pr. Mam nadzieję, że się przyjmie.

Fajnie by było także wprowadzić opcje zdalnego restartu na takie sytuacje. Jak nie to będę musiał podłączyć jakiś dodatkowy inteligentny przekaźnik.

Reset jest zawsze robiony, gdy zapiszesz zmiany w ustawieniach. Wystarczy tam wejść i zrobić zapisz, bez żadnych zmian.

Dodatkowo zastanawiam się czy da się zwiększyć timeout na mqtt bo gdy działa to Mosquitto pluje mi w logach przy każdym updacie(wydaje się tylko kosmetycznym problemem):
1594192398: New client connected from 192.168.13.19 as ESP8266Client (p2, c1, k15, u'mqtt').
1594192422: Client ESP8266Client has exceeded timeout, disconnecting.

Drugi komunikat pojawia się, ponieważ wywołanie metody PubSubClient.loop() nie jest wywoływane i serwer uważa, że nastąpiło zerwanie połączenia.
Standardowo PubSubClient.loop() wywołuje się w funkcji loop() głównego programu. W metodzie następuje komunikacja z serwerem i serwer nie zgłasza timeout. W przypadku smogomierza funkcja PubSubClient.loop() wywoływana jest tylko gdy dane przesyłane są na serwer, więc co kilka/kilkanaście minut.

Aby uniknąć takich komunikatów należy przerzucić mqttclient.loop(); z linii 1189 do pętli loop() głównego programu.

Projekt jest super. Mam jeszcze kilka pomysłów na usprawnienie kodu, dołożenie tego i owego. Pozwolę sobie zgłaszać pr.

Pozdrawiam
Norbert

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants