Namenloses einmaliges notify - ähnlich wie at bzw. sleep ?

Begonnen von Otto123, 02 August 2020, 00:34:32

Vorheriges Thema - Nächstes Thema

Otto123

Die Raw Definition nutze ich dank der Änderung von Rudi immer häufiger wie eine Art FHEM Script Umgebung. Also ein paar Zeilen FHEM Code einfach als Block reinkopieren und starten.
Das ist teilweise tricky: wenn ein Programm mit PopUp endet wird das "Script" jäh beendet. Aber mit einem sleep davor kann man es in den Hintergrund schicken und der Rest läuft weiter.
Wenn eine der Zeilen im Script nach der Ausführung einen Event erzeugt, würde ich gern einmalig darauf reagieren.
Beispiel:
set ... attrTemplate fragt einen Parameter ab.
Wenn das fertig ist (Eingabe erfolgt) wird durch setzen eines Attributes ein Event gefeuert (global:ATTR.SonosBridge.stateFormat.connected)
Auf den will ich reagieren und das Script abschließen. In dem Fall geht "sleep x; Befehl" schlecht weil die Zeit sehr unbestimmt ist.
Hier könnte man ein einmaliges notify gebrauchen. Ich behelfe mir jetzt mit einem notifý welches sich selbst wieder löscht:
define global_notify_1 notify global:ATTR.SonosBridge.stateFormat.connected "pm2 -s start sonos2mqtt";;delete $SELF

Ich habe zum Thema $SELF diese Diskussion gefunden.

Fragen:

  • Ist es legitim sich ein notify selbst löschen zu lassen? Vielleicht schlagen ja bei meiner Idee die "alten FHEM Hasen" die Hände über dem Kopf zusammen.
  • Wäre das nicht eine Idee so ein einmaliges notify zu implementieren. In der Art sleep regExp;Befehl
  • Oder gibt es eine Lösung die ich nicht gefunden habe?

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

rudolfkoenig

Antworten:
1. Wenn es funktioniert, habe ich kein Problem damit. Ist aber mAn nicht wirklich elegant.
2. Zitat https://fhem.de/commandref_modular.html#sleep:
Zitatsleep <sec|timespec|regex> [<id>] [quiet]
...
or as a regex (devicename or devicename:event)
3. Da ich das Problem (vmtl. mangels Beispiel) nicht verstanden habe, kann ich nichts dazu sagen.

Otto123

Hallo Rudi,

oh wie peinlich - gibts schon :)
Das es zu sleep gehören könnte war mein Gedanke beim letzten Satz im Schreiben. Hätte ich mal doch genauer in die Doku schauen sollen  ;D  :-[

Danke!

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

Otto123

Ich will mal noch ein Beispiel liefern:
Einmalige Reaktion auf einen Event.
Aus meinem uneleganten Konstrukt
define global_notify_1 notify global:ATTR.SonosBridge.stateFormat.connected "pm2 -s start sonos2mqtt";;delete $SELF
Wird dieses:
sleep global:ATTR.SonosBridge.stateFormat.connected;"pm2 -s start sonos2mqtt"
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