DOIF: Unterschied zwischen den Versionen
Krikan (Diskussion | Beiträge) K (Ab Update 28.08.14 laut commandref Hilfsmodul) |
(→Anwendungsbeispiele: Waschmaschine beschrieben) |
||
Zeile 22: | Zeile 22: | ||
== Anwendungsbeispiele == | == Anwendungsbeispiele == | ||
Siehe Forum. | Siehe Forum. | ||
=== Waschmaschine Fertigmeldung === | |||
Mit DOIF lässt sich sehr einfach eine Fertigmeldung für die Waschmaschine realisieren. Alles was dazu nötig ist, ist ein Dummy-Device das den aktuellen Betriebszustand der Waschmaschine enthält, ein notify der darauf reagiert und z.b. eine Nachricht via pushover sendet und ein DOIF das die Bedingungen für die Änderung des Betriebszustandes definiert. Im Beispiel unten ist im DOIF eine Schwelle von 5 Watt gesetzt ab der das Dummy-Device auf "on" gesetzt wird. Mittels wait wird für diese erste Bedingung eine Zeit von 60 Sekunden angegeben über die die 5 Watt genutzt werden müssen. Für den "fertig"-Fall wird ein Schwellenwert von 4 Watt angesetzt der für mindestens 300 Sekunden unterschritten werden muss. | |||
<code> | |||
define waschmaschine_betrieb dummy | |||
attr waschmaschine_betrieb event-on-change-reading state | |||
define waschmaschine_DI DOIF ([waschmaschine_Pwr:power]>5) (set waschmaschine_betrieb on) DOELSEIF ([waschmaschine_Pwr:power]<4) (set waschmaschine_betrieb off) | |||
attr waschmaschine_DI wait 60:300 | |||
define waschmaschine_fertig_pushover notify waschmaschine_betrieb:off set pushover msg 'Waschmaschine' 'Waschmaschine ist jetzt fertig!' | |||
</code> | |||
Getestet wurde der Code mit einem [[HM-ES-PMSw1-Pl_Funk-Schaltaktor_1-fach_mit_Leistungsmessung]]. Dabei ist waschmaschine_Pwr das Device zu Channel 2. | |||
=== On-for-timer simulieren === | === On-for-timer simulieren === |
Version vom 2. Oktober 2014, 05:22 Uhr
DOIF | |
---|---|
Zweck / Funktion | |
Do ... if ... | |
Allgemein | |
Typ | Hilfsmodul |
Details | |
Dokumentation | EN / DE |
Support (Forum) | Automatisierung |
Modulname | 98_DOIF.pm |
Ersteller | Damian |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
DOIF ermöglicht, Aktionen ("do") unter bestimmten Bedingungen ("if") auszuführen. Bedingungen umfasst auch Konstrukte wie "wenn Zustand x (watchdog) für y Minuten... (Zeitsteuerung)".
Details zu diesem Modul finden sich derzeit nur in diesem Forenthread.
Voraussetzungen
Siehe Forum.
Anwendung
Define
Siehe Forum.
Attribute
Siehe Forum.
Anwendungsbeispiele
Siehe Forum.
Waschmaschine Fertigmeldung
Mit DOIF lässt sich sehr einfach eine Fertigmeldung für die Waschmaschine realisieren. Alles was dazu nötig ist, ist ein Dummy-Device das den aktuellen Betriebszustand der Waschmaschine enthält, ein notify der darauf reagiert und z.b. eine Nachricht via pushover sendet und ein DOIF das die Bedingungen für die Änderung des Betriebszustandes definiert. Im Beispiel unten ist im DOIF eine Schwelle von 5 Watt gesetzt ab der das Dummy-Device auf "on" gesetzt wird. Mittels wait wird für diese erste Bedingung eine Zeit von 60 Sekunden angegeben über die die 5 Watt genutzt werden müssen. Für den "fertig"-Fall wird ein Schwellenwert von 4 Watt angesetzt der für mindestens 300 Sekunden unterschritten werden muss.
define waschmaschine_betrieb dummy
attr waschmaschine_betrieb event-on-change-reading state
define waschmaschine_DI DOIF ([waschmaschine_Pwr:power]>5) (set waschmaschine_betrieb on) DOELSEIF ([waschmaschine_Pwr:power]<4) (set waschmaschine_betrieb off)
attr waschmaschine_DI wait 60:300
define waschmaschine_fertig_pushover notify waschmaschine_betrieb:off set pushover msg 'Waschmaschine' 'Waschmaschine ist jetzt fertig!'
Getestet wurde der Code mit einem HM-ES-PMSw1-Pl_Funk-Schaltaktor_1-fach_mit_Leistungsmessung. Dabei ist waschmaschine_Pwr das Device zu Channel 2.
On-for-timer simulieren
Die on-for-timer Funktion kann für Geräte, die das nicht von Haus aus unterstützen mit folgenden Definitionen simuliert werden:
define schalter_d dummy define di_Schalter DOIF ([Bewegungsmelder] eq "motion" ) (set schalter_d on, set schalter_d off) attr di_Schalter do always define di_Licht DOIF ([schalter_d] eq "on") (set Licht on) DOELSE (set Licht off) attr di_Licht wait 0:300
Details dazu finden sich in diesem Forenbeitrag.
Alternativ kann man die on-for-timer Funktion durch Verwendung von readingsProxy simulieren, da readingsProxy-Geräte alle Funktionen der setExtension unterstützen.
Links
- Forenthread zur Entstehung dieses Moduls