FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: kermi am 04 Februar 2014, 18:01:08

Titel: kleines Problem mit if ...
Beitrag von: kermi am 04 Februar 2014, 18:01:08
guten Abend zusammen...

momentan tue ich mich mal wieder schwer :

define flurlicht_abends notify pir_flur_kanal1 { if (sunset("REAL",0,"18:00","23:30"))
{fhem("set flur_aktor_wandlampen on-for-timer 60;;set dimmer_flur_kanal3 100 70 10")} }


eigentlich soll das Codegebilde den <flur_aktor_wandlampen> und den <dimmer_flur_kanal3> nach Sonnenuntergang, aber nicht vor 17:00 Uhr und nach 23:30 Uhr, schalten.
Momentan schaltet <pir_flur_kanal1> mit einem penetranten Desinteresse an der vorgegebenen Zeit.

Klammern hab ich 10x nachgezählt ...

Gruß
Stephan
Titel: Antw:kleines Problem mit if ...
Beitrag von: koldomon am 04 Februar 2014, 19:50:45
Hi,

17:00 Uhr oder 18:00 Uhr?

Im Code bei dir steht 18. Momentan ist der Sonnenuntergang noch vor 18:00 Uhr. Vielleicht ist die Lösung ja so einfach? Falls ja, nicht Ärgern, jeder ist mal Betriebsblind ;-)
Titel: Antw:kleines Problem mit if ...
Beitrag von: kermi am 04 Februar 2014, 20:04:34
nee, daran liegt es leider nicht.
Selbst wenn ich jetzt mal 18:00 auf 22:00 Uhr setze, wird geschaltet obwohl ja dann eigentlich nur zwischen 22:00 und 23:30 geschaltet werden darf.
Titel: Antw:kleines Problem mit if ...
Beitrag von: ph1959de am 04 Februar 2014, 23:30:06
Was gibt denn "(sunset("REAL",0,"18:00","23:30"))" zurück und mit was vergleichst Du in dem "if"? So wie Du derzeit abfragst, dürfte das Resultat immer ungleich 0 (und damit true?) sein.

Gruß, Peter
Titel: Antw:kleines Problem mit if ...
Beitrag von: kermi am 04 Februar 2014, 23:46:07
hmm, bin jetzt arg verunsichert ...

also, {sunset("REAL",0,"18:00","23:30")} schmeisst mir 42:00:00 raus.
Ich dachte, mit 18:00 und 23:30 kann ich die früheste Start- bzw. Endzeit festlegen.
Titel: Antw:kleines Problem mit if ...
Beitrag von: koldomon am 05 Februar 2014, 09:12:26
Hallo Kermi,

jetzt schön der Reihe nach, kriegen wir schon hin
1. Hast du in deinem Global deinen Längen- und Breitengrad eingetragen?
2. Wie in der commandref beschrieben, gibt dir sunrise/sunset den Wert +24h aus, wenn das Ereigniss am nächsten Tag stattfindet. Probier mal sunrise_abs/sunset_abs
3. Was willst du mit dem if erreichen? Du hast da keinen Vergleich drin, sondern lässt dir nur das Ergebniss von sunset ausgeben. Und jeder Wert <> 0 ist somit true - also immer.

Mach doch mal folgendes. Das sunset in einen AT verpflanzen und damit ein NOTIFY antriggern:
define flurlicht_notify notify flurlicht_notify {
fhem "set flur_aktor_wandlampen on-for-timer 60";
fhem "set dimmer_flur_kanal3 100 70 10";
}

define flurlicht_abends at *{sunset("REAL",0,"18:00","23:30")} {
fhem "trigger flurlicht_notify";
}


Damit du nicht 2 Notify's zum schalten brauchst, kannst du noch folgendes machen:
define flurlicht_notify notify flurlicht_notify {
if($EVENT eq "on")
{
fhem "set flur_aktor_wandlampen on-for-timer 60";
fhem "set dimmer_flur_kanal3 100 70 10";
}
else
{
fhem "set flur_aktor_wandlampen off";
fhem "set dimmer_flur_kanal3 off";
}
}

define flurlicht_abends at *{sunset_abs("REAL",0,"18:00","23:30")} {
fhem "trigger flurlicht_notify on";
}
define flurlicht_morgens at *{sunrise_abs("REAL",0,"06:00","08:00")} {
fhem "trigger flurlicht_notify off";
}


hoffe das ist das, was du brauchst. der gepostete Code ist ungetestet und kann schreibfehler enthalten, vom Prinzip muss es aber klappen

cu markus
Titel: Antw:kleines Problem mit if ...
Beitrag von: ph1959de am 05 Februar 2014, 11:05:29
Oder, alternativ:


Für beides bitte die Details in der commandref "nachschlagen".

Gruß, Peter
Titel: Antw:kleines Problem mit if ...
Beitrag von: kermi am 05 Februar 2014, 11:20:21
ohh  man o man... klar, wenn ich mir noch einmal aufmerksam das "if" durchgelesen hätte wäre ich auch selbst drauf gekommen das ja die Bedingung fehlt bzw. mit "0" vollkommener Quatsch ist.
Vielen Dank für den Klaps auf den Hinterkopf :D
So funktioniert es:

define flurlicht_notify notify pir_flur_kanal1 if($EVENT eq "on")\
{\
fhem "set flur_aktor_wandlampen on-for-timer 60";;\
fhem "set dimmer_flur_kanal3 100 70 10";;\
}\
else\
{\
fhem "set flur_aktor_wandlampen off";;\
fhem "set dimmer_flur_kanal3 off";;\
}\
}

define flurlicht_abends at *{sunset_abs("REAL",0,"18:00","23:30")} {fhem "trigger flurlicht_notify on"}
define flurlicht_morgens at *{sunrise_abs("REAL",0,"06:00","08:00")} {fhem "trigger flurlicht_notify off"}


Gruß
Stephan
Titel: Antw:kleines Problem mit if ...
Beitrag von: Puschel74 am 05 Februar 2014, 11:24:11
Hallo,

die erste Prüfung kannst du dir schenken  ;)

efine flurlicht_notify notify pir_flur_kanal1 if($EVENT eq "on")\
Mach mal das draus:
efine flurlicht_notify notify pir_flur_kanal1:on.* \
Dann wird das notify nicht jedesmal bis zum ersten if geprüft sondern nur ausgelöst wenn das regexp zutrifft.
Hier also on, on-for-timer, onxxxxx ankommt.

Grüße