syntax ReadingVal mit RegEx in Befehlszweig

Begonnen von holle75, 24 Januar 2021, 16:38:44

Vorheriges Thema - Nächstes Thema

holle75

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.

Damian

Innerhalb von FHEM muss man Perl mit {(...)} angeben, damit es ausgewertet wird:

(set BeregnungDOIF_Trigger {(ReadingsVal("BeregnungDOIF_Trigger","wait_timer","") =~ m/set.*(cmd_.*)/;;;; $1)})
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

holle75

Danke Damian. Mal wieder 4 Stunden verblödelt wegen 2 Klammern :)

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

holle75

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.

Damian

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 ;)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF