Ich versuche für meine Weihnachtsbeleuchtung eine schöne Programmierung zu finden, doch leider schaffe ich es nicht Werktags und Wochenende zu differenzieren.
Unter der Woche soll die beleuchtung 1 Stunde vor Sonnenuntergang angehen und am Wochenende grundsätzlich um 14 Uhr.
(([{sunset(-3600)}|8]) and ([Anwesenheitsstatus] eq "1") and ([Schlafend] eq "off"))
(set light_wz_weihnachtsbeleuchtung on) (set plug_wz_weihnacht on)
DOELSEIF (([02:00|9]) and ([Anwesenheitsstatus] eq "1") and ([Schlafend] eq "off"))
(set light_wz_weihnachtsbeleuchtung on) (set plug_wz_weihnacht on)
DOELSEIF ([Anwesenheitsstatus] eq "2")
(set light_wz_weihnachtsbeleuchtung off) (set plug_wz_weihnacht off)
Hat am Wochenende aber leider nicht reagiert.
Hat jemand eine Idee wo der Fehler steckt?
Hier noch das List zum DOIF:
ZitatInternals:
DEF (([{sunset(-3600)}|8]) and ([Anwesenheitsstatus] eq "1") and ([Schlafend] eq "off"))
(set light_wz_weihnachtsbeleuchtung on) (set plug_wz_weihnacht on)
DOELSEIF (([02:00|9]) and ([Anwesenheitsstatus] eq "1") and ([Schlafend] eq "off"))
(set light_wz_weihnachtsbeleuchtung on) (set plug_wz_weihnacht on)
DOELSEIF ([Anwesenheitsstatus] eq "2")
(set light_wz_weihnachtsbeleuchtung off) (set plug_wz_weihnacht off)
FUUID 619ad051-f33f-6c14-bd8c-92271681f80c033e
FVERSION 98_DOIF.pm:0.249050/2021-09-01
MODEL FHEM
NAME christmastree_control
NOTIFYDEV Anwesenheitsstatus,global,Schlafend
NR 280
NTFY_ORDER 50-christmastree_control
STATE initialized
TYPE DOIF
VERSION 24905 2021-09-01 18:35:54
READINGS:
2021-11-30 11:17:32 cmd 0
2021-11-30 11:17:32 mode enabled
2021-11-30 11:17:32 state initialized
2021-11-30 11:17:32 timer_01_c01 30.11.2021 16:11:25|8
2021-11-30 11:17:32 timer_02_c02 01.12.2021 02:00:00|9
Regex:
accu:
collect:
cond:
Anwesenheitsstatus:
0:
&STATE ^Anwesenheitsstatus$
1:
&STATE ^Anwesenheitsstatus$
2:
&STATE ^Anwesenheitsstatus$
Schlafend:
0:
&STATE ^Schlafend$
1:
&STATE ^Schlafend$
attr:
cmdState:
wait:
0:
0
1800
1:
0
1800
2:
0
0
waitdel:
condition:
0 (::DOIF_time_once($hash,0,$wday,"8")) and (::InternalDoIf($hash,'Anwesenheitsstatus','STATE') eq "1") and (::InternalDoIf($hash,'Schlafend','STATE') eq "off")
1 (::DOIF_time_once($hash,1,$wday,"9")) and (::InternalDoIf($hash,'Anwesenheitsstatus','STATE') eq "1") and (::InternalDoIf($hash,'Schlafend','STATE') eq "off")
2 ::InternalDoIf($hash,'Anwesenheitsstatus','STATE') eq "2"
days:
0 8
1 9
do:
0:
0 set light_wz_weihnachtsbeleuchtung on
1 set plug_wz_weihnacht on
1:
0 set light_wz_weihnachtsbeleuchtung on
1 set plug_wz_weihnacht on
2:
0 set light_wz_weihnachtsbeleuchtung off
1 set plug_wz_weihnacht off
3:
helper:
DEVFILTER ^global$|^Anwesenheitsstatus$|^Schlafend$
NOTIFYDEV global|Anwesenheitsstatus|Schlafend
globalinit 1
last_timer 2
sleeptimer -1
internals:
all Anwesenheitsstatus:STATE Schlafend:STATE
intervalfunc:
localtime:
0 1638285085
1 1638320400
realtime:
0 16:11:25
1 02:00:00
time:
0 {sunset(-3600)}
1 02:00:00
timeCond:
0 0
1 1
timer:
0 0
1 0
timers:
0 0
1 1
triggertime:
1638285085:
localtime 1638285085
hash:
1638320400:
localtime 1638320400
hash:
uiState:
uiTable:
Attributes:
alias Steuerung Weihnachtsbeleuchtung
do always
group Weihnachtsbeleuchtung
room Steuerung->Licht->Wohnzimmer
wait 0,1800:0,1800:0,0
Zitatgrundsätzlich um 14 Uhr is aber nich ([02:00|9])
und um 2:00 war [Schlafend] vermutlich nicht "off"
Zitat von: Sany am 01 Dezember 2021, 08:36:52
und um 2:00 war [Schlafend] vermutlich nicht "off"
9 bedeutet "morgen Wochenende", ich denke, dass das hier nicht gewollt war
7 bedeutet "Wochenende"
8 bedeutet "Arbeitstage"
siehe https://fhem.de/commandref_DE.html#DOIF_Wochentagsteuerung
Stimmt, 2 Uhr ist natürlich nicht 14 Uhr. Mein Fehler.
Laut CommandRef ist 9 Wochenende und Feiertage.
Keine Ahnung was mit "morgen Wochenende" gemeint ist.
Zitat von: Superposchi am 01 Dezember 2021, 13:13:57
Stimmt, 2 Uhr ist natürlich nicht 14 Uhr. Mein Fehler.
Laut CommandRef ist 9 Wochenende und Feiertage.
Keine Ahnung was mit "morgen Wochenende" gemeint ist.
Auszug aus der Commandref:
[<time>|0123456789] 0-9 entspricht: 0-Sonntag, 1-Montag, ... bis 6-Samstag sowie 7 für Wochenende und Feiertage (entspricht $we), 8 für Arbeitstage (entspricht !$we) und
9 für Wochenende oder Feiertag morgen (entspricht intern $twe)
Ok, die Zeile darunter war mir nicht aufgefallen.
Woher nimmt er eigentlich die Feiertage?
Zitat von: Superposchi am 02 Dezember 2021, 16:43:30
Ok, die Zeile darunter war mir nicht aufgefallen.
Woher nimmt er eigentlich die Feiertage?
Wochenende und Feiertage entsprechen der globalen FHEM-Variable $we. Diese wiederum wird für Feiertage vom Modul holiday belegt.