Hallo,
ich habe folgenden Befehl, der jeden Tag morgens um 5:45 Uhr die Lampe bis zum sr_weather anschaltet, es sei denn, der Sonnenaufgang ist vor 5:45 Uhr:
define Lampe_morgens_an at *05:45 set Lampe_WZ1 on-till {twilight("MY_TWILIGHT","sr_weather",0,0)}
Der Befehl funktioniert auch. Wenn ich jedoch mit einem if($we) das Ganze aufs Wochenende begrenzen möchte:
define Lampe_morgens_an at *05:45 {fhem ("set Lampe_WZ1 on-till {twilight("MY_TWILIGHT","sr_weather",0,0)}") if($we)}
erhalte ich diverse Fehlermeldungen, beginnend mit:
PERL WARNING: Bareword found where operator expected at (eval 363) line 1, near ""set Lampe_WZ1 on-till {twilight("MY_TWILIGHT"
Kann mir jemand weiterhelfen?
Der Jethi
Moin,
sobald die geschweifte Klammer aufgeht muss du ja Perl Code schreiben. Ich habe so etwas ähnliches bei mir so gelöst, nur dass ich das Wochenende nicht haben möchte...:
define dachBodenWakeUpLight at *05:30:00 {
if (!$we) {
fhem("trigger notifyWakeUpDachboden on");
}
}
Du kannst dann auch mit einer lokalen Variablen arbeiten und dir dort zuerst das Reading aus MY_TWILIGHT holen, oder das verschachtelt verwursten - kommt ganz auf deine Vorliebe an. Ich mache das lieber immer etwas länger... dann verstehe ich das wieder schneller, wenn ich mal nach 6 Monaten wieder drauf schaue. Ich denke mal, dass ich dein Beispiel so umsetzen würde:
define Lampe_morgens at *05:45 {
my $localMY_TWILIGHT = ReadingsVal("MY_TWILIGHT","sr_weather","");
if (!$we) {
fhem("set Lampe_WZ1 on-till $localMY_TWILIGHT");
}
}
Gruß,
Stephan