Notify verzögert ausführen

Begonnen von arokh12, 05 März 2020, 11:48:13

Vorheriges Thema - Nächstes Thema

frank

ZitatFrank ich weiß, aber es funktioniert, getestet :)
na gut.

ich bleibe aber bei meiner interpretation der cref.
"mischungen" habe ich deshalb wohl nie probiert.

und dieses construct (mit noch mehr perl drumherum) nutze ich vielfach erfolgreich in notify und at:
{fhem("sleep 5;set LichtWzL_Dim on")}
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

arokh12

Zitat von: Otto123 am 05 März 2020, 13:12:35
@arokh12 Habe es auch so probiert - funktioniert  ;)
defmod MyNotifyTestMix notify led:an sleep 5;;{\
if ($EVENT eq "an") {fhem("set LichtWzL_Dim toggle")}\
}

Das ist jetzt merkwürdig, ich habe es ja genauso, aber es kommt halt immer die oben genannte Fehlermeldung.

Hier ist jetzt nochmal das Notify aus der CFG. ich sehe da ja jetzt keinen Unterschied zu deinem define Test_notify notify Test:on sleep 10;;{\
if ($EVENT eq "on") {\
fhem("set Push msg title='PV-Anlage' message='Verbraucher1 eingeschaltet'")\
}\
elsif ($EVENT eq "off") {\
fhem("set Push msg title='PV-Anlage' message='Verbraucher1 ausgeschaltet'");;\
}}

Otto123

#17
Das Problem liegt hier:
fhem("set Push msg title='PV-Anlage' message='Verbraucher1 ausgeschaltet'");;\
}}
Eigentlich nur unnötig, hier aber offenbar von "irgendwem/irgendwas" nicht toleriert ;)
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

justme1968

problematisch ist das vermischen in einem einzigen set weil der parser nicht gut damit klar kommt.

in diesem speziellen fall ist das aber keine vermischung von fhem und perl code. alles was nach dem sleep kommt wird nur gemerkt und später ausgeführt. d.h. es gibt drei schritte:
- fhem ebene: sleep mit zwei parametern
- der erste parameter wird genommen und so lange geschlafen
- der zweite parameter wird ausgeführt als ob er eingegeben wurde

zur anzahl der ;
- ; trennt ein kommando vom nächsten.
- wenn das ; nicht zwei kommandos trennen soll muss man es verdoppeln
- wenn man in fhemweb editiert wird das verdoppeln automatisch gemacht
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Otto123

#19
Jetzt bekommt Frank "Aufwind" :D
So wird das ;; am Ende des fhem() vor der Klammer des if toleriert:
defmod MyNotifyTestMix notify led:.* {\
if ($EVENT eq "an") {fhem("sleep 5;;set LichtWzL_Dim toggle");;\
}}


Ich denke: Wenn als einziger FHEM Befehl eine "Perl Klammer" steht {} wird der Inhalt an Perl gegeben und FHEM ist mit der Analyse fertig. Stehen mehrere FHEM Kommandos da: kommando1;{Perl}; set magic {perl};kommando2 usw. Muss die ganze Zeile analysiert werden, dabei kann es auch mal zu "Besonderheiten" kommen.

Daher kommt sicher auch die schon oft gemachte Empfehlung: Wenn Perl dabei ist, dann komplett in Perl ;)
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

Otto123

Und der Chef bestätigt Franks Aussage
ZitatDas Mischen von FHEM-, perl- und Shell Befehlen in einer Befehlskette ist nicht zugesichert.
Dass es manchmal funktioniert, beweist noch nicht das Gegenteil.
Ich merk mir das für die Zukunft :)
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

arokh12

Zitat von: Otto123 am 05 März 2020, 13:28:11
Das Problem liegt hier:
fhem("set Push msg title='PV-Anlage' message='Verbraucher1 ausgeschaltet'");;\
}}
Eigentlich nur unnötig, hier aber offenbar von "irgendwem/irgendwas" nicht toleriert ;)
Stimmt, du hast recht. Jetzt funktioniert es ohne Probleme [emoji106]

Danke für eure Hilfe [emoji120]