Gartenbewässerung mit mehreren Controllern unter TASMOTA

  • Ausgangssituation:


    In einem Garten sind mehrere Ventilboxen an räumlich verschiedenen Stellen angeordnet. Alle Boxen hängen an der gleichen Wasserquelle (in diesem Falle Brunnen mit Pumpe).

    Es gibt zwei verschiedenen Arten der Anzapfungen zur Beregnung:

    • Kreisläufe mit mehreren Versenkregnern (= sehr hohe Wasserentnahme)
    • Tropfschläuche (= niedrige Wasserentnahme)

    Ziel:

    Die Steuerung soll sicherstellen, dass:

    • Jeder Wasserkreislauf einzeln Ein/Aus geschaltet werden kann
    • Ein kompletter Beregnungsablauf direkt aus der Steuerung kontrolliert wird
    • Der Start über einen externen Befehl von z.B. über ein HA-System wie FHEM etc. erfolgen kann, oder aus der Steuerung selbst, wobei der Zeitpunkt so gewählt wird, das der Gesamtvorgang vor Sonnenaufgang abgeschlossen ist (die Böden sind zu dieser Zeit am kühlsten).
    • Ein Beregnungsablauf umlaufend die einzelnen Versenkregnerkreisläufe immer nur ein kürzeres, definiertes Intervall betreibt. Die Gesamtberegnungsdauer eines Versenkregnerkreislaufes ergibt sich so aus der Summe der Einzelzeitscheiben. Die Einzelzeitscheiben können pro Kanal festgelegt werden, um unterschiedliche Flow-Raten ausgleichen zu können. Ziel ist es, eine Fläche nicht „zu fluten“ sondern dem Wasser die Zeit zu geben versickern zu können.
    • Es darf immer nur ein Versenkregnerkreislauf zur gleichen Zeit aktiv sein (sonst würde es die Pumpe nicht schaffen)
    • Tropfschlauchkreisläufe werden den gesamten Beregnungsablauf über eingeschaltet, damit sie auf eine ausreichende Bewässerungsmenge kommen. Das klappt natürlich nur, wenn diese nicht zu viel Wasservolumen/Zeit benötigen.
    • Tropfschlauchkreisläufe sollen auch alle mit einem Kommando gestartet werden können, um eine zusätzliche Bewässerung zu einer Tageszeit möglich zu machen.
    • Die für die Ansteuerung notwendigen Netzteile sind nach der Nutzung abzuschalten. Wir wollen Energie sparen ;-)


    Im konkreten Anwendungsfall sind zwei 3-fach Ventilboxen der Marke Gardena mit den passenden 24V Ventilen im Einsatz. Andere sind natürlich auch denkbar.


    Hardwarebasis sind mehrere Sonoff-4CH-PRO-Controller, pro Ventilbox jeweils einer in einem Schaltkasten zusammen mit einen 24V-DC/12W- Schaltnetzteil (die Ventile vertragen auch DC).



    Der Sonoff stellt 4 potentialfreie Kontakte zur Verfügung. Einen wichtigen Tip: (der 4CHpro hat ja auch 433MHz an Bord) ich hatte am Anfang das Problem dass er scheinbar willkürlich eingeschaltet hat. Das liegt daran, das der 433MHz Chip offenbar sehr „lernwillig“ ist und auf einmal auf andere Funksignale reagiert. Ich hatte ihm nie welche beigebracht..


    Ihr findet hier eine Lösung zu dem Thema, die ich Euch im Sinne des Familienfriedens dringend ans Herz legen würde! (https://github.com/arendst/Tasmota/issues/911)


    Ich verwende als Software natürlich TASMOTA und immer mit der Script-Erweiterung von GEMU (Doku unter https://tasmota.github.io/docs/Scripting-Language/), die eine relativ einfache und geniale Programmierumgebung innerhalb TASMOTA zur Verfügung stellt. Hierzu muss man sein TASMOTA aber selbst compilieren. In der Anleitung findet man die nötigen Hinweise.


    Die Boxen selbst müssen natürlich nicht voll mit Ventilen bestückt sein. An jedem Sonoff ist der Kanal 4 dem 24V Netzteil zugeordnet, welches bedarfsweise zugeschaltet wird. Die Kanäle 1..3 sind für die jeweiligen Ventile vorgesehen.


    In den einzelnen Sonoff’s ist prinzipiell der gleiche Script-Programmcode enthalten. Die Bausteine kommunizieren über WIFI auf der niedrigst möglichen „Protokoll-Stufe“ (gemeint ist websend ohne DNS). Jeder Baustein kennt die IP-Adresse seines Nachfolgers, der Letzte die des Ersten. So wird ein logischer Kreis aufgebaut. Das bedeutet aber auch: WIFI ist für alle Sonoff’s notwendig. Fällt es aus, geht es nicht, fällt es während einer Bewässerung aus wird die abschalten.


    Die Befehle für Start und Stop übergibt man initial nur einem (beliebigen) Baustein in der Kette, sinnvollerweise sollte das immer derselbe sein. Den Rest regeln die Bausteine untereinander. Sobald man einen neuen Ablauf initiiert werden bestehende abgebrochen.


    Den Code findet Ihr im nächsten Post. Er ist kommentiert. Ich empfehle den von GEMU entwickelten Editor zu nutzen, dieser entfernt die Kommentare beim Übertragen an den ESP und spart den knappen Platz. Diese Code passt mit Kommentaren nicht mehr hinein. Der Workflow ist dabei so:

    • Bearbeiten des Quelltextes aus einer *.txt Datei (ist auch ein schönes Backup)
    • Senden per Tastendruck an den Sonoff

    Den Download für den Editor und seine Doku findet Ihr für Win und Mac, wenn Ihr in der Script-Doku (s.o.) nach „Optional external editor“ sucht. Ihr müsst dafür noch die IP-Adresse Eures ESP-Boards im Quelltext unter „IP=xxxx“ anpassen.


    Nutzt Ihr den Editor nicht löscht unbedingt die Zeile die mit IP= beginnt.


    Um das Script auf den jeweiligen Baustein anzupassen müsst Ihr folgendes ändern:

    • Im >D-Trigger in nc= die IP-Adresse des nächsten Bausteins der Kette eingeben, der Letzte bekommt wieder die vom Ersten
    • Im >B-Trigger die Werte in tab[1..3] ändern: (1..3 entspricht dem Channel 1..3 des 4CHpro) ein -1 (minus 1!) als Wert bedeutet hier, es ist ein Tropfschlauchkreislauf angeschlossen, 0 bedeutet dass keine Bewässerung stattfindet, alle Werte >0 sind die Sekunden einer Zeitscheibe für den betreffenden Kreislauf.
    • Im >B-Trigger df= auf die Anzahl der Durchläufe multipliziert mit der Anzahl der Bausteine setzten (Bsp.: 5 Durchläufe für 2 Bausteine df=10, für 3 Bausteine df=15; ein Kreislauf bewässert dann 5x dem Wert in seinem tab[])
    • Im >B-Trigger dt= auf die Sekunden, wie lange ein separater Bewässerungsablauf für nur die Tropfschläuche dauern soll (3600 = 1h) setzen

    Das Script subscribed auf %topic%/cmnd/mc eine Steuervariable mc und ist die Softwareschnittstelle nach aussen.

    • Schreibt man hier (bei immer nur einem Baustein!) eine 1 hinein, startet das einen kompletten Bewässerungsablauf.
    • Eine 3 ist ein Sofort-Stopp (z.B. die Schwiegermutter taucht unvermittelt im Garten auf..).
    • Eine 4 startet alle Tropfschläuche für die in dt festgelegte Zeit.

    0 und 2 sind nicht für die Nutzung von außen gedacht, 0 initialisiert die Kette neu und 2 schaltet alle Tropfschläuche ein (für immer, wenn sie nicht wieder ausgeschaltet werden!).


    Um die Bewässerung ohne HA-System zu steuern können die TASMOTA- Zeitpläne genutzt werden. Unter „Einstellungen/ Zeitplan konfigurieren“ können ja bis zu 16 Zeitpunkte definiert werden. Hier werden nur 3 genutzt:

    • Timer 1 für den Start einer kompletten Bewässerung
    • Timer 2 für den Start einer zusätzlichen Tropfbewässerung
    • Timer 16 für ein täglichen Stop zu einer festen Zeit

    Das Kannbei Bedarf im >E-Trigger einfach erweitert werden.


    Timer 1 kann man so z.B. auf „Sonnenaufgang“ – xx:xx stellen (beachte das Minus!). Für xx:xx gibt man dann die Gesamtlaufzeit in h:mm ein. So startet der Ablauf h:mm vor Sonnenaufgang. Wichtig hierfür: die richtigen Geo-Positionsdaten (damit der Sonnenaufgang berechtet werden kann, am besten mit reincompilieren) und die Häkchen „Zeitpläne aktiveren“, „Aktiv“ und „Wiederholen“ gesetzt und „Aktion“ auf „Regel“. Über die Wochentage unten setzt man die Tage. Für ein Beispiel siehe auch das Foto unten.


    Timer 2 und 16 stellt man sinngemäß auf feste Zeiten.

    Ich habe das Ganze 2x bei mir unter FHEM laufen, jedoch nutze ich die Zeitpläne nicht. Bei mir triggert eine Auswertung des Regens der kommenden 2 Tage über ProPlanta und in einem Fall noch zusätzlich der Regenfall des letzten Tages über einen Netatmo den Start per publish mc=1. Ich werte noch das Reading „nt“ (next token) aus, daran kann man ungefähr sehen wie weit die Beregnung ist (ich bekomme davon aber sowieso nichts mehr mit, wenn ich mir nich ein Telegramm schicken lassen würde.).

    Das ist natürlich für jedes HA-System spezifisch aber überall per MqTT zu integrieren.


    Das Subscribe auf „Sync“ nutze ich, um von extern ein Update der POWERx Werte erzwingen zu können, um den Zustand der Ventile zeitnah visualisieren zu können, was sonst nur aller teleperiod passiert.



    Viel Spaß damit!



    Ekkehard.

  • Hier noch das Script: