[gelöst] Regex in notify nicht verstanden

Begonnen von MichaelT, 22 Dezember 2016, 12:09:29

Vorheriges Thema - Nächstes Thema

MichaelT

Hallo Zusammen,

eventuell kann mir ja einer auf die Sprünge helfen.

habe ein notify wie folgt definiert
OG_BAD_SW2_T01:(Long|Short).* {  fhem "setreading OG_BAD_LiDuNotify lastEvent $EVENT" }

Wenn ich nur
trigger OG_BAD_LiDuNotify OG_BAD_SW2_T01:Long11
auslöse, reagiert der notify nicht.

wenn ich aber
leer|OG_BAD_SW2_T01:(Long|Short).* {  fhem "setreading OG_BAD_LiDuNotify lastEvent $EVENT" }
verwende, reagiert notify richtig.

Aber warum???

Das setreading ist nur debugging!

Bin gerade wohl blind 8)


Danke schon mal
Michael
Großes Mischmasch aus HM, Philips, WLAN und Eigenprojekte.
ABER alles mit FHEM.

CoolTux

Wie sieht denn das Event aus? Mach mal bitte den Eventmonitor an und schaue wie der Event aus sieht.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

MichaelT

Hi CoolTux,

danke für die schnelle Reaktion

notify OG_BAD_LiDuNotify OG_BAD_SW2_T01:Long11

Großes Mischmasch aus HM, Philips, WLAN und Eigenprojekte.
ABER alles mit FHEM.

MichaelT

Für mich sieht das so aus, als wenn nur der Regex nach dem Pipe-Symbol genommen wird.

??
Großes Mischmasch aus HM, Philips, WLAN und Eigenprojekte.
ABER alles mit FHEM.

CoolTux


OG_BAD_SW2_T01:(Long|Short).*


Also so wie Du es hast sollte es aber klappen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

MichaelT

Ich hatte auch schon folgendes probiert

OG_BAD_SW2_T01:Short.*|OG_BAD_SW2_T01:Long.* { ... }

Auch dann wurde nur der "Long" detektiert.

Großes Mischmasch aus HM, Philips, WLAN und Eigenprojekte.
ABER alles mit FHEM.

CoolTux

Das einzige was mir ein fällt.

(Long|Short).*

Bei der Form würden nur 2 stellige Zahlen nach dem Long oder Short getriggert werden. Eventuell ist das das Problem.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Wuppi68

kommt nach dem Short auch noch eine Zahl im ev Monitor?

.* bedeutet alles aber nicht nichts
FHEM unter Proxmox als VM

CoolTux

ja kommt noch eine Zahl.

bei Short1

würde ein Short.* nicht zuschlagen, oder?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Wuppi68

Zitat von: CoolTux am 22 Dezember 2016, 13:52:29
ja kommt noch eine Zahl.

bei Short1

würde ein Short.* nicht zuschlagen, oder?

Short1 = Short.*
Short1 = Short.
Short99 = Short.*
Short12ganzdummertext23 = Short.*
Short  != Short.*

. und .* finde ich echt doof in Perl gelöst

oder die Regex aufweichen :-)

~/(Short|Long)/  aus dem Kopf für Vorkommen von Short oder Long im Event
FHEM unter Proxmox als VM

CoolTux

Hast Recht, habe gerade noch mal geschaut
Zitat
Das Sternzeichen steht ansonsten für kein, ein oder mehrmaliges Vorkommen des davorstehenden Zeichens/Subpatterns.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

MichaelT

Hallo,

Danke für Eure Unterstûtzung.

Was mich verwundert ist, dass anscheinend nur der zweite regex ausgewertet wird.
Wenn ich, wie in post1, ein

irgendwas|OG_BAD_SW2_T01:(Long|Short).*

schreibe, wird ja short und long ausgewertet.
Großes Mischmasch aus HM, Philips, WLAN und Eigenprojekte.
ABER alles mit FHEM.

MichaelT

Hallo nochmal,

gibt es noch weitere Ideen, was ich falsch gemacht haben könnte.
Ich habe jetzt nochmals einen neuen Notify definiert

Internals:
   CFGFN
   DEF        irgendwas|testsig:.* setreading Test last $EVENT
   NAME       Test
   NR         4800
   NTFY_ORDER 50-Test
   REGEXP     irgendwas|testsig:.*
   STATE      2016-12-22 17:40:02
   TYPE       notify
   Readings:
     2016-12-22 17:40:02   last            testsig:22
     2016-12-22 17:39:45   state           active
Attributes:
   userReadings last


Wenn ich bei REGEXP das irgendwas| weg lasse, wird das Notify bei
trigger Test testsig:22
nicht mehr getriggert. Mit irgendwas| funktiniert es.

Besteht die Möglichkeit, das durch Fehler in anderen Modulen, z.B. 99_myXY.pm dieses Verhalten nur ein Folgefehler ist?

Gruß
Michael



Großes Mischmasch aus HM, Philips, WLAN und Eigenprojekte.
ABER alles mit FHEM.

CoolTux

Bei deinem Trigger Befehl fehlt zwischen : und 22 ein Leerzeichen
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

budy

Außerdem müssen sog. capture groups bei regex in () stehen. Wenn du also auf irgendwas oder testsig testen willst dann musst du

(irgendwas|testsig)

schreiben.
Debian stretch, FHEM 5.9.
HM-CC-RT-DN, HM-ES-PMSw1-Pl, HM-LC-Dim1TPBU-FM, HMUARTLGW, HMLAN, HM-SEC-KEY, HM-SEC-RHS, HM-SEC-SC-2, HM-SEC-SCo, HM-SEC-SD-2, HM-OU-CFM-TW, div. HUEs, Wifilight, Ring Video Pro