Hallo
Als Einsteiger in FHEM habe ich wie folgt versucht, einen Befehl (hier zB an Fernseher) zwei mal pro Jahr zu einem bestimmten Zeitpunkt auszuführen:
define Test at *15:59:00 { if ($yday == 180) || ($yday == 360) { fhem("set Fernseher off") } }
Leider geht gar nichts und in der Log-Datei steht:
Test: syntax error at (eval 19) line 1, near ") ||"
syntax error at (eval 19) line 1, near "} }"
Das hat wohl ehermit Deinem Verständnis zu tun, was/wie ein IF Befehl eigentlich vergleicht ;)
entweder so:
define Test at *15:59:00 { if ($yday == 180 || $yday == 360) { fhem("set Fernseher off") } }
oder so:
define Test at *15:59:00 { if (($yday == 180) || ($yday == 360)) { fhem("set Fernseher off") } }
Herzlichen Dank für deine Info.
Die Fehlermeldung ist in beiden Fällen weg, trotzdem passiert nichts, wenn ich für den Tag 287 (=heute, 14.10.2013) und die Schaltzeit auf eine Zeit stelle, die in 2 Minuten erreicht wird. Das Datum und die Zeit habe ich auf dem Raspberry Pi mit date abgefragt, diese sind korrekt.
Zuvor habe ich auch sicherheitshalber ein shutdown restart gemacht.
Was mache ich falsch? Muss ich den Wechsel vom Tag 287 auf den Tag 288 abwarten?
Hier nochmal der Code:
define setFernseherAus at *17:23:00 { if ($yday == 287 || $yday == 360) { fhem("set Fernseher Aus") } }
Der Befehl { fhem("set Fernseher Aus") } funktioiert in der commandzeile bestens.
Hat niemand eine Ahnung warum der Befehk nicht ausgeführt wird? :(
Moin,
Ähm..
{$yday} ergibt bei mir für heute (15.10) 287.
Zweifellos ist heute aber der 288. Tag.
Hans
Hallo Hans,
laut Perl-Dokumentation für localtime() wird $yday folgendermaßen belegt:
$yday - day of the year [0-365] (total of 366 possible for leap year)
Also hat der 288. Tag den Wert 287.
Gruß
Helmut
Super!!! Herzlichen Dank, nun funzt es!!! :D