FHEM Forum

Verschiedenes => Bastelecke => Thema gestartet von: tfriedrich85 am 24 Oktober 2022, 13:11:27

Titel: Über einen Arduino mit Mysensors DHT22 Werte einsammeln
Beitrag von: tfriedrich85 am 24 Oktober 2022, 13:11:27
Hallo,

ich verwende einen Arduino um die Temperaturwerte von DHT 22 Sensoren einzusammeln und per MQTT an Fhem zu schicken. Grundsätzlich funktioniert mein Sketch auch. Allerdings hängt sich der Arudino regelmäßig alle 2-3 Monate mal auf und sendet keine Werte mehr an Fhem. Tritt der Fall ein, muss ich den Arudino kurz vom Strom nehmen und dann gehts weiter.

1. Frage:  Kann man den Arduino im Sketch täglich oder stündlich neu booten?
2. Frage: Gibts Fehler im Sketch? https://github.com/tfriedrich85/temperature-Sensors-to-MQTT/blob/main/temepratureMQTT.ino (https://github.com/tfriedrich85/temperature-Sensors-to-MQTT/blob/main/temepratureMQTT.ino)
3. Frage: Kann ich in Fhem ein Notify setzen, welches bescheid gibt, falls der Arduino keine Werte mehr sendet?

Hier der alte Beitrag zur Erstellung des Sketches
https://forum.fhem.de/index.php/topic,126226.15.html (https://forum.fhem.de/index.php/topic,126226.15.html)

Danke
Titel: Antw:Über einen Arduino mit Mysensors DHT22 Werte einsammeln
Beitrag von: xenos1984 am 24 Oktober 2022, 14:34:43
Eine Möglichkeit wäre, in setup() einen Watchdog zu setzen und in loop() zurückzusetzen. Wenn sich etwas aufhängt, sollte das den Neustart auslösen.
Titel: Antw:Über einen Arduino mit Mysensors DHT22 Werte einsammeln
Beitrag von: frober am 24 Oktober 2022, 20:46:43
Wieso steht im Betreff Mysensors?
Dein Sketch benutzt doch Mysensors überhaupt nicht.

Das delay(300000) am Ende ist Mist. Dadurch blockierst du alles. Evtl. kommt daher dein Problem.
Erhöhe lieber weiter oben dein Intervall.
Titel: Antw:Über einen Arduino mit Mysensors DHT22 Werte einsammeln
Beitrag von: tfriedrich85 am 24 Oktober 2022, 21:17:48
Ok, ich änder das von delay auf Intervall
Titel: Antw:Über einen Arduino mit Mysensors DHT22 Werte einsammeln
Beitrag von: tfriedrich85 am 24 Oktober 2022, 21:18:51
Zitat von: xenos1984 am 24 Oktober 2022, 14:34:43
Eine Möglichkeit wäre, in setup() einen Watchdog zu setzen und in loop() zurückzusetzen. Wenn sich etwas aufhängt, sollte das den Neustart auslösen.

cool, das könnte abhilfe schaffen! Ich hab das mal diesem Vorbild integriert
https://electric-junkie.de/2020/08/arduino-millis-anstatt-von-delay/ (https://electric-junkie.de/2020/08/arduino-millis-anstatt-von-delay/)

Update: Der Watchdog kann auf max 8 Sekunden gestellt werden, dass heißt wenn ich die Temperaturwerte nur alle 5 Minuten haben will, muss ich nach dem Reset des Watchdogs doch ein Delay von 300 Sekunden einbauen.