Hallo zusammen,
folgendes DI macht nicht, was es soll, nämlich abends und morgens die Heckenbeleuchtung einschalten und in den anderen Zeiträumen ausschalten. Jemand ne Idee?
(([{sunset_abs("HORIZON=-2",0,"16:00","19:30")}] -[23:30]) or (([05:00]-[{sunrise_abs("HORIZON=-2",0,"7:00","9:30")}]))) (set Licht_Hecke an) DOELSE (set Licht_Hecke aus)
Zu viele Klammern.
Eine Zeitspanne schreibt man [08:00-23:00]
und zwar auch wenn die Uhrzeit (z.B. 08:00) das Ergebnis einer Perl Funktion sein soll:
[{sunset }-23:00] => Zeitspanne zwischen sunset und 23:00 Uhr
Was Du geschrieben hast: ([{sunset }] - [23:00]) heisst " Uhrzeit von sunset minus 23:00"
Den Unterschied sieht man ganz gut in einem "list" des DOIFs:
Falsch
condition:
0 (::DOIF_time_once($hash,0,$wday) -::DOIF_time_once($hash,1,$wday)) or ((::DOIF_time_once($hash,2,$wday)-::DOIF_time_once($hash,3,$wday)))
"(Uhrziet timer_01 minus Uhrzeit timer_02) oder (Uhrzeit timer_03 minusUhrzeit timer_04)"
Richtig:
condition:
0 (::DOIF_time($hash,0,1,$wday,$hms)) or (::DOIF_time($hash,2,3,$wday,$hms))
"(Zeit zwischen timer_01 und timer_02) oder (Zeit zwischen timer_03 und timer_04)"
Zitat von: amenomade am 23 Dezember 2020, 12:43:12
Zu viele Klammern.
Eine Zeitspanne schreibt man [08:00-23:00]
und zwar auch wenn die Uhrzeit (z.B. 08:00) das Ergebnis einer Perl Funktion sein soll:
[{sunset }-23:00] => Zeitspanne zwischen sunset und 23:00 Uhr
Was Du geschrieben hast: ([{sunset }] - [23:00]) heisst " Uhrzeit von sunset minus 23:00"
Den Unterschied sieht man ganz gut in einem "list" des DOIFs:
Falsch
condition:
0 (::DOIF_time_once($hash,0,$wday) -::DOIF_time_once($hash,1,$wday)) or ((::DOIF_time_once($hash,2,$wday)-::DOIF_time_once($hash,3,$wday)))
"(Uhrziet timer_01 minus Uhrzeit timer_02) oder (Uhrzeit timer_03 minusUhrzeit timer_04)"
Richtig:
condition:
0 (::DOIF_time($hash,0,1,$wday,$hms)) or (::DOIF_time($hash,2,3,$wday,$hms))
"(Zeit zwischen timer_01 und timer_02) oder (Zeit zwischen timer_03 und timer_04)"
Ahhh, vielen Dank! Dann müsste es so funktionieren?
(([{sunset_abs("HORIZON=-2",0,"16:00","19:30")} -23:30]) or (([05:00-{sunrise_abs("HORIZON=-2",0,"7:00","9:30")}]))) (set Licht_Hecke an) DOELSE (set Licht_Hecke aus)
Zitat von: Michi240281 am 23 Dezember 2020, 13:13:48
Ahhh, vielen Dank! Dann müsste es so funktionieren?
(([{sunset_abs("HORIZON=-2",0,"16:00","19:30")} -23:30]) or (([05:00-{sunrise_abs("HORIZON=-2",0,"7:00","9:30")}]))) (set Licht_Hecke an) DOELSE (set Licht_Hecke aus)
Was sagt ein "list"? ;) Ich glaube es ist jetzt richtig. Da könnte man sich noch ein Paar Rundeklammern sparen, aber es sollte funktionieren
Internals:
DEF (([{sunset_abs("HORIZON=-2",0,"16:00","19:30")} -23:30]) or (([05:00-{sunrise_abs("HORIZON=-2",0,"7:00","9:30")}]))) (set Licht_Hecke an) DOELSE (set Licht_Hecke aus)
FUUID 5c461a77-f33f-5e60-283d-dab7d7ec6ee17343
MODEL FHEM
NAME Licht_Hecke_DI
NR 1008
NTFY_ORDER 50-Licht_Hecke_DI
STATE initialized
TYPE DOIF
READINGS:
2020-12-23 13:12:34 cmd 0
2020-12-23 13:12:34 mode enabled
2020-12-23 13:12:34 state initialized
2020-12-23 13:12:34 timer_01_c01 23.12.2020 16:42:32
2020-12-23 13:12:34 timer_02_c01 23.12.2020 23:30:00
2020-12-23 13:12:34 timer_03_c01 24.12.2020 05:00:00
2020-12-23 13:12:34 timer_04_c01 24.12.2020 08:28:41
Regex:
attr:
cmdState:
waitdel:
condition:
0 (::DOIF_time($hash,0,1,$wday,$hms)) or ((::DOIF_time($hash,2,3,$wday,$hms)))
days:
devices:
do:
0:
0 set Licht_Hecke an
1:
0 set Licht_Hecke aus
helper:
globalinit 1
last_timer 4
sleeptimer -1
interval:
0 -1
1 0
2 -1
3 2
intervalfunc:
itimer:
localtime:
0 1608738152
1 1608762600
2 1608782400
3 1608794921
realtime:
0 16:42:32
1 23:30:00
2 05:00:00
3 08:28:41
time:
0 {sunset_abs("HORIZON=-2",0,"16:00","19:30")}
1 23:30:00
2 05:00:00
3 {sunrise_abs("HORIZON=-2",0,"7:00","9:30")}
timeCond:
0 0
1 0
2 0
3 0
timer:
0 0
1 0
2 0
3 0
timers:
0 0 1 2 3
triggertime:
1608738152:
localtime 1608738152
hash:
1608762600:
localtime 1608762600
hash:
1608782400:
localtime 1608782400
hash:
1608794921:
localtime 1608794921
hash:
uiState:
uiTable:
Attributes:
do always
room Aussen
Die Zeiträume sehen jetzt richtg aus! Bin optimistisch!
(([{sunset_abs("HORIZON=-2",0,"16:00","19:30")} -23:30]) or (([05:00-{sunrise_abs("HORIZON=-2",0,"7:00","9:30")}])))
Ich würde empfehlen überflüssige Klammern nicht anzugeben, dann kommt man nicht so schnell durcheinander ;)