Automatische Balkonbewässerung - FHEM

Nachdem ich im letzten Blog post die Gardena Balkonbewässerung1 inklusiver der möglichen Verbesserungen vorgestellt habe, soll hier nun die Schaltzentrale für die spätere Pumpensteuerung diskutiert werden.

Natürlich kann man sich so eine Software auch komplett selbst schreiben, hier wird aber der in Perl geschriebene Heimautomatisierungsserver FHEM2 genutzt.

Der wohl größte Vorteil von FHEM ist, dass man quasi beliebige Sensoren und Hardwarekomponenten anbinden kann und mit diesen dann in eigenen Skripen agieren kann. Ich habe FHEM schon länger auf einem Raspberry laufen und u.a. mehrere Temperatursensoren angebunden. Wie man aus den so gewonnenen Daten ansprechende Graphen in Grafana generieren kann, habe ich bereits gezeigt: Grafana: Monitor FHEM.

In FHEM ist es auch möglich, Schalter und Sensoren zum einfacheren testen durch Dummy-Komponenten zu ersetzen.

Der gesamte Code für das Projekt findet sich im dazugehörigen Github-Repository3.

Anforderungen

Am Ende sollen folgende Anforderungen erfüllt werden:

  • Bewässerung nur, wenn genügend Wasser im Tank vorhanden ist (Trockenlaufschutz)
  • Push-Benachrichtigungen, wenn Wasser nachgefüllt werden muss4
  • Je nach Temperatur und Wettervorhersage 2-3 mal täglich für eine konfigurierbare Zeit bewässern
  • Temperatur kann lokal mit einem TX35DTH gemessen werden5
  • Regenwahrscheinlichkeit soll über einen Wetterdienst kommen6

Anlegen der nötigen Dummy-Devices

Folgenden Devices werden für die ersten Tests benötigt:

  • Wetter_PROPLANTA: Wettervorhersage
  • Balkon_TX35DTH: Temperatursensor für den Balkon
  • Pumpe_Schalter: Schaltet die Pumpe an und aus
  • pushmsg: Pushover Dienst

Die komplette Definition findet sich in Bewaesserung_Dummy.cfg und kann bequem in die fhem.cfg übernommen oder eingebunden werden.

Erste Schritte zur vollautomatischen Bewässerung

Da uns noch keine Möglichkeit den Wasserstand im Tank zu erfassen zur Verfügung steht, wird nun erstmal stündlich geprüft, ob aktuell eine der drei Bewässerungszeiten ist, die Mindesttemperatur erreicht ist und die Regenwahrscheinlichkeit unterhalb eines gegebenen Schwellenwerts liegt. All diese Variablen sind konfigurierbar und können an die Anforderungen angepasst werden.

Das für diese Aktionen nötige Skript muss im FHEM Ordner der Installation abgelegt werden: 99_pumpeUtils.pm.

Anschließend kann ein Cron-Job definiert werden, der einmal stündlich die checkPumpe Methode aufruft:

define Pumpe_Cron at +*01:00 { checkPumpe() }
attr Pumpe_Cron room Balkon

Jeder Aufruf wird im Log erfasst und falls eine Bewässerung gestartet wird eine Push-Nachricht generiert. Damit der Dummy-Temperatur Sensor eine andere Temperatur ausgibt, kann diese manuell gesetzt werden:

setreading Balkon_TX35DTH temperature 25

Footnotes

Related Posts