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
Wie sieht denn das Event aus? Mach mal bitte den Eventmonitor an und schaue wie der Event aus sieht.
Hi CoolTux,
danke für die schnelle Reaktion
notify OG_BAD_LiDuNotify OG_BAD_SW2_T01:Long11
Für mich sieht das so aus, als wenn nur der Regex nach dem Pipe-Symbol genommen wird.
??
OG_BAD_SW2_T01:(Long|Short).*
Also so wie Du es hast sollte es aber klappen.
Ich hatte auch schon folgendes probiert
OG_BAD_SW2_T01:Short.*|OG_BAD_SW2_T01:Long.* { ... }
Auch dann wurde nur der "Long" detektiert.
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.
kommt nach dem Short auch noch eine Zahl im ev Monitor?
.* bedeutet alles aber nicht nichts
ja kommt noch eine Zahl.
bei Short1
würde ein Short.* nicht zuschlagen, oder?
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
Hast Recht, habe gerade noch mal geschaut
Zitat
Das Sternzeichen steht ansonsten für kein, ein oder mehrmaliges Vorkommen des davorstehenden Zeichens/Subpatterns.
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.
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
Bei deinem Trigger Befehl fehlt zwischen : und 22 ein Leerzeichen
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.
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