FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: pechnase am 19 Juli 2016, 14:39:14

Titel: MQTT mit Client in Deepsleep
Beitrag von: pechnase am 19 Juli 2016, 14:39:14
Hallo,
mein neuestes Projekt ist ein kleines Bewässerungssystem, bei dem aus der Wassertonne mit einer Tauchpumpe Wasser zum Giesen entnommen wird. Der 'Pumpen Client' hat einen
Der 'Pumpenclient' kommuniziert über MQTT mit FHEM. Als 'Pumpenclient' Hardware kommt ein ESP8266-12E zum Einsatz. Als MQTT-Client SW verwende ich die PubSubClient-Library mit der Arduino IDE.
FHEM läuft gemeinsam mit dem mosquitto MQTT-Broker auf einem Raspberry 2B.
Die Pumpe kann über set angeschaltet werden.
Das läuft auch alles wunderbar, solange ich den ESP immer aktiv halte.
Da ich das System autark mit einem 7.2Ah Akku betreiben möchte, bin ich auf den deepsleep mode des ESP angewiesen. Im deepsleep verbraucht der Client ca. 10mA und im aufgeweckten Zustand ca. 80mA. Wenn man von einer Pumpenlaufzeit von 15min. pro Tag ausgeht, sollte der Akku mindestens 10Tage halten.
Sobald ich den deepsleep verwende, funktioniert das Publishen der Sensordaten immer noch, ich bekomme den Pumpen Anschaltbefehl aber nicht mehr an den PumpenClient übertragen.
Vermutlich wird das FHEM MQTT_Device den set-Befehl noch richtig an den MQTT-Broker übertragen, aber ich vermute, dass dann irgend eine Zeit abläuft, bis der PumpenClient das nächste mal ein Subscribe an den MQTT-Broker absetzt.
Das Keepalive in der PubSubClient.h habe ich schon erhöht. In der mosquitto-Broker config habe ich auch schon das Keepalive eingefügt, bis jetzt hat sich aber nichts geändert.
Hat jemand schon einen ähnlichen Fall gelöst und weiß, an welchen Stellschrauben man am Broker oder Client drehen muss.
Ach ja, qos habe ich auf 1 stehen.

Vielen Dank für eure Unterstützung
Wolfgang
Titel: Antw:MQTT mit Client in Deepsleep
Beitrag von: JoWiemann am 19 Juli 2016, 19:08:05
Hallo,

bei Deep Sleep läuft im ESP, bis auf den internen Timer, nichts mehr. Nach Ablauf der Deep Sleep Zeit wird der Esp resettet und der Sketch neu gestartet. Somit kann der Esp auf MQTT Anfragen überhaupt nicht reagieren.



Grüße Jörg

Gesendet von iPhone mit Tapatalk
Titel: Antw:MQTT mit Client in Deepsleep
Beitrag von: bugster_de am 14 August 2017, 11:22:00
Hi,

ich wärme diesen Fred nochmal auf, da ich das gleiche Thema habe.

Bisher hatte ich MQTT so verstanden:
- man published etwas an den Broker
- ein Client (hier ESP8266) meldet sich irgendwann an und subscribed sich. Damit wird dann die published message abgeholt und alles ist gut

Mein Anwendungsfall
ich habe einen ESP8266 als Bodenfeuchte Sensor der auf Batterie läuft. Er geht in deepsleep, wacht alle 15 Minuten auf, connected sich in das Wifi, connected sich zum Broker und sendet dann den aktuellen Fecuhtegrad. Danach geht er wieder in den deepsleep.
Geht soweit.
Nun möchte ich aber die Bodenfeuchte während die Bewässerung läuft in kürzeren Zyklen schicken. Da aber nur FHEM weiß, wann die Bewässerung läuft würde ich nun gerne dem ESP eine MQTT Message publishen, die die deepsleep Zeit beinhaltet. Sprich der ESP wacht auf, verbindet sich mit WiFi und MQTT, subscribed sich auf die deepsleep-interval Message, der Broker schickt diese dann und der ESP wird nach getaner Arbeit dann mit der genannten Zeit in den deepsleep versetzt.
geht aber nicht.

Frage:
ist das ein Problem des Mosquitto Brokers oder habe ich MQTT da falsch verstanden?