Bin für REGEX und Notify zu blöd

Begonnen von NeuFehm, 19 Mai 2022, 07:27:43

Vorheriges Thema - Nächstes Thema

NeuFehm

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
Raspberry Pi B+
RS 485 Schnittstellen: DIGITUS DA-70157, LINKSPTITE RS485/GPIO Shield for Raspberry Pi
RS485 Geräte: Ultraschallsensor für Zisternenfüllstand (Eigenbau), 4x8 Relais-M-Mastermodule (Eigenbau), 6 T-Module (Schalter und 3 analoge Eingänge) (Eigenbau)
sonstige Hardware: 2 Relay Modul

NeuFehm

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?
Raspberry Pi B+
RS 485 Schnittstellen: DIGITUS DA-70157, LINKSPTITE RS485/GPIO Shield for Raspberry Pi
RS485 Geräte: Ultraschallsensor für Zisternenfüllstand (Eigenbau), 4x8 Relais-M-Mastermodule (Eigenbau), 6 T-Module (Schalter und 3 analoge Eingänge) (Eigenbau)
sonstige Hardware: 2 Relay Modul

Stelaku

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

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!