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
- Füllstandsensor
- Temperatursensor
- Bodenfeuchtigkeitssensor
- Aktor (MOS-Fet) um die Pumpe anzuschalten
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