Moin Moin,
ich habe folgendes DOIF seit einiger Zeit im Einsatz:
Internals:
DEF ([05:30-{sunrise_abs(+1200)}|AT])
(setreading $SELF OutDoorLight on) ## CMD1
DOELSEIF ([06:30-{sunrise_abs(+1200)}|WE])
(setreading $SELF OutDoorLight on) ## CMD2
DOELSEIF ([{sunset_abs(-2100)}-21:45|SoMoDiMiDo])
(setreading $SELF OutDoorLight on) ## CMD3
DOELSEIF ([{sunset_abs(-2100)}-22:30|MWEFrSa])
(setreading $SELF OutDoorLight on) ## CMD4
DOELSE
(setreading $SELF OutDoorLight off)
FUUID 5c98b9b3-f33f-4ba1-8d44-61678a1cefa35fb8
MODEL FHEM
NAME DI_LightsAussen
NR 438
NTFY_ORDER 50-DI_LightsAussen
STATE Morgens-WE
TYPE DOIF
VERSION 18890 2019-03-13 18:56:41
Helper:
DBLOG:
state:
DBLOG:
TIME 1555312276.98071
VALUE Morgens-WE
READINGS:
2019-04-15 09:11:16 OutDoorLight on
2019-04-15 09:11:16 cmd 2
2019-04-15 09:11:16 cmd_event DI_LightsAussen
2019-04-15 09:11:16 cmd_nr 2
2019-04-15 09:11:12 mode enabled
2019-04-15 09:11:16 state Morgens-WE
2019-04-15 09:11:12 timer_01_c01 16.04.2019 05:30:00|AT
2019-04-15 09:11:12 timer_02_c01 16.04.2019 06:06:38|AT
2019-04-15 09:11:12 timer_03_c02 16.04.2019 06:30:00|WE
2019-04-15 09:11:12 timer_04_c02 16.04.2019 06:06:38|WE
2019-04-15 09:11:12 timer_05_c03 15.04.2019 20:27:58|SoMoDiMiDo
2019-04-15 09:11:12 timer_06_c03 15.04.2019 21:45:00|SoMoDiMiDo
2019-04-15 09:11:12 timer_07_c04 15.04.2019 20:27:58|MWEFrSa
2019-04-15 09:11:12 timer_08_c04 15.04.2019 22:30:00|MWEFrSa
Regex:
accu:
attr:
cmdState:
0:
Morgens-AT
1:
Morgens-WE
2:
Abends-AT
3:
Abends-WE/MWE
4:
Aus
wait:
waitdel:
condition:
0 ::DOIF_time($hash,0,1,$wday,$hms,"AT")
1 ::DOIF_time($hash,2,3,$wday,$hms,"WE")
2 ::DOIF_time($hash,4,5,$wday,$hms,"SoMoDiMiDo")
3 ::DOIF_time($hash,6,7,$wday,$hms,"MWEFrSa")
days:
0 AT
1 AT
2 WE
3 WE
4 SoMoDiMiDo
5 SoMoDiMiDo
6 MWEFrSa
7 MWEFrSa
devices:
do:
0:
0 setreading DI_LightsAussen OutDoorLight on
1:
0 setreading DI_LightsAussen OutDoorLight on
2:
0 setreading DI_LightsAussen OutDoorLight on
3:
0 setreading DI_LightsAussen OutDoorLight on
4:
0 setreading DI_LightsAussen OutDoorLight off
helper:
globalinit 1
last_timer 8
sleeptimer -1
timerdev
timerevent
timerevents
timereventsState
triggerDev
DOIF_eventas:
cmd_nr: 2
cmd: 2
cmd_event: DI_LightsAussen
state: Morgens-WE
internals:
interval:
0 -1
1 0
2 -1
3 2
4 -1
5 4
6 -1
7 6
intervalfunc:
itimer:
localtime:
0 1555385400
1 1555387598
2 1555389000
3 1555387598
4 1555352878
5 1555357500
6 1555352878
7 1555360200
readings:
realtime:
0 05:30:00
1 06:06:38
2 06:30:00
3 06:06:38
4 20:27:58
5 21:45:00
6 20:27:58
7 22:30:00
time:
0 05:30:00
1 {sunrise_abs(+1200)}
2 06:30:00
3 {sunrise_abs(+1200)}
4 {sunset_abs(-2100)}
5 21:45:00
6 {sunset_abs(-2100)}
7 22:30:00
timeCond:
0 0
1 0
2 1
3 1
4 2
5 2
6 3
7 3
timer:
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
timers:
0 0 1
1 2 3
2 4 5
3 6 7
triggertime:
1555352878:
localtime 1555352878
hash:
1555357500:
localtime 1555357500
hash:
1555360200:
localtime 1555360200
hash:
1555385400:
localtime 1555385400
hash:
1555387598:
localtime 1555387598
hash:
1555389000:
localtime 1555389000
hash:
uiState:
uiTable:
Attributes:
cmdState Morgens-AT|Morgens-WE|Abends-AT|Abends-WE/MWE|Aus
room SYS_Events
Es geht bei mir um Bedingung 2, die aktuell ständig wahr bleibt. Als Timer wurden vom DOIF ermittelt:
timer_03_c02 16.04.2019 06:30:00|WE 2019-04-15 09:11:12
timer_04_c02 16.04.2019 06:06:38|WE 2019-04-15 09:11:12
WE ist wahr, weil mein holiday2we Schulferien meldet.
Jedoch würden die Uhrzeiten einer Bedingung [06:30-06:06|WE] entsprechen, d.h. die Zeit sollte eigentlich nicht triggern. Trotzdem triggert das DOIF jeden Morgen während der Schulferien und bleibt den ganzen Tag im CMD2...
Wo ist mein Fehler?
Danke, -MN
ZitatWE ist wahr, weil mein holiday2we Schulferien meldet.
Jedoch würden die Uhrzeiten einer Bedingung [06:30-06:06|WE] entsprechen, d.h. die Zeit sollte eigentlich nicht triggern. Trotzdem triggert das DOIF jeden Morgen während der Schulferien und bleibt den ganzen Tag im CMD2...
Wo ist mein Fehler?
In falscher Annahme.
[06:30-06:06|WE] bedeutet: wahr am Wochenende von 06:30 Uhr bis morgen um 06:06, die Zeiten triggern weiterhin
Hi,
da würde dann helfen:
([06:30-{sunrise_abs(+1200,"6:31","12:15")}|WE])
Aber eigentlich würde ich das anders definieren, das sieht umständlich aus. Du kannst doch alles in eine Bedingung für on packen?
Gruß Otto
Zitat von: Damian am 15 April 2019, 13:01:57
[06:30-06:06|WE] bedeutet: wahr am Wochenende von 06:30 Uhr bis morgen um 06:06, die Zeiten triggern weiterhin
Ja, wenn ich sunrise() nehme stimme ich Dir zu, 06:30 ist für heute und 06:06 wäre dann für morgen.
Das DOIF verwendet aber sunrise_abs(), d.h. ich habe [06:30-06:06|WE] und beide Zeiten für heute:
timer_03_c02 16.04.2019 06:30:00|WE 2019-04-15 09:11:12
timer_04_c02 16.04.2019 06:06:38|WE 2019-04-15 09:11:12
zeigen ja auch den 16.4.2019 für timer 03 und timer 04...?
Danke, -MN
Zitat von: Otto123 am 15 April 2019, 14:05:47
([06:30-{sunrise_abs(+1200,"6:31","12:15")}|WE])
Da geht das Licht dann für eine Minute an. Das ist ... suboptimal... und nicht sehr Smart...
Danke, -MN
Zitat von: Morgennebel am 15 April 2019, 14:54:25
Da geht das Licht dann für eine Minute an. Das ist ... suboptimal... und nicht sehr Smart...
Danke, -MN
Ich meine, wenn beide Zeiten übereinstimmen dann passiert nichts.
Zitat von: Damian am 15 April 2019, 16:26:09
Ich meine,...
Oh Damian, ich hätte es etwas genauer erwartet :)
@ MN, Das ist nicht die Zeit für morgen, das ist die Zeit für heute. Aber es ist einfach eine Zeit 06:06
Und DOIF ist so gut und rechnet über Mitternacht hinweg. Also von 6:30 bis zum nächsten Tag 6:06.
Deswegen musst Du die Zeit für Sunrise nicht "kleiner" werden lassen als 6:30.
Ich weiß eine Minute Licht -> suboptimal - merkt aber keiner :)
Vielleicht ist es so wie Damian sagt, ich habe mir das bisher nicht getraut. ;)
Gruß Otto
Zitat von: Otto123 am 15 April 2019, 18:31:44
Oh Damian, ich hätte es etwas genauer erwartet :)
@ MN, Das ist nicht die Zeit für morgen, das ist die Zeit für heute. Aber es ist einfach eine Zeit 06:06
Und DOIF ist so gut und rechnet über Mitternacht hinweg. Also von 6:30 bis zum nächsten Tag 6:06.
Deswegen musst Du die Zeit für Sunrise nicht "kleiner" werden lassen als 6:30.
Ich weiß eine Minute Licht -> suboptimal - merkt aber keiner :)
Vielleicht ist es so wie Damian sagt, ich habe mir das bisher nicht getraut. ;)
Gruß Otto
Was ich meine ist:
([06:30-{sunrise_abs(+1200,"
6:30","12:15")}|WE])
Damit triggert das Intervall [06:30-06:30]|WE um 06:30 Uhr ein mal , ist aber nicht wahr.
Danke an Alle,
ich habe es umgebaut und schaue, ob ich morgen früh genug aufwache (Schulferien sei Dank).
Ciao, -MN
@ Damian, ja war mir klar :)
Ich meine - klang etwas unsicher ;) deswegen hab ich es mir nie getraut.
Ok, ich probier das auch aus.
Mein Vorschlag, alles in einer Bedingung:
([05:30-{sunrise_abs(+1200,"5:30","10:00")}|AT] or
[06:30-{sunrise_abs(+1200,"6:30","10:00")}|WE] or
[{sunset_abs(-2100)}-21:45|SoMoDiMiDo] or
[{sunset_abs(-2100)}-22:30|MWEFrSa])
(setreading $SELF OutDoorLight on) DOELSE (setreading $SELF OutDoorLight off)
Gruß Otto