Bewässerungssteuerung
Bewässerungssteuerung
Diese Seite beschreibt, wie man intelligent seine Bewässerung steuern kann wenn man zb. Bodenfeuchtesensoren installiert hat. Es wird von folgenden Komponenten ausgegangen:
- Gardena Magnetventile, angesprochen über einen FS20-Aktor (zb. S8M)
- Bodenfeuchtesensoren, zb. FS20 BF oder andere (zb. an einem [[AVR-NET-IO]])
1. Als erstes werden die Bewässerungsventile in FHEM definiert, zb.:
define Bewaesserung_Ventil1 FS20 2305 51 attr Bewaesserung_Ventil1 model fs20st attr Bewaesserung_Ventil1 room Bewässerung
2. Anlegen der Bodenfeuchtesensoren
define Bodenfeuchtesensor FS20 34f2 00 attr Bodenfeuchtesensor room Bewässerung
Alternativ auch andere, siehe AVR-NET-IO
3. Zuweisung eines Sensors einem oder mehrerer Bewässerungsventile
attr Bewaesserung_Ventil1 sensor Bodenfeuchtesensor
4. Erstellung einer Schaltvariable um im Frontend die Bewässerung zentral zu steuern
- Auto => Je nach Angabe des Bodenfeuchtesensors wird bewässert oder nicht
- On => Es wird immer bewässert
- Off => Es wird nicht bewässert
define Bewaesserung_Active dummy attr Bewaesserung_Active room Bewässerung attr Bewaesserung_Active setList Auto On Off attr Bewaesserung_Active webCmd Auto:On:Off
5. Jetzt wird die zentrale Prozedur zur Steuerung angelegt:
define BewNotify notify BewNotify {\ my @@args = split(" ",'%EVENT');;\ my $device = "%EVTPART0";;\ my $duration = "%EVTPART1";;\ my $sensor = AttrVal($device, "sensor", undef);;\ my $auto = ReadingsVal("Bewaesserung_Active", "state", "Off");;\ my $sensorstate = "on";;\ \ if(($auto eq "Auto") || ($auto eq "On")) {\ if((defined ($sensor)) && ($auto eq "Auto")) {\ $sensorstate = ReadingsVal($sensor, "state", undef);;\ $sensorstate = ReadingsVal($sensor, "status", undef) if (!defined($sensorstate));;\ $sensorstate = "off" if (!defined($sensorstate));;\ } \ if($sensorstate eq "on") {\ fhem "set $device on-for-timer $duration";;\ } elsif (ReadingsVal($device, "state", "") ne "off" ) {\ fhem "set $device off";;\ }\ }\ } attr BewNotify comment Prozedur um aufgrund Umweltzustände die Bewässerung freizugeben oder nicht. Bsp: BewNotify {Device} {Dauer in sek} {Schaltvariable} attr BewNotify room Bewässerung
Das geübte Auge wird feststellen, das für die Bodenfeuchtesensoren sowohl das Reading "state" als auch das Reading "status" abgefragt wird. Das liegt daran, das die FS20 BF ein Reading "state" haben, die analogen Bodenfeuchtesensoren über die ECMDDevice classdef-Definition ein "status" Reading (Das Reading "state" ist intern verwendet und darf nicht doppelt vergeben werden).
6. Abschließend wird die Bewässerung in die Zeitsteuerung übergeben
define Timer_Ventil1 at *00:00:00 trigger BewNotify Bewaesserung_Ventil1 1920 attr Timer_Ventil1 room Bewässerung
Hiermit wird täglich um 0Uhr die Bewässerungsprozedur aufgerufen bei dem Ventil1 für 30min geöffnet wird. Abhängig natürlich von der Einstellung [Auto|On|Off] der Schaltariable "Bewaesserung_Active"