kleines Problem mit if ...

Begonnen von kermi, 04 Februar 2014, 18:01:08

Vorheriges Thema - Nächstes Thema

kermi

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
FB 7390 mit FHEM 5.5
2x CUL V2
HM-Sec-RHS, HM-ES-PMSw1-Pl, HM-PB-4Dis-WM, HM-LC-Dim1TPBU-FM, HM-LC-Sw1-FM, HM-PB-2-WM55, KFM 100, HM-OU-LED16,
EM 1000 WZ ... und div. Quatsch

koldomon

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 ;-)
OdroidC1 -> fhem
CUNO -> FS20
CUL -> HomeMatic
TCM310 -> enOcean
DUOFERN -> rademacher

kermi

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.
FB 7390 mit FHEM 5.5
2x CUL V2
HM-Sec-RHS, HM-ES-PMSw1-Pl, HM-PB-4Dis-WM, HM-LC-Dim1TPBU-FM, HM-LC-Sw1-FM, HM-PB-2-WM55, KFM 100, HM-OU-LED16,
EM 1000 WZ ... und div. Quatsch

ph1959de

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
Aktives Mitglied des FHEM e.V. | Moderator im Forenbereich "Wiki"

kermi

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.
FB 7390 mit FHEM 5.5
2x CUL V2
HM-Sec-RHS, HM-ES-PMSw1-Pl, HM-PB-4Dis-WM, HM-LC-Dim1TPBU-FM, HM-LC-Sw1-FM, HM-PB-2-WM55, KFM 100, HM-OU-LED16,
EM 1000 WZ ... und div. Quatsch

koldomon

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
OdroidC1 -> fhem
CUNO -> FS20
CUL -> HomeMatic
TCM310 -> enOcean
DUOFERN -> rademacher

ph1959de

Oder, alternativ:


  • isday() von SUNRISE_EL verwenden oder
  • das "light" reading von Twilight verwenden

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

Gruß, Peter
Aktives Mitglied des FHEM e.V. | Moderator im Forenbereich "Wiki"

kermi

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
FB 7390 mit FHEM 5.5
2x CUL V2
HM-Sec-RHS, HM-ES-PMSw1-Pl, HM-PB-4Dis-WM, HM-LC-Dim1TPBU-FM, HM-LC-Sw1-FM, HM-PB-2-WM55, KFM 100, HM-OU-LED16,
EM 1000 WZ ... und div. Quatsch

Puschel74

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
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.