FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: jethi am 11 August 2016, 20:32:35

Titel: Problem bei at Befehl mit if und on-till
Beitrag von: jethi am 11 August 2016, 20:32:35
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
Titel: Antw:Problem bei at Befehl mit if und on-till
Beitrag von: budy am 12 August 2016, 10:11:36
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