FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: holle75 am 24 Januar 2021, 16:38:44

Titel: syntax ReadingVal mit RegEx in Befehlszweig
Beitrag von: holle75 am 24 Januar 2021, 16:38:44
Hallo Ihr, ich habe ein DOIF

Raw
defmod BeregnungDOIF_Skip DOIF ([?BeregnungDOIF_Trigger:AutomaticIsRunning] eq "on" and ["^BeregnungSkip$:next"]) (set BeregnungDOIF_Trigger {ReadingsVal("BeregnungDOIF_Trigger","wait_timer","") =~ m/set.*(cmd_.*)/;;;; $1})
attr BeregnungDOIF_Skip do always


welches den Part
{ReadingsVal("BeregnungDOIF_Trigger","wait_timer","") =~ m/set.*(cmd_.*)/;;;; $1}

Roh ausgiebt. Also im Event Monitor bekomme ich

2021-01-24 16:23:26 DOIF BeregnungDOIF_Trigger {ReadingsVal("BeregnungDOIF_Trigger","wait_timer","") =~ m/set.*(cmd_.*)/; $1}

anstatt dass

set BeregnungDOIF_Trigger cmd_3

was ich gerne als Befehl absetzen würde. Keine Ahnung inwieweit der Event-Monitor das jetzt Richtig/falsch darstellt, aber der Befehl wird nicht ausgeführt.

wenn ich

{ReadingsVal("BeregnungDOIF_Trigger","wait_timer","") =~ m/set.*(cmd_.*)/;; $1}

direkt in die FHEM-Befehlszeile eingebe bekomme ich brav mein Ergebnis "cmd_3" in diesem Moment.

(das Reading sieht so aus
wait_timer 2021-01-24 16:23:26 cmd_3_2 set_cmd_3
)

Wie muß die Syntax im DOIF sein?

Danke und Gruß
H.
Titel: Antw:syntax ReadingVal mit RegEx in Befehlszweig
Beitrag von: Damian am 24 Januar 2021, 17:12:07
Innerhalb von FHEM muss man Perl mit {(...)} angeben, damit es ausgewertet wird:

(set BeregnungDOIF_Trigger {(ReadingsVal("BeregnungDOIF_Trigger","wait_timer","") =~ m/set.*(cmd_.*)/;;;; $1)})
Titel: Antw:syntax ReadingVal mit RegEx in Befehlszweig
Beitrag von: holle75 am 24 Januar 2021, 17:26:34
Danke Damian. Mal wieder 4 Stunden verblödelt wegen 2 Klammern :)
Titel: Antw:syntax ReadingVal mit RegEx in Befehlszweig
Beitrag von: Damian am 24 Januar 2021, 19:27:55
Zitat von: holle75 am 24 Januar 2021, 17:26:34
Danke Damian. Mal wieder 4 Stunden verblödelt wegen 2 Klammern :)

ja, siehe https://fhem.de/commandref_DE.html#DOIF_Berechnungen_im_Ausfuehrungsteil
Titel: Antw:syntax ReadingVal mit RegEx in Befehlszweig
Beitrag von: holle75 am 24 Januar 2021, 19:39:37
Deine Doku ist einfach zu gut (lang) ... da fällt das ein oder andere beim lesen durch :)
... und ich würde beschwören, mindestens 5 mal zum speziellen Fall gestöbert zu haben.

Aber dank deiner Präsenz hier, werden ja final auch die komplexesten Fragen beantwortet. Nochmal danke dafür.

Was ich generell faszinierend finde sind die Fragen in Bezug auf ReadingsVal/RegEx im Forum. Egal wo, immer nah dran dann aber doch nicht ganz richtig für den jeweiligen Einsatzzweck. Irgend ein Zeichen wird es schon haben, damits nicht funktioniert!
Und dabei gehts gar nicht unbedingt ums RegEx sondern die Syntax.
Titel: Antw:syntax ReadingVal mit RegEx in Befehlszweig
Beitrag von: Damian am 24 Januar 2021, 19:56:37
Zitat von: holle75 am 24 Januar 2021, 19:39:37
Deine Doku ist einfach zu gut (lang) ... da fällt das ein oder andere beim lesen durch :)
... und ich würde beschwören, mindestens 5 mal zum speziellen Fall gestöbert zu haben.

Aber dank deiner Präsenz hier, werden ja final auch die komplexesten Fragen beantwortet. Nochmal danke dafür.

Was ich generell faszinierend finde sind die Fragen in Bezug auf ReadingsVal/RegEx im Forum. Egal wo, immer nah dran dann aber doch nicht ganz richtig für den jeweiligen Einsatzzweck. Irgend ein Zeichen wird es schon haben, damits nicht funktioniert!
Und dabei gehts gar nicht unbedingt ums RegEx sondern die Syntax.

Mit RegEx kann man sich die Zähne ausbeißen. Ich traue keinem RegEx, wenn ich es selbst nicht ausprobiert habe ;)