Gelöst: DOIF Verzögerung von Timern im Perl-Modus

Begonnen von h002, 30 September 2020, 18:30:15

Vorheriges Thema - Nächstes Thema

h002

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 :-)

Damian

#1
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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF