Hallo Leute,
wie kann ich folgende Events durch eine RegEx unterscheiden, damit das Notify nicht 3x hintereinander ausgelöst wird?
Hinweis: disabledAfterTrigger ist keine Option!
RegEx für das Notify ist vEnv_.*_T:.*
2021.01.16 15:37:42.261 3 : CUL_HM set vEnv_WZ_T virtTemp 21.5
2021-01-16 15:37:42.307 Nextion TD_fake cmdSent: wz_detail.va_tem_wz_ist.txt="temperature: 21.5"
2021-01-16 15:37:42.307 Nextion TD_fake cmdResult: empty
2021-01-16 15:37:42.334 Nextion TD_fake cmdSent: page
2021-01-16 15:37:42.334 Nextion TD_fake cmdResult: empty
2021-01-16 15:37:42.337 CUL_HM vEnv_WZ_T temperature: 21.5 > unerwünschtes (Trigger-)Event!
2021-01-16 15:37:42.383 Nextion TD_fake cmdSent: wz_detail.va_tem_wz_ist.txt="set_virtTemp 21.5"
2021-01-16 15:37:42.383 Nextion TD_fake cmdResult: empty
2021-01-16 15:37:42.409 Nextion TD_fake cmdSent: page
2021-01-16 15:37:42.409 Nextion TD_fake cmdResult: empty
2021-01-16 15:37:42.413 CUL_HM vEnv_WZ_T set_virtTemp 21.5 > unerwünschtes (Trigger-)Event!
2021-01-16 15:37:42.458 Nextion TD_fake cmdSent: wz_detail.va_tem_wz_ist.txt="21.5"
2021-01-16 15:37:42.458 Nextion TD_fake cmdResult: empty
2021-01-16 15:37:42.484 Nextion TD_fake cmdSent: page
2021-01-16 15:37:42.484 Nextion TD_fake cmdResult: empty
2021-01-16 15:37:42.487 CUL_HM vEnv_WZ_T 21.5 > gewünschtes (Trigger-)Event!
2021-01-16 15:37:42.532 Nextion TD_fake cmdSent: wz
Das Problem ist auch das die Events einmal so aussehen:
2021-01-16 15:37:42.487 CUL_HM vEnv_WZ_T 21.5
aber auch so (wenn Temperatur ohne Nachkommastelle):
2021-01-16 15:37:42.487 CUL_HM vEnv_WZ_T 21
Wie kann ich das ganze so anpassen, da es nur noch auf den gewünschten Fall "matcht"?
Gruß Oli
Nicht selbst ausprobiert.
vEnv_.*_T:virt.*
Ja funktioniert wohl.
Aber virtTemp will ich ja nicht...
Nur diese Zeile soll das Notify triggern, die anderen nicht(!):
2021-01-16 15:37:42.487 CUL_HM vEnv_WZ_T 21.5
Dann nimm doch den Eventmonitor (https://wiki.fhem.de/wiki/Event_monitor)und lass es anlegen!
So wird es funktionieren:
vEnv_WZ_T:temperature:.*
Dein Wunschkandidate wird schwieriger :) könnte aber so funktionieren - warum (https://regex101.com/r/5jZ5Ww/1)?:
vEnv_WZ_T:[0-9.]+
Gruß Otto
So schlau war ich schon. Aber das Ergebnis war mir eigentlich schon vorher klar....
Ergebnisse mit Hilfe des Eventmonitors:
2021-01-16 16:34:13.992 CUL_HM vEnv_SZ_T temperature: 18 >> define vEnv_SZ_T_notify_1 notify vEnv_SZ_T:temperature:.* {}
2021-01-16 16:34:14.078 CUL_HM vEnv_SZ_T set_virtTemp 18 >> define vEnv_SZ_T_notify_1 notify vEnv_SZ_T:set_virtTemp.* {}
2021-01-16 16:34:14.164 CUL_HM vEnv_SZ_T 18 >> define vEnv_SZ_T_notify_1 notify vEnv_SZ_T:.* {}
RegEx 3 "matcht" eben auf alle 3 Fälle. Das ist ja das Problem. Aber deinen Vorschlag werde ich gleich mal testen!
irgendwas scheint nicht zu passen.
mit
vEnv_WZ_T:[0-9.]+
es wird überhaupt nicht mehr getriggert....
edit: evlt. denkfehler. melde mich gleich wieder...
OK. Paßt! > Copy&Paste-Fehler.
Danke Otto! :D
Also das hier sollte auch gehen!
define vEnv_SZ_T_notify_1 notify vEnv_SZ_T:temperature:.* {}
Das temperature reading wird nur einmal getriggert!
Die Variante jetzt triggert quasi auf state, das ist eigentlich nicht ganz unproblematisch, da im state alles mögliche reinflattert.
hab mich vielleicht unverständlich ausgedrückt:
Ich benötige den Temperatur-Wert in dieser Form damit er anschließend per Befehl an ein Touchdisplay übertragen wird.
Deshalb muß ich (genau) dieses Event per Notify auswerten.
Aus
2021-01-16 15:37:42.487 CUL_HM vEnv_WZ_T 21.5
wird dann
2021-01-16 15:37:42.458 Nextion TD_fake cmdSent: wz_detail.va_tem_wz_ist.txt="21.5"
Ok vielleicht weißt Du es einfach nicht besser :)
vEnv_WZ_T temperature: 21.5
liefert Die einen
$EVENT temperature: 21.5
$EVTPART0 temperature:
$EVTPART1 21.5
vEnv_WZ_T 21.5
liefert Die einen
$EVENT 21.5
$EVTPART0 21.5
Vielleicht also nur ein Denkfehler bei der Weiterverarbeitung?