FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: MichaelT am 22 Dezember 2016, 12:09:29

Titel: [gelöst] Regex in notify nicht verstanden
Beitrag von: MichaelT am 22 Dezember 2016, 12:09:29
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
Titel: Antw:Regex in notify nicht verstanden
Beitrag von: CoolTux am 22 Dezember 2016, 12:12:25
Wie sieht denn das Event aus? Mach mal bitte den Eventmonitor an und schaue wie der Event aus sieht.
Titel: Antw:Regex in notify nicht verstanden
Beitrag von: MichaelT am 22 Dezember 2016, 12:14:36
Hi CoolTux,

danke für die schnelle Reaktion

notify OG_BAD_LiDuNotify OG_BAD_SW2_T01:Long11

Titel: Antw:Regex in notify nicht verstanden
Beitrag von: MichaelT am 22 Dezember 2016, 12:17:02
Für mich sieht das so aus, als wenn nur der Regex nach dem Pipe-Symbol genommen wird.

??
Titel: Antw:Regex in notify nicht verstanden
Beitrag von: CoolTux am 22 Dezember 2016, 12:17:41

OG_BAD_SW2_T01:(Long|Short).*


Also so wie Du es hast sollte es aber klappen.
Titel: Antw:Regex in notify nicht verstanden
Beitrag von: MichaelT am 22 Dezember 2016, 12:19:26
Ich hatte auch schon folgendes probiert

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

Auch dann wurde nur der "Long" detektiert.

Titel: Antw:Regex in notify nicht verstanden
Beitrag von: CoolTux am 22 Dezember 2016, 13:30:42
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.
Titel: Antw:Regex in notify nicht verstanden
Beitrag von: Wuppi68 am 22 Dezember 2016, 13:48:02
kommt nach dem Short auch noch eine Zahl im ev Monitor?

.* bedeutet alles aber nicht nichts
Titel: Antw:Regex in notify nicht verstanden
Beitrag von: CoolTux am 22 Dezember 2016, 13:52:29
ja kommt noch eine Zahl.

bei Short1

würde ein Short.* nicht zuschlagen, oder?
Titel: Antw:Regex in notify nicht verstanden
Beitrag von: Wuppi68 am 22 Dezember 2016, 13:58:01
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
Titel: Antw:Regex in notify nicht verstanden
Beitrag von: CoolTux am 22 Dezember 2016, 14:16:07
Hast Recht, habe gerade noch mal geschaut
Zitat
Das Sternzeichen steht ansonsten für kein, ein oder mehrmaliges Vorkommen des davorstehenden Zeichens/Subpatterns.
Titel: Antw:Regex in notify nicht verstanden
Beitrag von: MichaelT am 22 Dezember 2016, 16:00:19
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.
Titel: Antw:Regex in notify nicht verstanden
Beitrag von: MichaelT am 22 Dezember 2016, 17:49:26
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



Titel: Antw:Regex in notify nicht verstanden
Beitrag von: CoolTux am 22 Dezember 2016, 17:54:42
Bei deinem Trigger Befehl fehlt zwischen : und 22 ein Leerzeichen
Titel: Antw:Regex in notify nicht verstanden
Beitrag von: budy am 22 Dezember 2016, 18:00:45
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.
Titel: Antw:Regex in notify nicht verstanden
Beitrag von: MichaelT am 22 Dezember 2016, 18:19:52
Oh, oh

ich habe meinen Fehler gefunden und Euch wahrscheinlich mit meinem ganzen geschreibsel irritiert.

ich habe immer
trigger <notify> <device>:<signal>
geschrieben.

Aber durch den Hinweis von CoolTux bin ich erst drauf gekommen, dass es
trigger <device> <signal>
heißen muss.

Blöd von mir, sorry und trotzdem vielen Dank.

schäm!
Michael