Hallo,
ich betreibe ein frisch upgedatetes FHEM-System auf einem RasPi und wollte die Funktion Heating_Control zur Steuerung der Weihnachtsbaumbeleuchtung mit zwei festen Schaltzeiten sowie zwei über Sonnenaufgang bzw. -untergang (Twilight) gesteuerten Zeiten einsetzen. Dabei scheint die Angabe von Perl-Ausdrücken für die Schaltzeiten nur solange zu funktionieren, wie die keine Leerzeichen enthalten. Die folgende Definition zeigt das Problem:
define ChristCntr Heating_Control ga_Strom de 05:45|on Mo-Sa|{sunset()}|off Mo-Sa|{fhem("get Tageslicht ss_weather")}|on 23:00|off {fhem "set @ %" }
Tageslicht ist hierbei eine Twilight-Instanz.
Die Internals zeigen daraufhin das Folgenden:
COMMAND Tageslicht ss_weather")}|on 23:00|off {fhem "set @ %" }
DEF ga_Strom de So-Sa|05:45|on So-Sa|{sunset()}|off So-Sa|{fhem("get Tageslicht ss_weather")}|on 23:00|off {fhem "set @ %" }
DEVICE ga_Strom
...
LANGUAGE de
NAME ChristCntr
...
Profil 0: Sonntag 00:00:00 {fhem("get, 05:45:00 on
...
Soweit ich das überblicke, wird bei beim Parsing davon ausgegangen, dass ein Profile kein Leerzeichen enthalten kann, so dass das dritte Profile nach "get" endet. Da der folgende Abschnitt weder mit einem als Tag noch mit einem als Zeit interpretierbaren Ausdruck beginnt, wird er als COMMAND interpretiert. Allerdings sollten Leerzeichen innerhalb des FHEM-Ausdrucks bei der Zerlegung ignoriert werden.
Natürlich kann man als Workaround die "Tageslicht"-Abfrage in eine externe Funktion auslagern. Es geht mir daher hier eher um die Korrektur des Parsers.
Gruß Frank
Sehe ich mir an
Ich sehe keine einfache Möglichkeit den Parser wasserdicht zu verändern.
Du kannst aber auch gleich die Funktion
ReadingsVal("Tageslicht","ss_weather","notfound")
verwenden, die liefert ohne Leerzeichen den Wert den du benötigst.
Der Aufwand für einen Umbau und dem geringen Nutzen sehe ich für zu hoch an.
Ich werde die Dokumentation anpassen.
Entgegen meiner ursprünglichen Meinung, habe ich HC, WD doch soweit verändert, dass deine konkrete Definition nun funktioniert. Das Modul befindet sich allerdings noch einige Tage in Test.
Kannst du selbst Module in fhem austauschen, dann würde ich es dir vorab zukommen lassen.
eingecheckt