Bewässerungssteuerung

Aus FHEMWiki

Diese Seite beschreibt, wie man intelligent seine Bewässerung steuern kann wenn man Bodenfeuchtesensoren installiert hat. Weiterhin kann man eine maximale Obergrenze von parallelen Bewässerungen angeben wenn man zb. von einem Brunnen nur einen begrenzten Mengendurchfluss hat.

Es wird von folgenden Komponenten ausgegangen:

allgemeine Vorbereitungen

Wird ein 2- oder 8fach 1wire Schaltaktor verwendet so muss jedes Ventil per ReadingsProxy maskiert werden Bei jedem Aktor in FHEM muss das Attribut follow-on-for-timer auf 1 gesetzt werden. Andernfalls bitte die Prozedur "on-for-timer-offcheck" anlegen: On-for-timer_zurücksetzen

Anlegen der Bodenfeuchtesensoren

Für eines FS20 Sensor: FS20BF

define Bodenfeuchtesensor FS20 34f2 00
attr Bodenfeuchtesensor room Bewässerung

Für eine 1wire Version: einen analogen Sensor (zb. Vegetronix), angeschlossen an einen 4fach A/D Converter DS2450

define Bodenfeuchte OWAD DS2450 03140C000000 60
attr Bodenfeuchte model DS2450
attr Bodenfeuchte room Bewässerung
attr Bodenfeuchte userReadings VWC_A {sprintf("%.0f",(11.6552 * ReadingsVal("$name","A",0)**4 + 7.10835 * ReadingsVal("$name","A",0)**2 - 0.569557) / (ReadingsVal("$name","A",0)**2 + 1))}

Bewässerungsventile definieren

Falls für jedes Magnetventil ein eigenes Device existiert. Zb. bei Nutzung von eines SM8/SM4/FS20ST

define Bewaesserung_Ventil1 FS20 2305 51
attr Bewaesserung_Ventil1 model fs20st
attr Bewaesserung_Ventil1 room Bewässerung

Wird die Bewässerungssteuerung mittels 1Wire betrieben, so verfügt 1 Device (i.d.R DS2406/DS2408/DS1413) über 2 oder 8 Ports. An folgendem Device hängen die physischen Bewässerungsventile. Dieses muss natürlich an die eigenen Gegebenheiten angepasst werden :)

define Schalter_rechts OWSWITCH DS2408 xxxxxxxxxxxxxx
attr Schalter_rechts IODev 1wireBus
attr Schalter_rechts model DS2408
attr Schalter_rechts room Bewässerung
attr Schalter_rechts stateS .

Zusätzlich das ReadingsProxy Device für den Port A

define Bewaesserung_Ventil1 readingsProxy Schalter_rechts:A
attr Bewaesserung_Ventil1 room Bewässerung
attr Bewaesserung_Ventil1 setFn {"output A $CMD"}
attr Bewaesserung_Ventil1 setList on off
attr Bewaesserung_Ventil1 valueFn {($VALUE eq "ON.")?"OFF":"ON"}
attr Bewaesserung_Ventil1 webCmd on:off

Module bereitstellen

Als nächstes sind die benötigten Module aus dem FHEM SVN contrib Verzeichnis in das FHEM Verzeichnis zu kopieren


Definitionen

Pro Bewässerung bzw Bewässerungsventil ist eine SprinkleInstanz zu definieren

define MySprinkle1 Sprinkle Bewaesserung_Ventil1 Bodenfeuchte:VWC_A +00:05:00;
attr MySprinkle1 Sprinkle_OnTimeSec 30;
attr MySprinkle1 Sprinkle_SensorThreshold 55;
attr MySprinkle1 room Bewässerung;
attr MySprinkle1 webCmd Auto:An:Aus:Toggle:Disable;

Damit wird alle 5min überprüft ob die Bodenfeuchte im Reading VWC_A kleiner als der Wert im Attribut Sprinkle_SensorThreshold ist und gegebenenfalls ein on-for-timer Befehl auf den Aktor Bewaesserung_Ventil1 abgesetzt. Die Dauer der Beregnung bzw. des on-for-timers richtet sich nach dem Attributwert Sprinkle_OnTimeSec.

Es sind folgende Set Befehle möglich:

  • Disable
    Deaktivierung. Erst ein erneuter Disable-Befehl aktiviert die Instanz wieder. Während einer Deaktivierung werden keine anderen Befehle akzeptiert
  • An
    Manuelles Starten eines Bewäserungsprozesses
  • Aus
    Manuelles Stoppen eines Bewäserungsprozesses
  • Toggle
    Je nach aktuellem Zustand wird ein Bewässerungsprozess gestartet oder gestoppt
  • Auto
    Der Auto-Modus ist nur verfügbar, wenn ein Bodenfeuchtesensor angegeben ist sowie die Attribute Sprinkle_OnTimeSec und Sprinkle_SensorThreshold angegeben sind.

Der erste Klick auf Auto versetzt die Instanz in den AutoModus. Jeder folgende Klick startet einen Bewässerungsprozess im AutoModus - Je nach Zustand der Bodenfeuchte wird nun bewässert oder nicht.

weitere Spezialfälle

Ist die Anzahl der parallelen Bewässerungsprozesse zu begrenzen, so ist eine übergeordnete Kontrollinstanz zu definieren. Beispielsweise durch einen maximalen Wasserdurchfluss den ein Brunnen bedienen kann.

define MySprinkleControl SprinkleControl;
attr MySprinkleControl SprinkleControl_MaxParallel 1;
attr MySprinkleControl room Bewässerung;

Hiermit wird maximal ein Bewässerungsprozess zugelassen. Alle folgenden werden in eine Queue eingereiht und nacheinander abgearbeitet.
Die vorher definierte SprinkleInstanz ist nun noch mit der Kontrollinstanz zu verbinden.

attr MySprinkle1 SprinkleControl SprinkleControl;

Mit einer einzelnen SprinkleInstanz kann man die Auswirkung noch nicht erkennen, dazu müssen weitere SprinkleInstanzen für weitere Bewässerungsventile angelegt werden

Links

Forumsbeitrag zum Modul