FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: chaot4ever am 14 Oktober 2013, 16:11:04

Titel: if Befehl Syntax
Beitrag von: chaot4ever am 14 Oktober 2013, 16:11:04
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 "} }"
Titel: Antw:if Befehl Syntax
Beitrag von: betateilchen am 14 Oktober 2013, 16:17:06
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") } }
Titel: Antw:if Befehl Syntax
Beitrag von: chaot4ever am 14 Oktober 2013, 17:33:03
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.
Titel: Antw:if Befehl Syntax
Beitrag von: chaot4ever am 15 Oktober 2013, 10:13:56
Hat niemand eine Ahnung warum der Befehk nicht ausgeführt wird? :(
Titel: Antw:if Befehl Syntax
Beitrag von: Hans Franz am 15 Oktober 2013, 11:52:21
Moin,
Ähm..
{$yday} ergibt bei mir für heute (15.10) 287.
Zweifellos ist heute aber der 288. Tag.

Hans
Titel: Antw:if Befehl Syntax
Beitrag von: hckoe am 15 Oktober 2013, 12:16:25
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
Titel: Antw:if Befehl Syntax
Beitrag von: chaot4ever am 15 Oktober 2013, 15:07:52
Super!!! Herzlichen Dank, nun funzt es!!! :D