Funtionsumfang:
- Drahtloses Steuern der Gardena Ventile
- Drahtloses Schalten der Gardena Pumpe
- Funktionsüberprüfung, ob Pumpe an oder aus
- Distanzsensor (Blog-Beitrag zum Distanzsensor) zum Bemessen der Wasserhöhe in den Tanks
- Giess-Sensoren für die Messung der Erdfeuchte
- Wetterlogging über Wetter.com und die Entscheidung, ob bewässert werden muss
Zutaten Bewässerung
- Gardena Pumpe 4000/5 (amazon.de: Comfort Gartenpumpe 4000/5
) - Gardena Ventile 24V (amazon.de: GARDENA 1278-20 Bewässerungsventil 24 V
) - Stromadapter für Ventile
- Schläuche / Verlegerohr amazon.de: Gardena 2701-20 Sprinklersystem Verlegerohr, 25 mm, 50 m-Rolle
- Schläuche
- Eckverbinder / L-Stück amazon.de: Gardena 2773-20 Sprinklersystem L-Stück, 25 mm Quick & Easy
- Kleinmaterial und T-Stück für Entwässerungs-Ventil: Gardena 2760-20 Entwässerungsventil Sprinkler System 3/4″ Außengewinde
und Gardena 2790-20 Sprinklersystem T-Stück mit Gew., 25 mm x 3/4″-IG - Kies (Grob)
- Verbinder für Außengewinde: Gardena SprSys Verbinder AG 25mm (1″), 25mm, Quick&Easy
- Vielflächen-Versenkregner AquaContour automatic, Gardena 1559-29 (amazon.de:Gardena 1559-29 Sprinklersystem Vielflächen-Versenkregner AquaContour automatic
) und Gardena 2780-20 Sprinklersystem L-Stück, 25 mm x 1/2″-AG - Anschlußdose für Handberegnung Gardena 2722-20 Sprinklersystem Anschlussdose
Zutaten für das Steuerungsmodul für Ventile / Schläuche / Ersatz und Pumpe
- 4-Modul Relais und 2-Modul-Relais zum Steuern der Gardena Ventile, sowie der Pumpe (amazon.de: Neuftech 5V 8-Kanäle RelaisModul Brett Für Arduino PIC DSP AVR ARM Relay Module
)
- 2x Arduino Nano (5V) (amazon.de: Aukru Nano v3. 0 Bausteine ATMEGA328P elektronische interaktive Medien mit USB/Dupont-Kabel
) - nRF24L01+ (amazon.de: SainSmart NRF24L01+ drahtlos Transceiver Modul 2.4GHz 100m rang
Distanzsensor
- Arduino Nano (5V)
- nRF24L01+
- Distanzsensor (amazon.de 4-Pin Ultraschallwellen Distanzsensor für Arduino/ Ultrasonic Distance Measuring
Giessensor (folgt)
Überprüfung, ob die Pumpe ein- oder ausgeschaltet ist (USV)
Schaltplan ungefähr so, wie in diesem Blog-Beitrag beschrieben
Beschreibung:
Für die Erstellung einer automatischen Gartenbewässerung sind Bauteile eines Sprinklersystems notwendig. Die hier verwendeten Geräte sind von Gardena, da sie durchweg gute Bewertungen erhielten. Ein weiterer Grund war der Vielflächen-Versenkregner von Gardena. Da wir unser Haus vor rund einem Jahr erst gekauft haben, ist uns noch nicht ganz klar, wo welche Bereiche im Garten wie Sitzbereich, Pool oder ähnliches später sein sollen. Hierbei eignet sich der Einsatz des Gerätes gut, da der Beregnungsbereich von 25° bis 360° reicht. Innerhalb dieses Bereiches ist es möglich, 50 verschiedene Punkte einzustellen/ programmieren, so das spätere Änderungen im Garten berücksichtigt werden können ohne ganze Schläuche neu zu verlegen.
Im Zusammenspiel mit der Gardena 4000/5 Pumpe und entsprechenden Wassertanks bietet die Pumpe geschätzt 3 Bar Druck. Dies reicht aus um eine Beregnung von rund 7 m – 8 m von dem AquaContour zu erzielen.
Aufgrund der Größe des Gartens werden 4 AquaContour Geräte verbaut. Die Pumpe erzeugt dabei leider nicht genügend Druck um alle Geräte gleichzeitig laufen zu lassen. Dadurch wurden entsprechend 4 einzelne Schläuche zu den Beregnern geführt. Ein weiterer Schlauch wird für den vorderen Teil des Hauses genutzt. Ein weiterer Schlauch dient als Direktentnahme für einen Gartenschlauch.
Dadurch ergeben sich insgesamt 6 Schläuche, die einzeln gesteuert werden müssen. Die Steuerung erfolgt mittels eines Arduinos Nano einem 4er-, 2er Relais und einem nRF24L01+ Funkmodul. Die Schaltung der Pumpe erfolgt durch ein gesondertes Relais mit eigenem Sendemodul.
Somit werden 2 komplette Bausätze verwendet.
Hierbei wird der Standard-Code eines MySensor-Relais verwendet und entsprechend angepasst.
Links oben befindet sich die LAN-Gateway.
In der Mitte ist die Steuerung für die einzelnen Ventile. Die gelb-gestrichelte Linie vom 24V Netzteil zu den Relais ist die Zuleitung welche für die Relais verwendet wird. Diese sind untereinander verbunden. Somit benötigt man nur eine Zuleitung. Die rot-gestrichelte Linie ist die andere Leitung, welche von der Lüsterklemme zurück zum 24V Netzteil führt.
Rechts befindet sie die relais-Steuerung für die Gardena Pumpe, welche mit einem Zuleitungsschlauch zu den Ventilen versehen ist.
Verkabelung der Einzelkomponenten:
Um ein Relais anzusteuern ist bei MySensors (http://www.mysensors.org/build/relay) eine Anleitung.
Hinzu kommt das der 2,4 GHz Sender (nRF24L01+) mit angeschlossen werden muss. Dazu ist hier die entsprechende Anleitung: (http://www.mysensors.org/build/connect_radio). Achtung dabei handelt es sich um einen Arduino Pro Mini! Bitte bei der Verkabelung darauf achten, dass die PINs nicht an den gleichen Stellen sind. Lieber in der Tabelle schauen und den Beschriftungen folgen!
Programm-Code Relais Gartenbewässerung
In der obigen Anleitung vom Relais ist ein Programmcode enthalten, der genutzt werden kann aber entsprechend angepasst werden muss.
Anzahl der Relais muss eingestellt werden
digitalWrite(pin, gw.loadState(sensor)?RELAY_OFF:RELAY_ON);
digitalWrite(message.sensor-1+RELAY_1, message.getBool()?RELAY_OFF:RELAY_ON);
Hierbei wurde ON und OFF vertauscht, da sich gezeigt hat, das sobald das Gerät in FHEM eingerichtet war ON als OFF interpretiert wurde.
Änderungen:
Das Resultat sieht so aus:
Einrichtung in FHEM:
Die folgende Grafik zeigt den Ablauf der Beregnungsroutine.
Dies ist der vollautomatisierte Ablauf der Bspw. jeden Morgen um 6:00 Uhr gestartet werden kann und je nach Wetterlage entscheidet ob der Garten beregnet werden soll oder nicht.
Eine weitere, bereits eingerichtete Funktion ist die Beregnung von Hand. Es wird durch entsprechende Dummys in FHEM ein Signal ausgelöst, welches die Pumpe automatisch einschaltet, dann den entsprechenden Beregnungsbereich gießt und bei deaktivieren des Dummys in FHEM auch das Ventil und die Pumpe ausgeschaltet wird.
Erstellung der Dummys und Konfigurationsdaten für die Bewässerung in FHEM:
Nach der Erstellung beider Relais werden die Geräte in Fhem eingebunden.
Es werden folgende Dummys im System benötigt:
Bewaesserung
Zur Steuerung der Anlage (Ja / Nein)
configGeraete
Steuerung der einzelnen Geräte um sie ansprechen zu können
configGartenBewaesserung
Steuerung der Programmierung
RegenwarscheinlichkeitProTag (sorry Dummy falsch geschrieben, Anm. Robin)
Regenwahrscheinlichkeit der kommenden 24h
confGeraete ist ein zweidimensionales Array um die Gerätenamen und Spezifikationen der einzelnen
Relais und Zeiten in einem Dummy zu steuern.
Verwendung:
Dimension getrennt durch LEERZEICHEN zur besseren Übersicht in Fhem
Dimension getrennt durch KOMMA
Somit ergibt sich folgende Syntax für ein Gerät:
<Name des Gerätes>,<Name des einzelnen Relais>,<Dauer in Minuten wie lange das Gerät geöffnet
sein soll> LEERZEICHEN …usw…
configGartenBewaesserung ist ein Eindimensionales Array welches mit KOMMA getrennt wird.
Hierbei werden in folgender Reihnefolge die Werte belegt:
<Sicherheitsschaltung>,<Gießfrequenz>,<Regenwarscheinlichkeit in % >,<Logfile>,<Timestamp der
letzten Beregnung>
Sicherheitsschaltung (Ja/ Nein). Dadurch werden beim Starten des Programms alles Relais
ausgeschaltet bevor mit dem Gießprozess begonnen wird.
Gießfrequenz in Tagen. BSP 2 = Jeden zweiten Tag gießen
Regenwahrscheinlichkeit in % ab der nicht mehr gegossen werden soll
Logfile (Ja/ Nein). Soll ein Logfile erstellt werden? Hier werden Informationen gespeichert, wie
z.B. wann das letzte mal gegossen wurde, oder wie voll die Tonne vor bzw. nach dem Gießen
war. Dazu wird der Dinstanzsensor benötigt.
Timestamp, wird vom System eingetragen um die letzte Bewässerung zu protokollieren.
Die Beregnung soll bei mir um 6:00 Uhr morgens beginnen. Hierfür wird ein AT-Befehl in FHEM wie
folgt integriert:
define test at *06:00:00 {myGardenIrrigation()}
Für die Beregnung von Hand werden nun entsprechende Dummys angelegt
define GSchlauch_1 dummy
attr GSchlauch_1 room Gartenbewässerung
attr GSchlauch_1 webCmd Schlauch1:on:off
Syntax:
<Name>_<Ventilnummer>
Der Name ist zur automatisierten Erstellung durch die Programmierung Notwendig.
Die Ventilnummer ist das Ventil / Schlauch der geöffnet werden soll. Hierbei ist es notwendig in dem
Programmode die variable $ventilName entsprechend anzupassen. In dem Beispiel ist der Name
„RelaisGartenVentil“
Wichtig zu beachten ist das der Unterstrich als „trenner“ fungiert um den Namen und die Zahl im
späteren Verlauf des Programms zu trennen.
Notify zum Ansteuern der Ventile:
Ein Notify muss angelegt werden, der auf den eben angelegten Dummy reagiert und die Methode
mit entsprechenden übergabeparametern aufruft
define HandsteuerungNotify notify GSchlauch_1:.* {\
myGardenIrrigation($NAME,$EVENT);;\
}
attr HandsteuerungNotify room Gartenbewässerung
Benötigte Wetterdaten:
Die Entscheidung für eine vernünftige Wetterinformation war nicht ganz einfach. Gesucht wurde eine Wetter-API die die Regenwahrscheinlichkeit mit angibt. Nach einigen verschiedenen Tests kam heraus das die API von wetter.com für den Norddeutschen Bereich am genauesten ist, was das Thema Regenwahrscheinlichkeit betrifft. Aufgrund der Küstennähe in Bremerhaven ist es nicht sinnvoll eine Wetterstation zu nehmen die ~50 km entfernt ist, da diese Werte mit dem aktuellem Wetter nicht zielführend sind. Ein kleines Manko ist das die Regenwahrscheinlichkeit wird in Blöcken angegeben.
Zum Integrieren der wetter.com API ist hier eine Anleitung verfügbar:
http://fhem.de/commandref_DE.html#OPENWEATHER
In dem oben genanntem Programm-Code ist eine Methode zur Relativierung der Regenwahrscheinlichkeit.
Das Prinzip ist folgendes:
Ist eine Regenwahrscheinlichkeit (fc0_chOfRain) bei 90 – also 90% und fc0_weather=“leichter Regen – schauer“, dann ist ein leichter Schauer sehr wahrscheinlich. Zudem sind die Wettervorhersagen in Stundenblöcken unterteilt (fc0_chOfRain, fc0_chOfRain06, fc0_chOfRain11, fc0_chOfRain17, fc0_chOfRain23).
Davon ausgegangen das 90% Regenwahrscheinlichkeit vorhanden sind aber nur „leichter Regen“ zu erwarten ist, wird dieser leichte Regen von der Regenwahrscheinlichkeit zu je 20% abgezogen um eine realistische Regenwahrscheinlichkeit zu berechnen.
Dies beschreibt die Methode „myWeatherData()“
sub myWeatherData(){
my $faktor;
my $w1 = ReadingsVal("MeinWetter","fc0_weather",0);
my $w2 = ReadingsVal("MeinWetter","fc0_weather06",0);
my $w3 = ReadingsVal("MeinWetter","fc0_weather11",0);
my $w4 = ReadingsVal("MeinWetter","fc0_weather17",0);
my $w5 = ReadingsVal("MeinWetter","fc0_weather23",0);
$faktor += ($w1 =~ m/leichter Reg/i)? 20: 0;
$faktor += ($w2 =~ m/leichter Reg/i)? 20: 0;
$faktor += ($w3 =~ m/leichter Reg/i)? 20: 0;
$faktor += ($w4 =~ m/leichter Reg/i)? 20: 0;
$faktor += ($w5 =~ m/leichter Reg/i)? 20: 0;
my $regenwarscheinlichkeit = ($faktor > 0)? ((ReadingsVal("MeinWetter","fc0_chOfRain",0)) /100) * $faktor : (ReadingsVal("MeinWetter","fc0_chOfRain",0));
fhem("set RegenwarscheinlickeitProTag $regenwarscheinlichkeit");
return $regenwarscheinlichkeit;
}
Weiteres in Planung:
- Nutzung von einem Distanzsensor, der die Höhe des Wasserstands ermittelt, um die Pumpe nicht zu beschädigen
- Logfile-Erstellung zur Übersicht wann beregnet wurde, wie der Wasserstand war etc.
- Schaltung einzelner Beregnungsschläuche um von Handsteuerung zu ermöglichen
- Einbindung der USV. Zur Überprüfung ob die Pumpe An bzw. Aus ist.
Nachtrag: Man benötigt zum „Verbinden“ an Fhem noch das MySensors-Gateway. Hierzu kann ich auf einem Blogbeitrag verweisen. Die Software davon ist aber nicht mehr uptodate, jedoch die Hardware ist die gleiche. Hier geht es zum Blog-Beitrag.
Programm-Code: Code_version1-2