DOIF Timerzustände unklar

Begonnen von JMW, 04 April 2015, 09:12:18

Vorheriges Thema - Nächstes Thema

JMW

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.


maxritti

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

maxritti

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  ;)

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

JMW

Nun habe ich es verstanden.  Danke!