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 :-)
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.
Danke dir. :D