Notify Regexp

Begonnen von lbijl, 08 Dezember 2020, 12:49:23

Vorheriges Thema - Nächstes Thema

Jamo

Zitat von: Nobbynews am 15 Juli 2026, 12:49:20Hallo zusammen,
Was macht FHEM da anders bzw. woran liegt es?

Norbert

Hallo Norbert,
folgendes sollte funktionieren:
Helligkeit:.[2][2-9]Es liegt am ^ und am $ , das passt irgendwie nicht fuer fhem, frag mal ChatGPT.
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee2MQTT, Conbee III, FB7690, Signal, Alexa (fhem-lazy), Geotracking, LaCrosse JeeLink, LoRaWan (TTN / Chirpstack), Sonos, ESPresence, HomeAssistant via MQTT, Meshtastic

rudolfkoenig

ZitatWas macht FHEM da anders bzw. woran liegt es?
Vermutlich an den Testdaten.
Das Event ist "Helligkeit: 25", im Regexp steht Punkt fuer das Leerzeichen nach Helligkeit:
Fuer trigger ist alles nach Geratename ein Event.
Ob man trigger richtig verwendet, kann man mit dem Event monitor pruefen, indem man es mit den "echten" Events vergleicht.
Wie schon vermerkt wurde, ^ steht fuer Anfang der Zeichenkette, $ fuers Ende, man sollte sie nicht in der Mitte des Regexps einbauen.

Nobbynews

#17
Zitat von: Jamo am 15 Juli 2026, 14:39:03folgendes sollte funktionieren:
Helligkeit:.[2][2-9]Es liegt am ^ und am $ , das passt irgendwie nicht fuer fhem, frag mal ChatGPT.
Nein, tut es nicht. Das triggert lt. regexp101 auch auf 329, 423 etc.
Über die Funktion von ^ und $ bin ich mir auch ohne ChatGPT im Klaren.

Edit: Unter FHEM funktioniert das korrekt.

Nobbynews

Zitat von: rudolfkoenig am 15 Juli 2026, 15:11:12Vermutlich an den Testdaten.
Das Event ist "Helligkeit: 25", im Regexp steht Punkt fuer das Leerzeichen nach Helligkeit:
Vom gleichen device habe ich schon seit Ewigkeiten zuverlässig dieses notify am Laufen:
<device>:Helligkeit:.[3-6]$Am Punkt kann es also nicht liegen.
Auch Helligkeit:(^.[2][2-9]$) triggert nicht.
Hier mal ein original Event:
2026-07-15 15:40:20 ZWave ZWave_BWM_Garage_Lux Helligkeit: 2000
Von daher sollte es doch meiner Meinung nach korrekt sein.

Eigentlich war meine Frage nur, warum es bei regexp101 funktioniert, im notify von FHEM aber nicht.

Norbert

Nobbynews

Zitat von: rudolfkoenig am 15 Juli 2026, 15:11:12man sollte sie nicht in der Mitte des Regexps einbauen.
Ok, das könnte dann für den Beginn der Zeichenkette zusammen mit dem führenden '.' eine Erklärung sein.

Nobbynews

Kann es sein, das die Ursache hierin zu suchen ist:
aus dem Wiki:
ZitatDas Suchmuster wird notify-intern um das Zeichen ^ (beginnt mit) und das Zeichen $ (endet mit) ergänzt[3]. Deshalb darf das Suchmuster nicht mit einem üblichen Regulären Ausdruck, wie er in Perl[4] verwendet wird, gleichgesetzt werden, da die Ergänzung zu einem grundsätzlich unterschiedlichen Verhalten führt, siehe nachstehendes Beispiel.

Damian

Zitat von: Nobbynews am 15 Juli 2026, 16:22:10Kann es sein, das die Ursache hierin zu suchen ist:
aus dem Wiki:
ZitatDas Suchmuster wird notify-intern um das Zeichen ^ (beginnt mit) und das Zeichen $ (endet mit) ergänzt[3]. Deshalb darf das Suchmuster nicht mit einem üblichen Regulären Ausdruck, wie er in Perl[4] verwendet wird, gleichgesetzt werden, da die Ergänzung zu einem grundsätzlich unterschiedlichen Verhalten führt, siehe nachstehendes Beispiel.

So ist es.

Deine regex musst du beim notify gedanklich mit ^ am Anfang und $ am Ende ergänzen - beim DOIF braucht man das nicht, weil es nicht die beiden Zeichen dranhängt. Zahlenvergleiche würde ich aber nicht mit regex, sondern numerisch mit < > vergleichen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF