Guten Abend,
wegen meiner Probleme mit Twilight bin ich auf die "normalen" sunrise/sunset-Funktionen umgestiegen. Leider schaltet jetzt das DOIF recht falsch.
Hier ist list:
Internals:
CFGFN ./FHEM/fhem-timers.cfg
DEF ([05:30-{sunrise("REAL",0,"05:30","09:00")}|8] or
[06:30-{sunrise("REAL",0,"06:30","09:30")}|7] or
[{sunset("REAL",0,"15:00","21:30")}-22:15] or
([{sunset("REAL",0,"15:00","21:30")}-01:30] and [PresTVWintergarten:presence] eq "present"))
(set D_TimerAussenlicht on, set Aussenlicht on) ## Cmd1
DOELSE
(set D_TimerAussenlicht off, set Aussenlicht off) ## Cmd2
NAME DI_TimerPresenceAussenlichtOnOff
NR 769
NTFY_ORDER 50-DI_TimerPresenceAussenlichtOnOff
STATE cmd_1
TYPE DOIF
Readings:
2016-04-17 18:46:42 Device PresTVWintergarten
2016-04-17 18:45:59 cmd_event PresTVWintergarten
2016-04-17 18:45:59 cmd_nr 1
2016-04-17 18:46:42 e_PresTVWintergarten_presence absent
2016-04-17 18:45:59 state cmd_1
2016-04-17 18:33:49 timer_1_c1 18.04.2016 05:30:00|8
2016-04-17 18:33:49 timer_2_c1 18.04.2016 06:19:35|8
2016-04-17 18:33:49 timer_3_c1 18.04.2016 06:30:00|7
2016-04-17 18:33:49 timer_4_c1 18.04.2016 06:30:00|7
2016-04-17 18:33:49 timer_5_c1 17.04.2016 20:25:44
2016-04-17 18:33:49 timer_6_c1 17.04.2016 22:15:00
2016-04-17 18:33:49 timer_7_c1 17.04.2016 20:25:44
2016-04-17 18:33:49 timer_8_c1 18.04.2016 01:30:00
Condition:
0 DOIF_time($hash,$hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"8") or DOIF_time($hash,$hash->{realtime}{2},$hash->{realtime}{3},$wday,$hms,"7") or DOIF_time($hash,$hash->{realtime}{4},$hash->{realtime}{5},$wday,$hms,"") or (DOIF_time($hash,$hash->{realtime}{6},$hash->{realtime}{7},$wday,$hms,"") and ReadingValDoIf($hash,'PresTVWintergarten','presence','','',AttrVal($hash->{NAME},'notexist',undef)) eq "present")
Days:
0 8
1 8
2 7
3 7
Devices:
0 PresTVWintergarten
all PresTVWintergarten
Do:
0:
0 set D_TimerAussenlicht on, set Aussenlicht on
1:
0 set D_TimerAussenlicht off, set Aussenlicht off
Helper:
event presence: absent
globalinit 1
last_timer 8
sleeptimer -1
timerdev PresTVWintergarten
timerevent presence: absent
triggerDev PresTVWintergarten
timerevents:
presence: absent
triggerEvents:
presence: absent
Internals:
Interval:
0 -1
1 0
2 -1
3 2
4 -1
5 4
6 -1
7 6
Itimer:
Localtime:
0 1460950200
1 1460953175
2 1460953800
3 1460953800
4 1460917544
5 1460924100
6 1460917544
7 1460935800
Readings:
0 PresTVWintergarten:presence
all PresTVWintergarten:presence
Realtime:
0 05:30:00
1 06:19:35
2 06:30:00
3 06:30:00
4 20:25:44
5 22:15:00
6 20:25:44
7 01:30:00
Regexp:
0:
All:
State:
Time:
0 05:30:00
1 {sunrise("REAL",0,"05:30","09:00")}
2 06:30:00
3 {sunrise("REAL",0,"06:30","09:30")}
4 {sunset("REAL",0,"15:00","21:30")}
5 22:15:00
6 {sunset("REAL",0,"15:00","21:30")}
7 01:30:00
Timecond:
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
Timer:
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
Timers:
0 0 1 2 3 4 5 6 7
Trigger:
Triggertime:
1460917544:
localtime 1460917544
Hash:
1460924100:
localtime 1460924100
Hash:
1460935800:
localtime 1460935800
Hash:
1460950200:
localtime 1460950200
Hash:
1460953175:
localtime 1460953175
Hash:
1460953800:
localtime 1460953800
Hash:
Attributes:
room Aussen
Und das Logfile zeigt:
2016-04-17_18:33:49 DI_TimerPresenceAussenlichtOnOff initialized
2016-04-17_18:33:49 DI_TimerPresenceAussenlichtOnOff timer_1_c1: 18.04.2016 05:30:00|8
2016-04-17_18:33:49 DI_TimerPresenceAussenlichtOnOff timer_2_c1: 18.04.2016 06:19:35|8
2016-04-17_18:33:49 DI_TimerPresenceAussenlichtOnOff timer_3_c1: 18.04.2016 06:30:00|7
2016-04-17_18:33:49 DI_TimerPresenceAussenlichtOnOff timer_4_c1: 18.04.2016 06:30:00|7
2016-04-17_18:33:49 DI_TimerPresenceAussenlichtOnOff timer_5_c1: 17.04.2016 20:25:44
2016-04-17_18:33:49 DI_TimerPresenceAussenlichtOnOff timer_6_c1: 17.04.2016 22:15:00
2016-04-17_18:33:49 DI_TimerPresenceAussenlichtOnOff timer_7_c1: 17.04.2016 20:25:44
2016-04-17_18:33:49 DI_TimerPresenceAussenlichtOnOff timer_8_c1: 18.04.2016 01:30:00
2016-04-17_18:45:59 DI_TimerPresenceAussenlichtOnOff cmd_nr: 1
2016-04-17_18:45:59 DI_TimerPresenceAussenlichtOnOff cmd_event: PresTVWintergarten
2016-04-17_18:45:59 DI_TimerPresenceAussenlichtOnOff cmd_1
Das um 18:45:59 das Kommando 1 aktiviert wurde, weil die PRESENCE-Meldung PresTVWintergarten ausgelöst wurde.
([{sunset("REAL",0,"15:00","21:30")}-01:30] and [PresTVWintergarten:presence] eq "present"))
Jedoch ist sunset("REAL",0,"15:00", "21:30") am heutigen Tag 20:25:00 Uhr, d.h. die eingrenzende Zeitangabe in der DOIF-Bedingung wird zu [20:25-01:30] and ....
Warum schaltet aber DOIF um 18:45?
Danke, -MN (sehr verwirrt)
Das Problem ist offenbar die Angabe:
[06:30-{sunrise("REAL",0,"06:30","09:30")}|7]
sie ist bei dir z. Zt. [06:30-06:30]. Dieser Ausdruck ist fälschlicherweise immer wahr.
Bis zum nächsten Update kannst du
[06:30-{sunrise("REAL",0,"06:31","09:30")}|7]
definieren.
Gruß
Damian
Dankeschön,
Ciao, -MN