Notify löst mehrfach hintereinander aus - RegEx zu ungenau

Begonnen von hmtec99, 16 Januar 2021, 15:45:46

Vorheriges Thema - Nächstes Thema

hmtec99

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

jhohmann

Raspberry Pi 4 - bookworm / EnOcean - Rollo+Licht, deCONZ - Licht+Sensoren, ZWave - CO Messung, HMCCU mit piVCCU - Heizung+Rollo
plus dovecot, minidlna

hmtec99

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

Otto123

#3
Dann nimm doch den Eventmonitor und lass es anlegen!

So wird es funktionieren:
vEnv_WZ_T:temperature:.*

Dein Wunschkandidate wird schwieriger :) könnte aber so funktionieren - warum?:
vEnv_WZ_T:[0-9.]+

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle

aktives Mitglied des FHEM e.V. (Technik)

hmtec99

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!

hmtec99

irgendwas scheint nicht zu passen.

mit

vEnv_WZ_T:[0-9.]+

es wird überhaupt nicht mehr getriggert....


edit: evlt. denkfehler. melde mich gleich wieder...

hmtec99


Otto123

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.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle

aktives Mitglied des FHEM e.V. (Technik)

hmtec99

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"



Otto123

#9
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?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle

aktives Mitglied des FHEM e.V. (Technik)