Hallo Zusammen!
Ich habe da ein seltsames Problem!
Ich möchte mir einen einfach Farbverlauf basteln. Dazu habe ich mir die Wifilight TV-Simulation als Vorbild genommen. Deshalb sieht mein Code so aus:
define wz_PC_farbverlauf notify wz_LED_PC:programm:\farbverlauf\s100 { fhem("set wz_LED_PC HSV 120,100,60 300 q ;set wz_LED_PC HSV 240,100,60 300 q ;set wz_LED_PC HSV 360,100,60 300 q farbverlauf");}
Wenn ich dieses Notify in FHEM anlegen möchte, kommt folgende Fehlermeldung:
Can't find string terminator '"' anywhere before EOF at (eval 2465824) line 1.
Unknown command }, try help.
Ich selbst sethe irgendwie auf dem Schlauch! Was habe ich denn falsch in meinem Code?
Semikolon escapen. Siehe https://fhem.de/commandref_DE.html#perl
Leg das notify "nackt" an:
define wz_PC_farbverlauf notify wz_LED_PC:programm:\farbverlauf\s100 {}
und füge dann deinen Code in DEF ein:
wz_LED_PC:programm:\farbverlauf\s100 {
fhem("set wz_LED_PC HSV 120,100,60 300 q ;set wz_LED_PC HSV 240,100,60 300 q ;set wz_LED_PC HSV 360,100,60 300 q farbverlauf");
}
VG Sebastian
Danke Sebastian!
Das war die Lösung.
Ja, so geht es auch, weil dann die WebUI die Arbeit wegen Semikolon escapen selbst macht.
Ansonsten geht auch im Kommandofeld von FHEM
define wz_PC_farbverlauf notify wz_LED_PC:programm:\farbverlauf\s100 { fhem("set wz_LED_PC HSV 120,100,60 300 q ;;set wz_LED_PC HSV 240,100,60 300 q ;;set wz_LED_PC HSV 360,100,60 300 q farbverlauf");;}
Kleine Anmerkung noch: warum überhaupt nach perl wechseln nur um dann fhem-Befehle auszuführen!?
{fhem("set Gerät Wert")} = set Gerät Wert
Oder habe ich was übersehen?
Gruß, Joachim
ZitatKleine Anmerkung noch: warum überhaupt nach perl wechseln nur um dann fhem-Befehle auszuführen!?
Gute Frage... ;)
VG Sebastian
Ich hätte ja auch überlegt, ob man das über ein DOIF umsetzen kann. Hatte halt nur das notify als Beispiel.
Wozu dafür ein DOIF?
Es gibt ja keine (weitere) Bedingung...
Es ging um den Ausführungsteil des Notify...
...gleiches würde im DOIF (oder wo auch immer: at, ...) gelten...
Weil zuerst nach Perl gewechselt wird: { }
Und darin dann zurück nach fhem: fhem("set...")
Das "Hin-und-her" ist (gefühlt) nur unnötig...
Gruß, Joachim