Die besten Bewässerungssysteme machen nicht glücklich, wenn die implementierte Steuerungslogik nichts taugt. Insofern war es mein Ziel, soviel Hirn wie möglich in die Logik hinein zu investieren, um eine Lösung zu erhalten, die vollautomatisch und ohne ständige manuelle Korrektureingriffe funktioniert.
Die wesentlichen Überlegungen, die in meine Schaltungslogik eingeflossen sind, möchte ich hier kurz darlegen. Alles natürlich unter der Maßgabe einer späteren Integration in FHEM.
- Definition der Anforderungen
- Auswahl des passenden Bewässerungssystems
- Planung einer individuellen Steuerung
- Entwurf der Steuerungslogik
- Füllstandsmessung per Ultraschall (alt) oder Füllstandsmessung mit einer Pegelsonde (neu)
- Programmierung Pretzelboard (Microcontroller)
- Steuerung mit FHEM
- Darstellung auf FHEM Tablet-UI
Die individuelle Steuerungslogik für eine Bewässerungsanlage kann in zwei Bereiche aufgeteilt werden. Der erste Bereich umfasst die Schaltung der Pumpe und der Ventile (Schaltungslogik) und der zweite Bereich die Ermittlung des Gießprogramms (Gießindex) - in meinem Fall ohne Feuchtesensor.
In die Schaltungslogik flossen Überlegungen ein, um einerseits die technischen Grenzen der Komponenten nicht zu überschreiten und andererseits die Schaltung so zu ertüchtigen, dass sie normalerweise vollautomatisch über FHEM gesteuert wird, aber parallel dazu auch eine manueller Betätigung über Schalter möglich ist.
Somit mussten folgende Punkte in die Schaltungslogik einfließen:
Diese Restriktionen können bei der manuellen Bedienung über die Wipp-Schalter sicherlich dem Schaltenden vermittelt werden. Wenn die Schaltung über die Elektronik erfolgt, muss dies natürlich im Schaltungsaufbau und in der Software hinterlegt werden.
Aus der Summe der Überlegungen ist letztendlich folgender Schaltplan entstanden. Das Relais R1 dient zum Schalten der Spule des Hauptrelais für die Pumpe. Die Relais R2-R5 schalten die vier Ventile. Die nicht verwendeten Relais (R6 – R8) wurden trotzdem verdrahtet und auf die Klemmleiste geführt. So muss bei Ausfall eines Relais nur ein Draht umgehangen werden und der Betrieb geht weiter. Für den 24V und 5V-Bereich wurden keine separaten Klemmleisten verwendet. Der 230V-Bereich wurde allerdings separiert. Die manuellen Wipp-Schalter sind zur Ansteuerung der Relais parallel geschaltet.
Die Programmierung des Pretzelboards erfolgte mit der Arduino-IDE unter Windows. Das Board selbst wird hierzu an einen USB-Port angeschlossen. Der programmierte, sogenannte Sketch, kann direkt aus der Arduino-IDE auf das Pretzelboard geladen werden.
Folgende Funktionen wurden implementiert:
Diese aufgelisteten Funktionen wurden im folgenden Sketch implementiert. Auf das Thema serieller vs. digitaler Ultraschallsensor gehe ich im Abschnitt Füllstandsmessung mit Ultraschallsensor ein.
Da ich keinen Feuchtesensor im Einsatz habe, musste für die Ermittlung des Gießprogrammes auf andere Parameter zurückgegriffen werden. Hier griff ich in erster Linie auf die Temperatur und den Ertrag unserer Photovoltaik-Anlage zurück. Tagsüber (zwischen 9 und 18Uhr) erfolgen stündliche Messungen und die Speicherung der Daten. Die gemessene Außentemperatur und der tägliche PV-Ertrag über einem Schwellwert werden kumuliert. Daraus werden die Gießprogramme (Viel, Wenig, Töpfe, Pause) abgeleitet.
Die Schwellwerte der Gießprogramme, für die zu berücksichtigende Temperatur und den PV-Ertrag werden in Dummy-Variablen in FHEM hinterlegt, damit ggf. nachgeregelt werden kann, ohne in den Sourcecode eingreifen zu müssen.
Der Schwellwert für den PV-Ertrag wird monatlich aus den Durchschnittserträgen der letzten Jahre x 0,75 / 30 Tage neu berechnet. So passt sich der Schwellwert den monatlichen Ertragsunterschieden an und bietet ein Höchstmaß an Dynamik. Die Vorteile dieser Methodik kommen besonders in der Übergangszeit zum Tragen.
Beispiel (Temperaturschwellwert: 20°C; PV-Ertrag Schwellwert: 30kWh):
In diesem Beispiel würde sich ein Gießindex von 59 ergeben.
Der so über den Tag kumulierte Gießindex bildet die Basis für das zu ermittelnde Gieß-Programm. In Summe habe ich vier Programme abgeleitet:
Es wirken aber noch andere Parameter hinein. Hat sich z.B. der Inhalt der Zisterne innerhalb des letzten Tages um mindestens 300 Liter erhöht, so hat es wohl eine erhebliche Menge geregnet und das Gießen kann, je nach Änderung des Füllstandes, um ein oder mehrere Tage ausgesetzt werden. Dieser Parameter kann aber nur als Indikator dienen, solange die Zisterne nicht voll ist. Wenn die Zisterne bereits voll ist und es weiter regnet, so ändert sich am Füllstand i.d.R. nichts.
In diesem Fall kann die Regendauer mit einbezogen werden. Für die Messung der äußeren Environments verwende ich einen EnOcean Multisensor. Er liefert neben der Außentemperatur auch die Info: es regnet j/n. Hier kann über das FHEM Statistics-Modul die Regendauer des letzten Tages kumuliert werden. Dies sagt zwar nichts darüber aus, ob es in dieser Zeit ein Starkregen gab oder nur ein wenig genieselt hat. An Genauigkeit reicht es mir für diesen Zweck aber aus. Als Ergebnis wird eine Gießpause von einem oder mehreren Tagen eingelegt, falls die Regendauer seit dem letzten Gießen größer als 3 Stunden war.
Wenn eine Gießpause über die Füllstandsänderung oder die Regendauer ermittelt wurde, so wird der bis dahin ermittelte Gießindex nicht einfach verworfen, sondern halbiert und für den nächsten Tag gemerkt.
Ermittelte Gießpausen habe ich generell auf drei Tage begrenzt, damit das System bei Wetterwechsel flexibel reagieren kann.
Wenn es an einem Tag zu keiner Gießaktion reicht (z.B. wird als Gießindex nur 10 erreicht), so wird dieser Wert nicht einfach verworfen, sondern ebenfalls für den nächsten Tag gemerkt. Damit soll verhindert werden, wenn an mehreren Tagen das Gießen knapp „verfehlt“ wird, trotzdem irgendwann gegossen wird, da durch den Vortrag aus dem Vortag schon ein Sockelbetrag vorhanden ist.
Andererseits sind ermittelte Gießpausen auch nicht in Stein gemeißelt. Ist das System eigentlich im Pausenmodus, so wird jeweils der halbierte Gießindex berücksichtigt. Würde nach Halbierung des Wertes immer noch gegossen werden, so wird auch gegossen. Diese Situation tritt z.B. bei extremen Wetterlagen ein, die in letzter Zeit häufiger vorkommen, d.h. es regnet nachts und am darauffolgenden Tag ist wieder ein heißer Sommertag.
Neigt sich der Füllstand der Zisterne dem Ende, wird auf ein reduziertes Gießprogramm umgeschaltet, d.h. es wird nur der halbe Gießindex berücksichtigt, um Wasser zu sparen.
Generell lasse ich mir das über den Tag ermittelte Gieß-Programm um 20:00 Uhr per Pushbullet auf das Handy senden. Der eigentliche Gießvorgang startet um 21:00 Uhr. Dies hat den Vorteil, dass ich noch eine Stunde Zeit habe, um manuell zu korrigieren, falls ich mit dem ermittelten Programm nicht zufrieden bin. Dies ist im ersten Betriebsjahr nur zweimal passiert. Nachteilig an dieser Vorgehensweise ist, dass der Zeitraum zwischen 20:00 und 21:00 Uhr nicht berücksichtigt wird, d.h. wenn es um 20:10 Uhr mit regnen beginnt, wird trotzdem gegossen, sofern ich nicht manuell gegensteuere.
Die hier beschriebene Logik wurde in FHEM implementiert. Auf Details gehe ich im Abschnitt Bewässerungssteuerung mit FHEM ein.
Senden Sie mir Ihre Fragen oder Anregungen über die Kontaktbox oder direkt per Email. Sie können mich natürlich auch über die gängigen sozialen Netze erreichen.
kontakt@kaempf-nk.de