notify: Bitte um Syntax-Hilfe!

Begonnen von bgewehr, 01 Januar 2015, 21:08:03

Vorheriges Thema - Nächstes Thema

bgewehr

Ich möchte bestimmten devices einen live-timer hinzufügen, der anzeigt, wie lange der aktuelle Status schon aktiv ist.

Dieses Beispiel


define n_FBCallmonitor_timer notify \
FBCallmonitor:call|FBCallmonitor:ring|FBCallmonitor:connect|FBCallmonitor:disconnect \
{if (ReadingsVal($NAME,'event','') eq 'disconnect') \
{fhem 'delete a_'.$NAME.'_timer';;} \
else \
{fhem 'setreading '.$NAME.' duration_live 0';;\
fhem 'define a_'.$NAME.'_timer at +*00:00:01 {fhem "setreading '.$NAME.' duration_live ".eval(ReadingsVal("'.$NAME.'","duration_live","0") + 1)}';;\
fhem 'attr a_'.$NAME.'_timer room System';;}}


funktioniert einwandfrei. Nun wollte ich das Ganze optimieren und für die häufigere Verwendung etwas erleichtern. Da passiert leider gar nichts mehr - ich finde aber den Fehler nicht. Was kann ich tun?


define n_FBCallmonitor_timer notify FBCallmonitor:call|FBCallmonitor:ring|FBCallmonitor:connect|FBCallmonitor:disconnect
{if (ReadingsVal('$NAME','event','') eq 'disconnect')
{fhem 'attr a_'.$NAME.'_timer' disable 1';;}
else
{fhem 'setreading '.$NAME.' duration_live 0';;
fhem 'delete a_'.$NAME.'_timer';;
fhem 'define a_'.$NAME.'_timer at +*00:00:01 {fhem "setreading '.$NAME.' duration_live ".eval(ReadingsVal("'.$NAME.'","duration_live","0") + 1)}';;
fhem 'attr a_'.$NAME.'_timer room System';;}}


Es passiert offensichtlich gar nichts!
FritzBox 7590, Synology DS216+II mit Docker
Docker: FHEM mit hmlan, Homebridge, node-red, mosquitto, ems-collector für Buderus EMS mit AVR Net-IO
Gartenwasser über MQTT auf R/Pi A+
Volkszaehler.org auf R/Pi 2B mit Pi_Erweiterung
Raspberrymatic auf R/Pi 4B mit RPI-RF-MOD u. CUL868

marvin78

Das mit $NAME passt schon. Das steht dir im notify zur Verfügung. Allerdings machst du es unnötig kompliziert:

define n_FBCallmonitor_timer notify FBCallmonitor:.*(call|ring|connect|disconnect)
{if ($EVENT =~/event:.disconnect/)
{fhem 'attr a_'.$NAME.'_timer' disable 1';;}
else
{fhem 'setreading '.$NAME.' duration_live 0';;
fhem 'delete a_'.$NAME.'_timer';;
fhem 'define a_'.$NAME.'_timer at +*00:00:01 {fhem "setreading '.$NAME.' duration_live ".eval(ReadingsVal("'.$NAME.'","duration_live","0") + 1)}';;
fhem 'attr a_'.$NAME.'_timer room System';;}}


So ähnlich funktioniert es bei mir.

bgewehr

Dank Dir! Leider ist im $EVENT kein Hinweis auf disconnect enthalten, es wird immer nur die call_id gemeldet.

define n_FBCallmonitor_timer notify
FBCallmonitor:call|FBCallmonitor:ring|FBCallmonitor:connect|FBCallmonitor:disconnect
{if (ReadingsVal($NAME,'event','') eq 'disconnect')
{fhem 'delete a_'.$NAME.'_timer';;}
else
{fhem 'setreading '.$NAME.' duration_live 0';;
fhem 'define a_'.$NAME.'_timer at +*00:00:01 {fhem "setreading '.$NAME.' duration_live ".eval(ReadingsVal("'.$NAME.'","duration_live","0") + 1)}';;
fhem 'attr a_'.$NAME.'_timer room System';;}}


Nun funktioniert es auch bei mir.
FritzBox 7590, Synology DS216+II mit Docker
Docker: FHEM mit hmlan, Homebridge, node-red, mosquitto, ems-collector für Buderus EMS mit AVR Net-IO
Gartenwasser über MQTT auf R/Pi A+
Volkszaehler.org auf R/Pi 2B mit Pi_Erweiterung
Raspberrymatic auf R/Pi 4B mit RPI-RF-MOD u. CUL868

marvin78

Hast du "event" eventuell per event-on-...-reading ausgeschlossen?

Der Code oben funktkioniert bei mir in meiner Version einwandfrei. Ich kann auf alle events per

if ($EVENT =~/event:.EVENTNAME/

reagieren.

bgewehr

Das war der richtige Tipp, nur andersherum, ich musste erst event_on_change reading event setzen, damit auch ein event generiert wird. Vielen Dank!
FritzBox 7590, Synology DS216+II mit Docker
Docker: FHEM mit hmlan, Homebridge, node-red, mosquitto, ems-collector für Buderus EMS mit AVR Net-IO
Gartenwasser über MQTT auf R/Pi A+
Volkszaehler.org auf R/Pi 2B mit Pi_Erweiterung
Raspberrymatic auf R/Pi 4B mit RPI-RF-MOD u. CUL868

bgewehr

Noch anders: Ich hatte - warum auch immer - mal verbose 1 gesetzt, da wurde nur noch die call_id gemeldet... gelöscht, gelöst!
FritzBox 7590, Synology DS216+II mit Docker
Docker: FHEM mit hmlan, Homebridge, node-red, mosquitto, ems-collector für Buderus EMS mit AVR Net-IO
Gartenwasser über MQTT auf R/Pi A+
Volkszaehler.org auf R/Pi 2B mit Pi_Erweiterung
Raspberrymatic auf R/Pi 4B mit RPI-RF-MOD u. CUL868