Bewässerungssteuerung: Unterschied zwischen den Versionen
KKeine Bearbeitungszusammenfassung |
K (2 Typos verbessert) |
||
(12 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{ | <div style="float:right"> | ||
{{Infobox Modul | |||
|ModPurpose=Kontrollinstanz der Bewässerungssteuerung | |||
|ModType=contrib | |||
|ModFTopic=22142 | |||
|ModForumArea=Unterstützende Dienste | |||
|ModTechName=97_SprinkleControl.pm | |||
|ModOwner=[http://forum.fhem.de/index.php?action=profile;u=118 Tobias] | |||
}} | |||
{{Infobox Modul | |||
|ModPurpose=Spezialisiertes Modul zur Bewässerungssteuerung | |||
|ModType=contrib | |||
|ModFTopic=22142 | |||
|ModForumArea=Unterstützende Dienste | |||
|ModTechName=98_Sprinkle.pm | |||
|ModOwner=[http://forum.fhem.de/index.php?action=profile;u=118 Tobias] | |||
}} | |||
</div> | |||
Diese Seite beschreibt, wie man intelligent seine Bewässerung steuern kann wenn man | 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 z.B. von einem Brunnen nur einen begrenzten Mengendurchfluss hat oder das Netzteil nicht alle Ventile gleichzeitig schalten kann. | |||
__INHALTSVERZEICHNIS__ | __INHALTSVERZEICHNIS__ | ||
Zeile 9: | Zeile 25: | ||
Es wird von folgenden Komponenten ausgegangen: | Es wird von folgenden Komponenten ausgegangen: | ||
* Gardena Magnetventile, angesprochen über einen FS20-Aktor (zb. S8M) | * Gardena oder Hunter Magnetventile, angesprochen über einen FS20-Aktor (zb. S8M), Homematic-Aktor oder 1wireSchaltaktoren | ||
* Bodenfeuchtesensoren, zb. FS20 BF oder andere ( | * Bodenfeuchtesensoren, zb. FS20 BF oder andere (z. B. an einem [[AVR-NET-IO#Analoge_Eing.C3.A4nge_in_FHEM_einbinden|AVR-NET-IO]] oder funkangebunden per [[SWAP#Beispiel:_panStamp_soilmoisture_Sketch_in_FHEM_einbinden|Panstamp]]) | ||
=allgemeine | ==allgemeine Vorbereitungen== | ||
Wird ein 2- oder 8fach 1wire Schaltaktor verwendet, so muss jedes Ventil per [[ReadingsProxy|readingsProxy]] maskiert werden. | |||
Bei jedem FS20 Aktor muss in FHEM das Attribut ''follow-on-for-timer'' auf 1 gesetzt werden. | |||
==Anlegen der Bodenfeuchtesensoren== | ===Anlegen der Bodenfeuchtesensoren=== | ||
Für | Für eines FS20 Sensor: FS20BF | ||
define Bodenfeuchtesensor FS20 34f2 00 | define Bodenfeuchtesensor FS20 34f2 00 | ||
attr Bodenfeuchtesensor room Bewässerung | attr Bodenfeuchtesensor room Bewässerung | ||
Für eine 1wire Version: einen analogen Sensor (zb. Vegetronix), angeschlossen an einen 4fach A/D Converter DS2450 | Für eine 1wire Version: einen analogen Sensor (zb. Vegetronix), angeschlossen an einen 4fach A/D Converter DS2450 | ||
define Bodenfeuchte OWAD DS2450 | define Bodenfeuchte OWAD DS2450 03140C000000 60 | ||
attr Bodenfeuchte model DS2450 | attr Bodenfeuchte model DS2450 | ||
attr Bodenfeuchte room Bewässerung | 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))} | |||
Kabelgebundene Vegetronix Bodenfeuchtesensoren können per [[SWAP#Beispiel:_panStamp_soilmoisture_Sketch_in_FHEM_einbinden|Panstamp-Anbindung]] auch funkbasiert arbeiten. | |||
== | ===Bewässerungsventile definieren=== | ||
Falls für jedes Magnetventil ein eigenes Device existiert. Zb. bei Nutzung von eines SM8/SM4/FS20ST/HM-LC-SW4-DR | |||
define Bewaesserung_Ventil1 FS20 2305 51 | |||
attr Bewaesserung_Ventil1 model fs20st | |||
attr Bewaesserung_Ventil1 room Bewässerung | |||
define | |||
attr | |||
attr | |||
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 :) | An folgendem Device hängen die physischen Bewässerungsventile. Dieses muss natürlich an die eigenen Gegebenheiten angepasst werden :) | ||
define | define Schalter_rechts OWSWITCH DS2408 xxxxxxxxxxxxxx | ||
attr | attr Schalter_rechts IODev 1wireBus | ||
attr | attr Schalter_rechts model DS2408 | ||
attr | 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 | |||
attr | |||
attr | |||
{ | |||
= | ===Module bereitstellen=== | ||
Als nächstes sind die benötigten Module aus dem FHEM SVN contrib Verzeichnis in das FHEM-Verzeichnis zu kopieren: | |||
* [http://svn.fhem.de/trac/export/HEAD/trunk/fhem/contrib/97_SprinkleControl.pm 97_SprinkleControl.pm] | |||
== | * [http://svn.fhem.de/trac/export/HEAD/trunk/fhem/contrib/98_Sprinkle.pm 98_Sprinkle.pm] | ||
Als | |||
== | ==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; | |||
Die Timerangabe kann periodisch z.B. +00:05:00 alle 5min (wie im Beispiel oben) oder einmalig am Tag z.b. 04:00:00 für 4:00 Uhr eingestellt werden. Nach Ablauf des Timers wird ü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''' <br> Deaktivierung. Erst ein erneuter Disable-Befehl aktiviert die Instanz wieder. Während einer Deaktivierung werden keine anderen Befehle akzeptiert | |||
* '''An''' <br> Manuelles Starten eines Bewässerungsprozesses | |||
* '''Aus''' <br> Manuelles Stoppen eines Bewässerungsprozesses | |||
* '''Toggle''' <br> Je nach aktuellem Zustand wird ein Bewässerungsprozess gestartet oder gestoppt | |||
* '''Auto''' <br> Der Auto-Modus ist nur verfügbar, wenn ein Bodenfeuchtesensor angegeben ist sowie die Attribute ''Sprinkle_OnTimeSec'' und ''Sprinkle_SensorThreshold'' angegeben sind. <br> | |||
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.<br> | |||
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== | |||
Forumsthread zum Modul: {{Link2Forum|Topic=22142}} | |||
[[Kategorie:Code Snippets]] | [[Kategorie:Code Snippets]] |
Aktuelle Version vom 4. Juli 2018, 18:42 Uhr
Bewässerungssteuerung | |
---|---|
Zweck / Funktion | |
Kontrollinstanz der Bewässerungssteuerung | |
Allgemein | |
Typ | Contrib |
Details | |
Dokumentation | Thema |
Support (Forum) | Unterstützende Dienste |
Modulname | 97_SprinkleControl.pm |
Ersteller | Tobias |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
Bewässerungssteuerung | |
---|---|
Zweck / Funktion | |
Spezialisiertes Modul zur Bewässerungssteuerung | |
Allgemein | |
Typ | Contrib |
Details | |
Dokumentation | Thema |
Support (Forum) | Unterstützende Dienste |
Modulname | 98_Sprinkle.pm |
Ersteller | Tobias |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
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 z.B. von einem Brunnen nur einen begrenzten Mengendurchfluss hat oder das Netzteil nicht alle Ventile gleichzeitig schalten kann.
Es wird von folgenden Komponenten ausgegangen:
- Gardena oder Hunter Magnetventile, angesprochen über einen FS20-Aktor (zb. S8M), Homematic-Aktor oder 1wireSchaltaktoren
- Bodenfeuchtesensoren, zb. FS20 BF oder andere (z. B. an einem AVR-NET-IO oder funkangebunden per Panstamp)
allgemeine Vorbereitungen
Wird ein 2- oder 8fach 1wire Schaltaktor verwendet, so muss jedes Ventil per readingsProxy maskiert werden. Bei jedem FS20 Aktor muss in FHEM das Attribut follow-on-for-timer auf 1 gesetzt werden.
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))}
Kabelgebundene Vegetronix Bodenfeuchtesensoren können per Panstamp-Anbindung auch funkbasiert arbeiten.
Bewässerungsventile definieren
Falls für jedes Magnetventil ein eigenes Device existiert. Zb. bei Nutzung von eines SM8/SM4/FS20ST/HM-LC-SW4-DR
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;
Die Timerangabe kann periodisch z.B. +00:05:00 alle 5min (wie im Beispiel oben) oder einmalig am Tag z.b. 04:00:00 für 4:00 Uhr eingestellt werden. Nach Ablauf des Timers wird ü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ässerungsprozesses - Aus
Manuelles Stoppen eines Bewässerungsprozesses - 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
Forumsthread zum Modul: Thema