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
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

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
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

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
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz