Ich verstehe die Zustände im DOIF Timer nicht.
Wieso heißen die Timer-Zeiten immer timer_x_c1 (x=1,2,3,4)?
Ich würde es verstehen, wenn diese timer_1_c1, timer_2_c2, timer_3_c1, timer_4_c2 als bezeichent wären.
Schließlich möchte um 08:00 und 14:00 Command1 und um 10:00 und 16:00 Command2 ausführen.
Hier mein DOIF:
Internals
CFGFN ./FHEM/Technik.cfg
DEF ([08:00-10:00] or [14:00-16:00]) (set SendePlatineKanal1 on) DOELSE (set SendePlatineKanal1 off)
NAME di_Lueftung
NR 213
NTFY_ORDER 50-di_Lueftung
STATE cmd_1
TYPE DOIF
Readings
cmd_event timer_1 2015-04-04 08:30:02
cmd_nr 1 2015-04-04 08:30:02
state cmd_1 2015-04-04 08:30:02
timer_1_c1 05.04.2015 08:00:00 2015-04-04 08:58:09
timer_2_c1 04.04.2015 10:00:00 2015-04-04 08:58:09
timer_3_c1 04.04.2015 14:00:00 2015-04-04 08:58:09
timer_4_c1 04.04.2015 16:00:00 2015-04-04 08:58:09
Danke.
Naja, von einem Command2, welches auf eine Zeit reagieren soll, ist bei Deiner DEF aber nichts zu sehen, da als DOELSE definiert.
Laut der Command Ref wird das DOIF so aufgebaut:
define <name> DOIF (<Bedingung>) (<Befehle>) DOELSEIF (<Bedingung>) (<Befehle>) DOELSEIF ... DOELSE (<Befehle>)
Deine Bedingung 1 lautet ([08:00-10:00] or [14:00-16:00]) und damit zu cmd_1
DOELSE wird immer ausgefürt, wenn Bedingung 1 nicht wahr wird.
Also alles korrekt mit timer_x_c1.
Bei meinem Rollo habe ich mehrere Bedigungen pro Command.
((([EG_dr_TS_Terrasse:luminosity] < [du_Rollo_Luminosity_ru] and ([du_Tageslicht:state] eq "dunkel")) or [[du_Rollo_Zeit_ru]]))
({if (ReadingsVal("OG_ki1_RO_Carport", "state", "---") ne "off") {fhem("set OG_ki1_RO_Carport off")}})
DOELSEIF (([[du_Rollo_Zeit_ho]|8] or [[du_Rollo_Zeit_ho_WE]|7]))
({if ((ReadingsVal("OG_ki1_RO_Carport", "state", "---") ne "on") && (ReadingsVal("du_Rollo_Art", "state", "---") ne "Schulferien")) {fhem("set OG_ki1_RO_Carport on")}})
Somit gibt es auch wie du korrekt vermuten würdest, beim list mehrere Timer pro cmd.
2015-04-03 22:15:00 timer_1_c1 04.04.2015 22:15:00
2015-04-04 06:40:00 timer_2_c2 05.04.2015 06:40:00|8
2015-04-03 13:58:04 timer_3_c2 04.04.2015 09:30:00|7
Das was Du möchtest sollte so aussehen:
([08:00] or [14:00]) (set SendePlatineKanal1 on) DOELSEIF ([10:00] or [16:00]) (set SendePlatineKanal1 off)
und ein list liefert dann auch timer_x_c1 und timer_y_c2 ;)
Zitat von: JMW am 04 April 2015, 09:12:18
Ich verstehe die Zustände im DOIF Timer nicht.
Wieso heißen die Timer-Zeiten immer timer_x_c1 (x=1,2,3,4)?
Ich würde es verstehen, wenn diese timer_1_c1, timer_2_c2, timer_3_c1, timer_4_c2 als bezeichent wären.
Schließlich möchte um 08:00 und 14:00 Command1 und um 10:00 und 16:00 Command2 ausführen.
Hier mein DOIF:
Internals
CFGFN ./FHEM/Technik.cfg
DEF ([08:00-10:00] or [14:00-16:00]) (set SendePlatineKanal1 on) DOELSE (set SendePlatineKanal1 off)
NAME di_Lueftung
NR 213
NTFY_ORDER 50-di_Lueftung
STATE cmd_1
TYPE DOIF
Readings
cmd_event timer_1 2015-04-04 08:30:02
cmd_nr 1 2015-04-04 08:30:02
state cmd_1 2015-04-04 08:30:02
timer_1_c1 05.04.2015 08:00:00 2015-04-04 08:58:09
timer_2_c1 04.04.2015 10:00:00 2015-04-04 08:58:09
timer_3_c1 04.04.2015 14:00:00 2015-04-04 08:58:09
timer_4_c1 04.04.2015 16:00:00 2015-04-04 08:58:09
Danke.
All deine Timer befinden sich in der ersten Bedingung (engl. condition) daher für alle ...c1.
Gruß
Damian
Nun habe ich es verstanden. Danke!