Moin,
ich komme leider nicht mehr weiter. Ich möchte meine Dekobeleuchtung per DOIF zeitgesteuert ein/ausschalten lassen. Ich bin der festen Überzeugung, dass folgendes DOIF letztes Jahr noch einwandfrei lief.
Die Beleuchtung soll 4000 Sekunden vor Sonnenuntergang eingeschaltet und um 22:30h wieder ausgeschaltet werden. Zusätzlich soll morgens an Werktagen um 06:00h eingeschaltet werden, sofern dies zeitlich vor Sonnenaufgang + 3000 Sekunden liegt (dem dann auch anzusetzenden Ausschaltzeitpunkt). Abends funktioniert es wie es soll, morgens geht es nicht an.
Kann man dies sonst auch noch eleganter lösen?
Danke und Gruß!
Internals:
DEF ([{sunset_abs(-4000)}] or ([06:00|AT] and [06:00|AT]<=[{sunrise_abs(+3000)}])) (set Dekobeleuchtung on) DOELSEIF ([22:30] or [{sunrise_abs(+3000)}]) (set Dekobeleuchtung off)
MODEL FHEM
NAME di_DekobeleuchtungZeitsteuerung
NR 258
NTFY_ORDER 50-di_DekobeleuchtungZeitsteuerung
STATE cmd_2
TYPE DOIF
READINGS:
2018-11-05 22:30:01 cmd 2
2018-11-05 22:30:01 cmd_event timer_5
2018-11-05 22:30:01 cmd_nr 2
2018-11-05 07:15:02 mode enabled
2018-11-05 22:30:01 state cmd_2
2018-11-05 22:58:30 timer_01_c01 06.11.2018 16:12:43
2018-11-06 06:00:00 timer_02_c01 07.11.2018 06:00:00|AT
2018-11-06 06:00:00 timer_03_c01 07.11.2018 06:00:00|AT
2018-11-06 07:39:59 timer_04_c01 07.11.2018 07:41:46
2018-11-05 22:58:30 timer_05_c02 06.11.2018 22:30:00
2018-11-06 07:39:59 timer_06_c02 07.11.2018 07:41:46
Regex:
attr:
waitdel:
condition:
0 ::DOIF_time_once($hash,0,$wday) or (::DOIF_time_once($hash,1,$wday,"AT") and ::DOIF_time_once($hash,2,$wday,"AT")<=::DOIF_time_once($hash,3,$wday))
1 ::DOIF_time_once($hash,4,$wday) or ::DOIF_time_once($hash,5,$wday)
days:
1 AT
2 AT
devices:
do:
0:
0 set Dekobeleuchtung on
1:
0 set Dekobeleuchtung off
2:
helper:
event timer_6
globalinit 1
last_timer 6
sleeptimer -1
timerdev
timerevent timer_6
timereventsState
triggerDev
timerevents:
timer_6
triggerEvents:
timer_6
internals:
interval:
intervalfunc:
itimer:
localtime:
0 1541517163
1 1541566800
2 1541566800
3 1541572906
4 1541539800
5 1541572906
perlblock:
readings:
realtime:
0 16:12:43
1 06:00:00
2 06:00:00
3 07:41:46
4 22:30:00
5 07:41:46
time:
0 {sunset_abs(-4000)}
1 06:00:00
2 06:00:00
3 {sunrise_abs(+3000)}
4 22:30:00
5 {sunrise_abs(+3000)}
timeCond:
0 0
1 0
2 0
3 0
4 1
5 1
timer:
0 0
1 0
2 0
3 0
4 0
5 0
timers:
0 0 1 2 3
1 4 5
triggertime:
1541517163:
localtime 1541517163
hash:
1541539800:
localtime 1541539800
hash:
1541566800:
localtime 1541566800
hash:
1541572906:
localtime 1541572906
hash:
uiState:
uiTable:
Attributes:
Was spricht gegen
([{sunset_abs(-4000)}-22:30] or [06:00-{sunrise_abs(+3000)}|AT])
set Dekobeleuchtung on
DOELSE
set Dekobeleuchtung off
Ciao, -MN
[06:00|AT]<=[{sunrise_abs(+3000)}]
dieser Vergleich funktioniert nicht, weil [Zeit] nur logisch wahr oder falsch liefert.
so sollte es funktionieren
"06:00:00" le sunrise_abs(+3000)
Bei der Funktion sunrise selbst kann man den Zeitbereich festlegen. Es gibt sogar Beispiele in der Commandref zu DOIF dazu.
Zitat von: Morgennebel am 06 November 2018, 12:05:59
Was spricht gegen
([{sunset_abs(-4000)}-22:30] or [06:00-{sunrise_abs(+3000)}|AT])
set Dekobeleuchtung on
DOELSE
set Dekobeleuchtung off
Ciao, -MN
Sehr schön, werde ich so übernehmen... DANKE!
Falls bei dieser Bedingung [06:00-{sunrise_abs(+3000)}|AT] der Ausdruck {sunrise_abs(+3000)} eine Zeit vor 6 Uhr liefert, geht das Licht in der resultierenden Zeit Spanne an, z.B. {sunrise_abs(+3000)} liefert 05:00:00, dann geht das Licht um 6 Uhr an und am nächsten Tag um 5 Uhr aus.
Zitat von: Ellert am 06 November 2018, 15:35:22
Falls bei dieser Bedingung [06:00-{sunrise_abs(+3000)}|AT] der Ausdruck {sunrise_abs(+3000)} eine Zeit vor 6 Uhr liefert, geht das Licht in der resultierenden Zeit Spanne an, z.B. {sunrise_abs(+3000)} liefert 05:00:00, dann geht das Licht um 6 Uhr an und am nächsten Tag um 5 Uhr aus.
Bist Du da sicher? Ich hab so ähnliche Bedingungen schon lange im Einsatz und wenn der "Ausschaltpunkt" vor dem "Einschaltpunkt" liegt, passierte bisher nichts (oder hab ich das nur verschlafen?).
Ciao, -MN
Zitat von: Morgennebel am 06 November 2018, 16:54:10
Bist Du da sicher? Ich hab so ähnliche Bedingungen schon lange im Einsatz und wenn der "Ausschaltpunkt" vor dem "Einschaltpunkt" liegt, passierte bisher nichts (oder hab ich das nur verschlafen?).
Ciao, -MN
Da hast du wohl etwas übersehen ;)
[19:00-07:00] ist von 19:00 Uhr bis 07:00 Uhr wahr und sonst nicht.