Bewässerungsanlage - Steuerungslogik

Sie befinden sich hier:
Smart Home Lösungen
»
Bewässerungsanlage im Eigenbau
»
Steuerungslogik

Die Steuerung macht den Unterschied

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.

Die Steuerungslogik als Hirn der Bewässerungsanlage

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.

Schaltungslogik für Pumpe und Ventile

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 werden kann, aber parallel dazu auch eine manueller Betätigung über Schalter möglich ist.

Somit mussten folgende Punkte in die Schaltungslogik einfließen:

  • Die Ausgangsleistung des 230V / 24V Trafos hat Grenzen, so dass nicht alle vier 24V Ventile zugleich eingeschaltet sein können. Dies war auch nie mein Ziel, da die Fördermenge der Pumpe und die Durchflussmenge der Verrohrung sowieso begrenzt ist. Ich denke, die Ventile (Gießkreise) sollen generell nacheinander geschaltet werden, d.h. es ist nie mehr als ein Ventil + Pumpe gleichzeitig eingeschaltet.
  • Die Relais der Relaisplatine können ebenfalls nur eine begrenzte Leistung schalten. Ein direktes Schalten der 230V Pumpe über diese Relais ist nicht möglich, sondern es wird nur die 24V Spule des 230V Hauptrelais geschaltet, welches dann in der Lage ist, die Pumpenleistung zu schalten. Das Hauptrelais benötigt wiederum ein RC-Glied zur Schutzbeschaltung.
  • Der Microcontroller (Wemos D1 Mini), als Verbindungsglied zwischen FHEM und der Steuerung kann ebenfalls nicht unbegrenzt Relais der Relaisplatine schalten. Die allgemeine Empfehlung im Netz lautet, dass sich max. 3 Relais zugleich im eingeschalteten Zustand befinden sollten.
  • Eine Notabschaltung ist sicherlich auch sinnvoll. Wer weis, was alles passieren kann. Schlimmstenfalls schaltet die Anlage zwar „Ein“, aber nicht wieder „Aus“. Ist dann Schluss, wenn die Zisterne leer ist? Ich denke, hier müssen auch Vorkehrungen getroffen werden, damit dieser Fall nicht eintreten kann.

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 sein.

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 Relais R6–R8 wurden auch verdrahtet und auf die Klemmleiste geführt. Sie fanden ein paar Jahre später bei der Erweiterung um eine Rasenbewässerung ebenfalls Verwendung, sollen allerdings hier nicht Gegenstand der Ausführungen sein. Für den 24V und 5V-Bereich wurde eine gemeinsame Klemmleisten verwendet. Der 230V-Bereich wurde separiert. Die manuellen Wipp-Schalter sind zur Ansteuerung der Relais den Wemos D1 Mini Kontakten parallel geschaltet.

Funktionale Anforderungen an den Wemos D1 Mini

Folgende Funktionen sollte der Microcontroller erfüllen:

  • WLAN verschlüsselt über WPA/WSK
  • Zuweisung einer festen IP-Adresse
  • Implementierung eines MQTT Clients für die Kommunikation zu dem in FHEM integrierten MQTT Server
  • Aktivierung eines Webservers, um einen evtl. abgestürzten MQTT Client aus der Ferne wieder neu starten zu können
  • Ein- und ausschalten eines Relais (Ventils), d.h. vor dem Einschalten wird zuerst - falls noch nicht erfolgt - das Pumpenrelais eingeschaltet, um Leitungsdruck aufzubauen. Evtl. bereits eingeschaltete (andere) Ventilrelais werden zuvor ausgeschaltet. So wird sichergestellt, dass max. zwei Relais der Platine gleichzeitig eingeschaltet sind (ein Relais für die Pumpe und ein Relais für ein Ventil), damit keine Überlastung des Wemos D1 Mini auftreten kann.
  • Steuerungsüberwachung über MQTT Abfragen
  • Automatische Notabschaltung nach 40 Minuten, um eine vollständige Entleerung der Zisterne zu verhindern.

Die aufgelisteten Funktionen wurden in einem Sketch implementiert. Details finden Sie auf der Folgeseite:


Ermittlung Gießindex

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. Liegt die gemessene Außentemperatur und / oder der tägliche PV-Ertrag über einem Schwellwert, so werden sie kumuliert und gehen in die Berechnung ein. 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 Readings einer Dummy-Variable in FHEM hinterlegt, damit ggf. nachgeregelt werden kann, ohne in den Sourcecode des Wemos D1 Mini 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):

  • 09:00Uhr: Temperatur: 18°C, PV-Ertrag: 2kWh ⇒ Gießindex: (0+0) = 0
  • 10:00Uhr: Temperatur: 23°C, PV-Ertrag: 5kWh ⇒ Gießindex: (3+0)+0 = 3
  • 11:00Uhr: Temperatur: 24°C, PV-Ertrag: 7kWh ⇒ Gießindex: (4+0)+3 = 7
  • 12:00Uhr: Temperatur: 26°C, PV-Ertrag: 12kWh ⇒ Gießindex: (5+0)+7 = 12
  • 13:00Uhr: Temperatur: 27°C, PV-Ertrag: 18kWh ⇒ Gießindex: (6+0)+12 = 18
  • 14:00Uhr: Temperatur: 28°C, PV-Ertrag: 24kWh ⇒ Gießindex: (8+0)+18 = 24
  • 15:00Uhr: Temperatur: 27°C, PV-Ertrag: 29kWh ⇒ Gießindex: (7+0)+24 = 31
  • 16:00Uhr: Temperatur: 25°C, PV-Ertrag: 33kWh ⇒ Gießindex: (5+3)+31 = 39
  • 17:00Uhr: Temperatur: 25°C, PV-Ertrag: 36kWh ⇒ Gießindex: (5+4)+39 = 48
  • 18:00Uhr: Temperatur: 23°C, PV-Ertrag: 38kWh ⇒ Gießindex: (3+8)+48 = 59

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:

  • Viel (Gießindex >= 100):
    Die Rabatte (2 Gießkreise) wird jeweils 8 Minuten gegossen und die Terrassenbepflanzung 5 Minuten.
  • Wenig (Gießindex 50 - 99):
    Die Rabatte (2 Gießkreise) wird jeweils 5 Minuten gegossen und die Terrassenbepflanzung 3 Minuten.
  • Töpfe (Gießindex 25 - 49):
    Es werden nur die Töpfe auf der Terrasse für 3 Minuten gegossen.
  • Pause (Gießindex < 25):
    Es wird nichts gegossen. Der ermittelte Index wird sich aber für den nächsten Tag als Startwert gemerkt.

Es werden aber noch andere Parameter mit berücksichtigt, z.B. der Füllstand der Zisterne. Den Füllstand der Zisterne ermittle ich mittlerweile mit einer Pegelsonde. Wie ich das konkret implementiert habe (inkl. Anbindung an FHEM), ist in der separaten Serie Füllstandsmessung mit einer Pegelsonde beschrieben.

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 noch 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 einen Starkregen gab oder es 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 als Startwert gemerkt.

Ermittelte Gießpausen sind generell auf drei Tage begrenzt, damit das System bei Wetterwechsel flexibel reagieren kann.

Wenn es an einem Tag zu keiner Gießaktion reichte (z.B. als Gießindex wird nur 10 erreicht), so wird dieser Wert ebenfalls auf den nächsten Tag übertragen. Damit wird sichergestellt, wenn an einem Tag das Gießen knapp „verfehlt“ wird, dass trotzdem irgendwann gegossen wird, da durch den Vortrag aus dem Vortag schon ein Sockelwert vorhanden ist.

Andererseits sind ermittelte Gießpausen auch nicht in Stein gemeißelt. Ist das System 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 stark und am darauffolgenden Tag ist wieder ein sehr 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.

Das über den Tag ermittelte Gieß-Programm inkl. Index lasse ich mir abends per Telegram auf das Handy senden. Hier könnte ich noch bei Bedarf individuell nachregeln. Dies kommt aber nach jetzt mehrjährigem Betrieb der Anlage eher selten vor, da sich die Anlage über das Fine-Tuning der Parameter und Schwellwerte quasi eingeschwungen hat. Der eigentliche Gießvorgang startet nachts. Evtl. Änderungen, weil es vor Beginn des Gießvorganges doch noch regnete, werden natürlich berücksichtigt.

Die hier beschriebene Logik wurde in FHEM implementiert. Auf Details gehe ich im Abschnitt Steuerung mit FHEM ein.


Kontakt

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

Fragen / Anregungen?

Sicherheitsabfrage:
Datenschutzhinweis: Die eingegebenen Daten werden nicht an Dritte weitergegeben.