FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: moko am 29 April 2023, 15:24:01

Titel: In notify auf Ergebnis der RegEx zugreifen
Beitrag von: moko am 29 April 2023, 15:24:01
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?
Titel: Aw: In notify auf Ergebnis der RegEx zugreifen
Beitrag von: TomLee am 29 April 2023, 16:35:18
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");}
Titel: Aw: In notify auf Ergebnis der RegEx zugreifen
Beitrag von: CoolTux am 29 April 2023, 17:13:53
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)
Titel: Aw: In notify auf Ergebnis der RegEx zugreifen
Beitrag von: TomLee am 29 April 2023, 17:37:00
Stimmt, etwas hatte ich zuvor schon getestet, aber nur mit einem Zeichen nach EnO_Sensor_  ::)
Habs bei meinem Vorschlag korrigiert.
Titel: Aw: In notify auf Ergebnis der RegEx zugreifen
Beitrag von: moko am 30 April 2023, 00:02:41
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.