Hallo,
ich möchte in einem Notify, gleich nach der Erinnerung das der Trockner fertig ist, nach einer Verzögerung eine sub aufrufen.
Leider scheitere ich wohl an den Klammern od. Anführungszeichen.
defmod n_Trockner notify TP_Trockner:power:.* {\
# Wenn der Trockner eingeschaltet wurde\
if (ReadingsNum($NAME, "power", 0) > 3 && ReadingsVal($NAME, "running", "off") eq "off") {\
fhem("setreading $NAME running on");;\
}\
\
# Wenn der Trockner länger als 10 Minuten lief und dann keinen Strom mehr verbraucht -> Notification\
if (ReadingsNum($NAME, "power", 0) < 3 && ReadingsVal($NAME, "running", "off") eq "on") {\
if (secondsSinceReadingChange($NAME, "running") > 600) {\
fhem("set ECHO_G090LV03644201AX speak hier ist eine erinnerung - dass der Trockner fertig ist.");;\
}\
\
fhem("setreading $NAME running off");;\
}\
\
# Wenn Fehler aufgetreten ist, und der Trockner nach 4 Stunden nicht automatisch ausgegangen ist\
if (secondsSinceReadingChange($NAME, "running") > 14400 && ReadingsVal($NAME, "running", "off") eq "on") {\
fhem("setreading $NAME running off");;\
\
fhem("set ECHO_G090LV03644201AX speak Achtung. Der Trockner läuft seit 4 Stunden und ist nicht ausgegangen");;\
}\
}
Die Verzögerung hatte ich mir so gedacht:
define verzoegerung at +00:01:00 ({TTSAddQueue("bla bla bla.")});
Kann mir hierzu jemand auf die Sprünge helfen?
Danke und VG
Dieter
Hallo Dieter
sieh dir mal das an.
https://forum.fhem.de/index.php/topic,102468.msg960303.html#msg960303
ob 3D Drucker oder Waschmaschine ist egal.
Gruß Josef
Hallo Josef,
danke für deine Antwort.
Mein Notify funktioniert ja.
Ich möchte lediglich die Zeile mit der Verzögerung und dem Aufruf der sub noch hinzu fügen.
Dein Link hilft mir nicht wirklich weiter. ???
Hallo Dieter,
Im FHEMWEB definierst du das at ja so:
defmod verzoegerung at +00:01:00 { TTSAddQueue("bla bla bla.") }
In einer Perl-Routine wäre es entsprechend:
if(....) {
fhem ("defmod verzoegerung at +00:01:00 { TTSAddQueue(\"bla bla bla.\") }");
}
Innerhalb von fhem("...") musst du die Anführungszeichen escapen \" oder einfache ' benutzen wenn möglich.
Denke damit kommst du klar.
Grüße,
Heiko
Hallo Keiko,
das war wohl des Rätsels Lösung ;)
Vielen Dank und schönen Sonntag noch.
VG Dieter
Hallo Dieter,
was Du auch machen kannst, es liest sich besser als eine define (finde ich)
ergänze einfach deinen existierenden fhem("") Aufruf:
fhem("set bla on;;sleep 60;;{sub(\"bla bla\")}")
Am Ende macht FHEM den Job für Dich und macht intern ein at draus :)
Achtung: Wenn Du in deinem define im notify, im Ausführungsteil noch mehr machen willst musst Du dort die ;; nochmal verdoppeln -> ;;;;!
https://commandref.fhem.de/#command
Gruß Otto
Ok, danke Otto für deinen Tipp. Werde ich auch mal testen.
VG Dieter