Moin,
folgendes DOIF
([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
bzw.
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-05-14 15:47:36 Device PresTVWintergarten
2016-05-14 15:46:17 cmd 1
2016-05-14 15:46:17 cmd_event PresTVWintergarten
2016-05-14 15:46:17 cmd_nr 1
2016-05-14 15:47:36 e_PresTVWintergarten_presence present
2016-05-14 15:46:17 state cmd_1
2016-05-14 08:41:02 timer_1_c1 15.05.2016 05:30:00|8
2016-05-14 08:41:02 timer_2_c1 15.05.2016 05:30:00|8
2016-05-14 08:41:02 timer_3_c1 15.05.2016 06:30:00|7
2016-05-14 08:41:02 timer_4_c1 15.05.2016 06:30:00|7
2016-05-14 08:41:02 timer_5_c1 14.05.2016 21:14:24
2016-05-14 08:41:02 timer_6_c1 14.05.2016 22:15:00
2016-05-14 08:41:02 timer_7_c1 14.05.2016 21:14:24
2016-05-14 08:41:02 timer_8_c1 15.05.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: present
globalinit 1
last_timer 8
sleeptimer -1
timerdev PresTVWintergarten
timerevent presence: present
triggerDev PresTVWintergarten
timerevents:
presence: present
timereventsState:
presence: present
triggerEvents:
presence: present
triggerEventsState:
presence: present
Internals:
Interval:
0 -1
1 0
2 -1
3 2
4 -1
5 4
6 -1
7 6
Itimer:
Localtime:
0 1463283000
1 1463283000
2 1463286600
3 1463286600
4 1463253264
5 1463256900
6 1463253264
7 1463268600
Readings:
0 PresTVWintergarten:presence
all PresTVWintergarten:presence
Realtime:
0 05:30:00
1 05:30:00
2 06:30:00
3 06:30:00
4 21:14:24
5 22:15:00
6 21:14:24
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:
1463253264:
localtime 1463253264
Hash:
1463256900:
localtime 1463256900
Hash:
1463268600:
localtime 1463268600
Hash:
1463283000:
localtime 1463283000
Hash:
1463286600:
localtime 1463286600
Hash:
Attributes:
room Aussen
hat mehrere Monate tadellos funktioniert.
Seit einem der letzten Updates funktioniert das Zusammenspiel mit sunrise/sunset nicht mehr - Lampen gehen nachts nicht aus oder werden schon um 16:00 Uhr eingeschaltet - obwohl der Sonnenuntergang erst um 21 Uhr ist.
Logfile:
2016-05-13_21:12:43 DI_TimerPresenceAussenlichtOnOff cmd_event: timer_5
2016-05-13_21:12:43 DI_TimerPresenceAussenlichtOnOff cmd_1
2016-05-14_00:37:20 DI_TimerPresenceAussenlichtOnOff cmd_nr: 2
2016-05-14_00:37:20 DI_TimerPresenceAussenlichtOnOff cmd: 2
2016-05-14_00:37:20 DI_TimerPresenceAussenlichtOnOff cmd_event: PresTVWintergarten
2016-05-14_00:37:20 DI_TimerPresenceAussenlichtOnOff cmd_2
2016-05-14_06:30:00 DI_TimerPresenceAussenlichtOnOff cmd_nr: 1
2016-05-14_06:30:00 DI_TimerPresenceAussenlichtOnOff cmd: 1
2016-05-14_06:30:00 DI_TimerPresenceAussenlichtOnOff cmd_event: timer_3
2016-05-14_06:30:00 DI_TimerPresenceAussenlichtOnOff cmd_1
2016-05-14_08:41:02 DI_TimerPresenceAussenlichtOnOff cmd: 0
2016-05-14_08:41:02 DI_TimerPresenceAussenlichtOnOff initialized
2016-05-14_15:46:17 DI_TimerPresenceAussenlichtOnOff cmd_nr: 1
2016-05-14_15:46:17 DI_TimerPresenceAussenlichtOnOff cmd: 1
2016-05-14_15:46:17 DI_TimerPresenceAussenlichtOnOff cmd_event: PresTVWintergarten
2016-05-14_15:46:17 DI_TimerPresenceAussenlichtOnOff cmd_1
Zum einen zu sehen, daß morgens um 06:30 das Licht anging (sollte aber aus bleiben, da der Sonnenaufgang früher war) und nicht wieder ausging und
daß um 15:46 mit dem Event PresTVWintergarten das Licht ebenfalls aktiviert wurde - obwohl der Sonnenaufgang noch nicht erreicht wurde.
Das DOIF lief mehrere Wochen einwandfrei...
Danke, -MN
"hat mehrere Monate tadellos funktioniert"
ja, bis Sonnenaufgang vor 5:30 kam ;)
Das hat weniger mit einem Update zu tun, als mit deiner Zeitintervall-Definition.
Das erste Intervall [05:30-05:30] ist immer wahr (von 05:30 bis 05:29:59 des nächsten Tages).
Daher solltest du deine Intervallgrenzen so wählen, dass sie nicht gleich sein können.
Gruß
Damian
Hi Damian,
danke für Deine Mühe und Deine Erläuterungen.
In den Readings des DOIFs werden die Zeiten immer als Datum + Uhrzeit angegeben. Da lese ich jetzt:
timer_1_c1 15.05.2016 05:30:00|8 2016-05-14 08:41:02
timer_2_c1 15.05.2016 05:30:00|8 2016-05-14 08:41:02
timer_3_c1 15.05.2016 06:30:00|7 2016-05-14 08:41:02
timer_4_c1 15.05.2016 06:30:00|7 2016-05-14 08:41:02
timer_5_c1 14.05.2016 21:14:24 2016-05-14 08:41:02
timer_6_c1 14.05.2016 22:15:00 2016-05-14 08:41:02
timer_7_c1 14.05.2016 21:14:24 2016-05-14 08:41:02
timer_8_c1 15.05.2016 01:30:00 2016-05-14 08:41:02
timer_1_c1 (feste Startzeit) ist identisch zu timer_2_c1 (sunrise-Funktion). Du hattest zu einer anderen Frage von mir geschrieben, daß
[Zeit1-Zeit1]
derzeit fehlerhaft auf TRUE gesetzt wird und dazu ein Update avisiert.
Wird bei diesen Zeitvergleichen auch das Datum mit berücksichtigt oder nur die Uhrzeit?
Danke Dir,
Ciao, -MN
Zitat von: Morgennebel am 14 Mai 2016, 18:24:17
Hi Damian,
danke für Deine Mühe und Deine Erläuterungen.
In den Readings des DOIFs werden die Zeiten immer als Datum + Uhrzeit angegeben. Da lese ich jetzt:
timer_1_c1 15.05.2016 05:30:00|8 2016-05-14 08:41:02
timer_2_c1 15.05.2016 05:30:00|8 2016-05-14 08:41:02
timer_3_c1 15.05.2016 06:30:00|7 2016-05-14 08:41:02
timer_4_c1 15.05.2016 06:30:00|7 2016-05-14 08:41:02
timer_5_c1 14.05.2016 21:14:24 2016-05-14 08:41:02
timer_6_c1 14.05.2016 22:15:00 2016-05-14 08:41:02
timer_7_c1 14.05.2016 21:14:24 2016-05-14 08:41:02
timer_8_c1 15.05.2016 01:30:00 2016-05-14 08:41:02
timer_1_c1 (feste Startzeit) ist identisch zu timer_2_c1 (sunrise-Funktion). Du hattest zu einer anderen Frage von mir geschrieben, daß
[Zeit1-Zeit1]
derzeit fehlerhaft auf TRUE gesetzt wird und dazu ein Update avisiert.
Wird bei diesen Zeitvergleichen auch das Datum mit berücksichtigt oder nur die Uhrzeit?
Danke Dir,
Ciao, -MN
Ein Zeitintervall [Anfang-Ende] ist ab Anfang bis Ende
ausschließlich wahr. Nun stellt sich die Frage: Was soll bei Gleichheit sein?
Da Anfang gleich Ende ist gibt es nur einen Trigger: Anfang wahr und gleichtzeitig Ende unwahr? Oder ist das eher der Fall: Ende kleiner Anfang, dann ist das Intervall von Anfang zum Ende des nächsten Tages wahr, bei Anfang=Ende also immer wahr.
Womöglich, wäre der beste Fall bei Gleichheit die Auswertung der Bedingung erst gar nicht vorzunehmen, also kein Trigger - das müsste ich aber erst sauber im Code Abfangen.
Du kannst erst mal bei dir definieren:
[05:30-{sunrise("REAL",0,"05:31","09:00")}|8] or
[06:30-{sunrise("REAL",0,"06:31","09:30")}|7]
Dann kann, wie schon geschrieben, der Fall gar nicht eintreten.