FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: NeuFehm am 19 Mai 2022, 07:27:43

Titel: Bin für REGEX und Notify zu blöd
Beitrag von: NeuFehm am 19 Mai 2022, 07:27:43
Ich habe im Eventmonitor folgendes Event:
2022-05-19 07:22:28 MQTT2_DEVICE MQTT2_shellyswitch25_C45BBE758861_CH2 input1: 1
Und in der DEF meines notifys steht: MQTT2_DEVICE MQTT2_shellyswitch25_C45BBE758861_CH2 input1: 1.*  set lamp1  toggle

Was mache ich falsch, denn es passiert nix...
LG Mirko
Titel: Antw:Bin für REGEX und Notify zu blöd
Beitrag von: NeuFehm am 19 Mai 2022, 07:38:03
es funktionierter mit probieren:
MQTT2_shellyswitch25_C45BBE758861_CH2:input1:.1.*
Ist das aber so korrekt? Habe das Leerzeichen quasi mit einem "." ersetzt und DEVICE "MQTT2_shellyswitch25_C45BBE758861_CH2" mit erinerm ":" vom "Event" getrennt....
Ist das so korrekt oder hätte ich irgendetwas besser machen müssen?
Titel: Antw:Bin für REGEX und Notify zu blöd
Beitrag von: Stelaku am 19 Mai 2022, 08:09:11
Ich helfe mir da immer mit der Funktion Create/ModifyDevice oben rechts im Event Monitor.
Einfach die kpl. Zeile des Event im Event Monitor markieren und dann auf Create/ModifyDevice klicken.
Und schon bekommts Du das passende regex.

Gruß Stephan
Titel: Antw:Bin für REGEX und Notify zu blöd
Beitrag von: betateilchen am 19 Mai 2022, 09:59:43
Zitat von: NeuFehm am 19 Mai 2022, 07:38:03
oder hätte ich irgendetwas besser machen müssen?

Diese Frage wurde ja schon mit dem Ratschlag von Stelaku beantwortet ;)

Zitat von: NeuFehm am 19 Mai 2022, 07:38:03
Ist das aber so korrekt? Habe das Leerzeichen quasi mit einem "." ersetzt

Hauptsache Du weisst, wofür der Punkt da überhaupt steht?
Der Punkt besagt in der Syntax der regexp, dass zwischen "input1:" und "1" noch ein beliebiges Zeichen stehen muss, damit die regexp greift. In Deinem Fall kommt da eben ein "zufällig" ein Leerzeichen, das die regexp dann erfüllt.

Innerhalb der Suche in einer regexp solltest Du ein Leerzeichen immer mit \s angeben, weil es sich um ein whitespace handelt.

https://regexone.com/lesson/whitespaces

Im vorliegenden Beispiel ist es außerdem so, dass das Leerzeichen im DEF Deines notify dazu führt, dass FHEM beim Anlegen des notify anhand des Leerzeichens in verschieden Parameter für das notify selbst trennt. Im Prinzip hattest Du also schon beim Anlegen des notify einen Syntaxfehler gemacht.

Zitat von: NeuFehm am 19 Mai 2022, 07:38:03
es funktioniert mit probieren:

Es hätte auch mit etwas mehr Verständnis für regexp funktioniert, aber das lernst Du mit der Zeit.

In der commandref zu notify ist das eigentlich alles gut beschrieben.