Hallo, ich zerbreche mir jetzt seit 2,5 Stunden den Kopf:
Wie kann ich alle Nicht-Dummies greifen?
TuerFensterKontakte
TuerFensterKontakt.WZ.FensterL
TuerFensterKontakt.WZ.FensterL.Dummy
Folgende Idee funktioniert nicht:
TuerFensterKontakt[.].*(!Dummy).*
Dazu habe ich folgende Fragen:
- Gibt es ein Exclude?
- Wie kann ich einen Punkt escapen?
- Gelten grundsätzlich die allgemeinen RegEx Regeln?
Gute Nacht
Ron
Hi, ich denke deine Fragen kann man leicht durch etwas Internetrecherche lösen...
Aber trotzdem versuche ich dir mal zu helfen:
1. Ja, sogar mehrere.
(?!Dummy) # nur dann erfolgreich, wenn Dummy nicht folgt
(?<=Dummy) # nur dann erfolgreich, wenn Dummy nicht vorangeht
# und man kann das auch über Zeichenklassen lösen
[^D][^u][^m][^m][^y]
2. Mit escape. Eckige klammern werden als Zeichenklassen interpretiert. Also [abc] a oder b oder c\.
3. Es gelten zumindest die allgemeinen "Perl" RexExp Regeln.
Gruß
Hallo Phill,
danke, dass du trotz dem versuchst, mir zu helfen ;)
1. das Exluden funktioniert nicht bei meinem o.g. Beispiel. Bsp-Notify TuerFensterKontakt[.].*(?!Dummy):(closed|open|.*ACK.*)
lässt auch alle ".Dummy" durch:
TuerFensterKontakt.Kueche.Fenster.Dummy:closed
TuerFensterKontakt.Kueche.Fenster:closed
2. das Excapen mit Backslash funktioniert auch nicht. Ich muss den Umweg über [] gehen.
Noch irgendwelche Ideen?
Das sollte gehen:
(?!.*Dummy)TuerFensterKontakt.*:(closed|open|.*ACK.*)
MfG
Hallo Ralf, danke Dir. Ich werde heute Abend das Ergebnis sehen.
Wenn wir bei der Syntax sind, kannst Du mir bitte sagen, wann man ein ":" verwendet und wann nicht?
Im Eventmonitor taucht kein ":" auf und trotzdem muss ich scheinbar manchmal im notify damit arbeiten!?
@derron
Ich würde mich als FHEM-Anfänger bezeichnen. Ist schon recht heftig, was zu beachten ist. Aber FHEM ist geil ...
Deine Fragen beantwortet die FHEM Referenz:
<Suchmuster> ist entweder der Name des auslösenden ("triggernden") Gerätes oder die Kombination aus Gerät und auslösendem Ereignis (Event) Gerätename:Event.
MfG
Ralf
OK, klingt einleuchtend. Man kann also nicht copy&paste aus dem EventMonitor machen.
Ich habe noch ein paar Fragen zum besseren Programmierstil:
- Ist es eigentlich performanter, mehrere Notifies zu verwenden, oder lieber alles (unübersichtlich) in einem * Notify per Code abzufackeln?
- Und ist es aus Performancesicht nicht nachteilig, Regex zu nutzen?
if (TFK =~ m"open")
anstelle von
if ((TFK eq "open") || (TFK eq "open (to XYZ)"))