In notify auf Ergebnis der RegEx zugreifen

Begonnen von moko, 29 April 2023, 15:24:01

Vorheriges Thema - Nächstes Thema

moko

Sorry, ist vermutlich tatsächlich eine ziemliche Anfängerfrage, aber ich hänge fest und finde nichts im Forum. Mein Problem ist eigentlich recht einfach: Ich habe viele Fenstersensoren, die alle einem Namensschema folgen und entsprechend (bis auf das Prefix) unterschiedlich benannte KNX-Switches. Ich möchte den Status der Sensoren mit den den KNX-Switches jetzt mit einem einzelnen notify lösen, statt für jeden Sensor einen separaten zu machen. Das habe ich hierfür:

EnO_Sensor_([0-9a-zA-Z_]*).(open|closed) IF ([$NAME] eq "closed") (set KNX_$1 off) ELSE (set KNX_$1 on)
Er löst sauber aus, bringt dann aber einen Fehler. Ich hätte gedacht, dass ich mit $1 auf das Ergebnis der Regex zugreifen kann. Geht das hier im notify gar nicht oder habe ich einen Syntaxfehler?

TomLee

#1
ZitatIch hätte gedacht, dass ich mit $1 auf das Ergebnis der Regex zugreifen kann.
Ich meine das geht nicht.

So könnte man es angehen (ungetestet), nicht auszuschliessen das ich was übersehe:

EnO_Sensor_([0-9a-zA-Z_].*):open|closed {
$NAME=~m,EnO_Sensor_([0-9a-zA-Z_].*),;
return fhem("set KNX_$1 off") if $EVTPART0 eq 'closed';
return fhem("set KNX_$1 on");}

CoolTux

Ich würde behaupten das die RegEx nicht geht.

EnO_Sensor_([0-9a-zA-Z_]*).(open|closed)
So sollte es aber gehen

EnO_Sensor_([0-9a-zA-Z_].*).(open|closed)
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

TomLee

Stimmt, etwas hatte ich zuvor schon getestet, aber nur mit einem Zeichen nach EnO_Sensor_  ::)
Habs bei meinem Vorschlag korrigiert.

moko

Danke ihr beiden, das war der richtige Hinweis, @TomLee.  :)
Es geht aber auch ohne Punkt, die Sensoren heißen bei mir z.B. EnO_Sensor_UG_WC_Fenster. Ich wollte kein .*, damit er nicht auf alles matcht und habe deshalb nur die Zeichen als Gruppe zusammengefasst, die da benutzt werden. Der Stern sorgt aber ja dafür, dass sie beliebig oft hintereinander stehen dürfen.