Hallöle,
ich möchte meine Rollos in Abhängigkeit von Wochen/Feiertag sowie Woche/Feiertag des Folgetages schalten.
Momentan ist das ganze noch im Test.
Dazu habe ich ein separates DOIF-Modul angelegt, welches diesen Status ermittelt.
Ich verwende die Syntax von Damian, 8=!WE sowie 7=WE.
88 = heute Wochentag+morgen Wochentag
87 = heute Wochentag+morgen Feiertag
78 = heute Feiertag+morgen Wochentag
77 = heute Feiertag+morgen Wochentag
In meinem FHEM-Kalender sind alle Sam+Sonntage separat eingetragen
Hier mal das List des entsprechenden Moduls:
Internals:
DEF ((!$we) and [NRW_Feiertag:tomorrow] eq "none")
(setstate RolloSteuerungHinten 88)
DOELSEIF
((!$we) and [NRW_Feiertag:tomorrow] ne "none")
(setstate RolloSteuerungHinten 87)
DOELSEIF
(($we) and [NRW_Feiertag:tomorrow] eq "none")
(setstate RolloSteuerungHinten 78)
DOELSEIF
(($we) and [NRW_Feiertag:tomorrow] ne "none")
(setstate RolloSteuerungHinten 77)
NAME RolloSteuerungHinten
NR 989
NTFY_ORDER 50-RolloSteuerungHinten
STATE 77
TYPE DOIF
Readings:
2017-05-06 00:00:28 Device NRW_Feiertag
2017-05-06 00:00:28 cmd 4
2017-05-06 00:00:28 cmd_event NRW_Feiertag
2017-05-06 00:00:28 cmd_nr 4
2017-05-06 00:00:28 e_NRW_Feiertag_tomorrow Sonntag
2017-05-06 00:00:28 state 77
Condition:
0 (!$we) and ReadingValDoIf($hash,'NRW_Feiertag','tomorrow') eq "none"
1 (!$we) and ReadingValDoIf($hash,'NRW_Feiertag','tomorrow') ne "none"
2 ($we) and ReadingValDoIf($hash,'NRW_Feiertag','tomorrow') eq "none"
3 ($we) and ReadingValDoIf($hash,'NRW_Feiertag','tomorrow') ne "none"
Devices:
0 NRW_Feiertag
1 NRW_Feiertag
2 NRW_Feiertag
3 NRW_Feiertag
all NRW_Feiertag
Do:
0:
0 setstate RolloSteuerungHinten 88
1:
0 setstate RolloSteuerungHinten 87
2:
0 setstate RolloSteuerungHinten 78
3:
0 setstate RolloSteuerungHinten 77
4:
Helper:
event Samstag,yesterday: none,tomorrow: Sonntag
globalinit 1
last_timer 0
sleeptimer -1
timerdev NRW_Feiertag
timerevent Samstag,yesterday: none,tomorrow: Sonntag
triggerDev NRW_Feiertag
Bm:
Doif_notify:
cnt 9636
dmx 0
mTS 06.05. 12:02:44
max 8
tot 27
mAr:
HASH(0x4241d28)
HASH(0x4188360)
Doif_set:
cnt 19
dmx 0
mAr
mTS
max 0
tot 0
timerevents:
Samstag
yesterday: none
tomorrow: Sonntag
timereventsState:
state: Samstag
yesterday: none
tomorrow: Sonntag
triggerEvents:
Samstag
yesterday: none
tomorrow: Sonntag
triggerEventsState:
state: Samstag
yesterday: none
tomorrow: Sonntag
Internals:
Itimer:
Readings:
0 NRW_Feiertag:tomorrow
1 NRW_Feiertag:tomorrow
2 NRW_Feiertag:tomorrow
3 NRW_Feiertag:tomorrow
all NRW_Feiertag:tomorrow
Regexp:
0:
1:
2:
3:
All:
State:
State:
Trigger:
Attributes:
cmdState 88|87|78|77
do always
room DOIF,Jalousien
Dieser Status soll dann vom Rollo-DOIF abgefragt werden.
Nun das eigentliche RolloDOIF:
Internals:
CFGFN
DEF ((([06:25-13:00] and [RolloSteuerungHinten] eq "88") ##Heute + morgen Arbeit
or
([06:25-13:30] and [RolloSteuerungHinten] eq "87") ## Heute Arbeit + morgen frei
or
([[RolloWEHinten]-13:00] and [RolloSteuerungHinten] eq "78") ## Heute Frei + morgen Arbeit
or
([[RolloWEHinten]-13:30] and [RolloSteuerungHinten] eq "77") ## Heute + morgen Frei
)
and [1wire_Lux:Helligkeit] > [1wireLuxRollo] ## wenn hell
and [ClaudiaArbeit] eq "off" ## wenn Anwesend
)
(set RolloVorneTest on)
DOELSE
(set RolloVorneTest off)
NAME Ti_RolloHintenTest
NR 27474
NTFY_ORDER 50-Ti_RolloHintenTest
STATE fts_shutter_100
TYPE DOIF
Readings:
2017-05-06 15:08:50 Device 1wire_Lux
2017-05-06 13:30:00 cmd 2
2017-05-06 13:30:00 cmd_count 1
2017-05-06 13:30:00 cmd_event timer_4
2017-05-06 13:30:00 cmd_nr 2
2017-05-06 15:08:50 e_1wire_Lux_Helligkeit 237.317
2017-05-06 13:30:00 state fts_shutter_100
2017-05-06 13:00:00 timer_01_c01 07.05.2017 06:25:00
2017-05-06 13:00:00 timer_02_c01 07.05.2017 13:00:00
2017-05-06 13:30:00 timer_03_c01 07.05.2017 06:25:00
2017-05-06 13:30:00 timer_04_c01 07.05.2017 13:30:00
2017-05-06 13:00:00 timer_05_c01 07.05.2017 08:30:00
2017-05-06 13:00:00 timer_06_c01 07.05.2017 13:00:00
2017-05-06 13:30:00 timer_07_c01 07.05.2017 08:30:00
2017-05-06 13:30:00 timer_08_c01 07.05.2017 13:30:00
2017-05-06 15:08:50 wait_timer 06.05.2017 15:09:20 cmd_2 1wire_Lux
Condition:
0 ((DOIF_time($hash,0,1,$wday,$hms) and InternalDoIf($hash,'RolloSteuerungHinten','STATE') eq "88") or (DOIF_time($hash,2,3,$wday,$hms) and InternalDoIf($hash,'RolloSteuerungHinten','STATE') eq "87") or (DOIF_time($hash,4,5,$wday,$hms) and InternalDoIf($hash,'RolloSteuerungHinten','STATE') eq "78") or (DOIF_time($hash,6,7,$wday,$hms) and InternalDoIf($hash,'RolloSteuerungHinten','STATE') eq "77") ) and ReadingValDoIf($hash,'1wire_Lux','Helligkeit') > InternalDoIf($hash,'1wireLuxRollo','STATE') and InternalDoIf($hash,'ClaudiaArbeit','STATE') eq "off"
Days:
Devices:
0 RolloSteuerungHinten 1wire_Lux 1wireLuxRollo ClaudiaArbeit
all RolloSteuerungHinten 1wire_Lux 1wireLuxRollo ClaudiaArbeit
Do:
0:
0 set RolloVorneTest on
1:
0 set RolloVorneTest off
Helper:
event Helligkeit: 237.317
globalinit 1
last_timer 8
sleepdevice 1wire_Lux
sleepsubtimer 0
sleeptimer 1
timerdev 1wire_Lux
timerevent Helligkeit: 237.317
triggerDev 1wire_Lux
Bm:
Doif_notify:
cnt 4073
dmx 0
mTS 06.05. 13:58:44
max 210
tot 6088
mAr:
HASH(0x52be888)
HASH(0x4a51080)
Doif_set:
cnt 71
dmx 0
mTS 06.05. 12:39:04
max 959
tot 1498
mAr:
HASH(0x52be888)
Ti_RolloHintenTest
cmd_2
timerevents:
Helligkeit: 237.317
timereventsState:
Helligkeit: 237.317
triggerEvents:
Helligkeit: 237.317
triggerEventsState:
Helligkeit: 237.317
Internals:
0 RolloSteuerungHinten:STATE 1wireLuxRollo:STATE ClaudiaArbeit:STATE
all RolloSteuerungHinten:STATE 1wireLuxRollo:STATE ClaudiaArbeit:STATE
Interval:
0 -1
1 0
2 -1
3 2
4 -1
5 4
6 -1
7 6
Itimer:
all RolloWEHinten
Localtime:
0 1494131100
1 1494154800
2 1494131100
3 1494156600
4 1494138600
5 1494154800
6 1494138600
7 1494156600
Readings:
0 1wire_Lux:Helligkeit
all 1wire_Lux:Helligkeit
Realtime:
0 06:25:00
1 13:00:00
2 06:25:00
3 13:30:00
4 08:30:00
5 13:00:00
6 08:30:00
7 13:30:00
Regexp:
0:
All:
State:
State:
Time:
0 06:25:00
1 13:00:00
2 06:25:00
3 13:30:00
4 [RolloWEHinten]
5 13:00:00
6 [RolloWEHinten]
7 13: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:
1494131100:
localtime 1494131100
Hash:
1494138600:
localtime 1494138600
Hash:
1494154800:
localtime 1494154800
Hash:
1494156600:
localtime 1494156600
Hash:
Attributes:
cmdState fts_shutter_10|fts_shutter_100
group 01 Timer
repeatcmd 1:1
repeatsame 1:1
room Jalousien
setList state:on,off
wait 30:[WaitWz]
webCmd on:off
Heute um 13:30 wurde "timer_4" ausgeführt, erwartet habe ich aber "timer_8" weil der "Tagesstatus" = "77" und nicht "87" ist.
Habt Ihr ne Idee wieso ? Ich hab da etwas Tomaten auf den Augen...
Evtl. wegen des gleichen Wertes. Irgendwann wurden gleiche Timer zusammen gelegt. Ändere die doch mal um eine Minute voneinander und schau dann.
Zitat von: Per am 07 Mai 2017, 07:31:36
Evtl. wegen des gleichen Wertes. Irgendwann wurden gleiche Timer zusammen gelegt.
Ah, ok, probiere ich mal