FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: JMW am 04 April 2015, 09:12:18

Titel: DOIF Timerzustände unklar
Beitrag 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.

Titel: Antw:DOIF Timerzustände unklar
Beitrag von: maxritti am 04 April 2015, 09:18:24
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
Titel: Antw:DOIF Timerzustände unklar
Beitrag von: maxritti am 04 April 2015, 09:28:17
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  ;)
Titel: Antw:DOIF Timerzustände unklar
Beitrag von: Damian am 04 April 2015, 09:41:40
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
Titel: Antw:DOIF Timerzustände unklar
Beitrag von: JMW am 04 April 2015, 12:53:56
Nun habe ich es verstanden.  Danke!