FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: hmtec99 am 16 Januar 2021, 15:45:46

Titel: Notify löst mehrfach hintereinander aus - RegEx zu ungenau
Beitrag von: hmtec99 am 16 Januar 2021, 15:45:46
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
Titel: Antw:Notify löst mehrfach hintereinander aus - RegEx zu ungenau
Beitrag von: jhohmann am 16 Januar 2021, 15:52:09
Nicht selbst ausprobiert.
vEnv_.*_T:virt.*
Titel: Antw:Notify löst mehrfach hintereinander aus - RegEx zu ungenau
Beitrag von: hmtec99 am 16 Januar 2021, 15:55:07
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
Titel: Antw:Notify löst mehrfach hintereinander aus - RegEx zu ungenau
Beitrag von: Otto123 am 16 Januar 2021, 16:08:38
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
Titel: Antw:Notify löst mehrfach hintereinander aus - RegEx zu ungenau
Beitrag von: hmtec99 am 16 Januar 2021, 16:40:32
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!
Titel: Antw:Notify löst mehrfach hintereinander aus - RegEx zu ungenau
Beitrag von: hmtec99 am 16 Januar 2021, 16:47:27
irgendwas scheint nicht zu passen.

mit

vEnv_WZ_T:[0-9.]+

es wird überhaupt nicht mehr getriggert....


edit: evlt. denkfehler. melde mich gleich wieder...
Titel: Antw:Notify löst mehrfach hintereinander aus - RegEx zu ungenau
Beitrag von: hmtec99 am 16 Januar 2021, 16:51:48
OK. Paßt! > Copy&Paste-Fehler.

Danke Otto!  :D
Titel: Antw:Notify löst mehrfach hintereinander aus - RegEx zu ungenau
Beitrag von: Otto123 am 16 Januar 2021, 17:40:23
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.
Titel: Antw:Notify löst mehrfach hintereinander aus - RegEx zu ungenau
Beitrag von: hmtec99 am 16 Januar 2021, 18:04:59
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"


Titel: Antw:Notify löst mehrfach hintereinander aus - RegEx zu ungenau
Beitrag von: Otto123 am 16 Januar 2021, 18:28:21
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?