FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: h002 am 30 September 2020, 18:30:15

Titel: Gelöst: DOIF Verzögerung von Timern im Perl-Modus
Beitrag von: h002 am 30 September 2020, 18:30:15
Ich versuche gerade etwas mit dem Perl-Modus im DOIF zu experimentieren. Kann mir jemand erklären, wie das Beispiel mit der Waschmaschine im Perl-Modus mittels set_Exec aussehen würde?

https://fhem.de/commandref_DE.html#DOIF_timerWithWait

Anwendungsbeispiel: Benachrichtigung "Waschmaschine fertig", wenn Verbrauch mindestens 5 Minuten unter 2 Watt (Perl-Code wird in geschweifte Klammern gesetzt):

define di_washer DOIF ([power:watt]<2) ({system("wmail washer finished")})
attr di_washer wait 300

Eine erneute Benachrichtigung wird erst wieder ausgelöst, wenn zwischendurch der Verbrauch über 2 Watt angestiegen war.


Danke :-)
Titel: Antw:DOIF: Verzögerung von Timern im Perl-Modus
Beitrag von: Damian am 30 September 2020, 18:57:59
define di_washer DOIF {if ([$SELF:meldung]) {set_Exec("timer",300,'system("wmail washer finished")')} else {del_Exec("timer")}}
attr DOIF_Readings meldung:[power:watt]<2


Im Perl-Modus muss man selbst sich drum kümmern, eine Ausführung nicht bei jedem Trigger auszuführen. Für diesen Zweck gibt es das Attribut DOIF_Readings, welches intern das eigene Modul triggert, aber nur wenn sich das Reading hier "Meldung" ändert.

PS. Das ist ein schönes Beispiel, wo der FHEM-Modus seine Stärke durch die Auswertung des eigenen Status und das automatische Zurücksetzen eines Wait-Timers ausspielt.
Titel: Antw:Gelöst: DOIF Verzögerung von Timern im Perl-Modus
Beitrag von: h002 am 30 September 2020, 19:06:44
Danke dir.  :D