Automatische Balkonbewässerung - FHEM
Contents
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
Comments