[GELÖST] In Notify Sub aufrufen

Begonnen von dk3572, 23 Februar 2020, 11:03:08

Vorheriges Thema - Nächstes Thema

dk3572

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

hugo

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
Raspi 3 mit CUL HM-MOD-UART; nanoCUL
Homematic: HM-SEC-SCo 5x;HM-LC-SW1-BA-PCB 3x;HM-Dis-EP-WM55; HM-LC-SW4-PCB; ARLO;
Somfy RTS Rollo 14x; Alexa; GardenaSmartDevice; Stromzähler(GPIO); shelly1; shelly2.5;Wasserzähler(GPIO);Brennerstuhlsteckdosen;

dk3572

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.  ???

DS_Starter

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
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

dk3572

Hallo Keiko,

das war wohl des Rätsels Lösung  ;)

Vielen Dank und schönen Sonntag noch.

VG Dieter

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

dk3572

Ok, danke Otto für deinen Tipp. Werde ich auch mal testen.

VG Dieter