Hilfe bei einer DOIF-Definition benötigt (Heizung, Stellantriebe)

Begonnen von Gisbert, 02 Januar 2019, 09:02:16

Vorheriges Thema - Nächstes Thema

Gisbert

Hallo,

vielleicht kann mir jemand auf die Sprünge helfen. Ich dachte, dass ich DOIF verstanden hätte, aber die folgende Definition macht was anderes als erwartet.

Zur Beschreibung:
Es geht um eine Fußbodenheizung mit 6 Stellantrieben.
Die ersten 6 commands schalten ab 0:45 (Wochentag) oder 1:45 (Wochende) die Stellantriebe an, falls sie aus sind ("== 1" heißt, dass die Stellantriebe aus sind) und die Temperatur unterhalb des angegebenen Wertes ist. Auf die ersten beiden Bedingungen wird nicht getriggert (führendes Fragezeichen "?", es wird nur auf die Temperatur getriggert.
Die nächsten 6 commands beziehen sich auf das Ausschalten, wenn die Temperatur erreicht ist, und als Nebenbedingung die Ventile an sind ("==0" bedeudet an).
Das letzte, 13te command schaltet alle Ventile um 19:30 aus.

Was passiert: es werden zunächst die ersten 6 commands ausgeführt (das habe ich aber nicht live mitbekommen, da mitten in der Nacht), und dann wird bei jeder Temperaturänderung im Command 6 (Temperatur "SZ.Petra") immer und ausschließlich das Command Nr. 6 ausgeführt, obwohl der Stellantrieb an ist, also "==0", die nicht-triggernde Bedingung aber "==1" fordert.
[Edit]: alle 6 Temperaturen werden nahezu zeitgleich eingelesen. Jetzt habe ich beobachtet, dass die 6 ersten commands alle sehr schnell hintereinander ausgeführt worden sind, es bleibt dann cmd_6 sichtbar stehen.

Ich verstehe es nicht und komme auch nicht dahinter.
Die nachfolgenden Zweige werden dann nicht ausgeführt, die zum Ausschalten der Stellantriebe führen sollen, obwohl die Bedingungen dazu erfüllt sind.

Was mache ich falsch?
Wie kann ich sinnvoll das Problem in kleinere Portionen zerlegen?

Die Definition:
defmod Heizkreisverteiler.OG DOIF (([?0:45-19:15|12345]) or ([?1:45-19:15|06]) and [?Stellantriebe.OG:Bad] == 1 and [Temp.OG:Badezimmer] <= 22) \
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,5,0&") \
DOELSEIF (([?0:45-19:15|12345]) or ([?1:45-19:15|06]) and [?Stellantriebe.OG:Kind1] == 1 and [Temp.OG:SZ.Felix] <= 21) \
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,14,0&") \
DOELSEIF (([?0:45-19:15|12345]) or ([?1:45-19:15|06]) and [?Stellantriebe.OG:Kind2] == 1 and [Temp.OG:SZ.Christine] <= 21) \
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,2,0&") \
DOELSEIF (([?0:45-19:15|12345]) or ([?1:45-19:15|06]) and [?Stellantriebe.OG:Diele] == 1 and [Temp.OG:OG.Flur] <= 21) \
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,4,0&") \
DOELSEIF (([?0:45-19:15|12345]) or ([?1:45-19:15|06]) and [?Stellantriebe.OG:Schlafen] == 1 and [Temp.OG:SZ.Gisbert] <= 16) \
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,12,0&") \
DOELSEIF (([?0:45-19:15|12345]) or ([?1:45-19:15|06]) and [?Stellantriebe.OG:Gaeste] == 1 and [Temp.OG:SZ.Petra] <= 21) \
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,0,0&") \
DOELSEIF ([?Stellantriebe.OG:Bad] == 0 and [Temp.OG:Badezimmer] > 22) \
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,5,1&") \
DOELSEIF ([?Stellantriebe.OG:Kind1] == 0 and [Temp.OG:SZ.Felix] > 21) \
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,14,1&") \
DOELSEIF ([?Stellantriebe.OG:Kind2] == 0 and [Temp.OG:SZ.Christine] > 21) \
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,2,1&") \
DOELSEIF ([?Stellantriebe.OG:Diele] == 0 and [Temp.OG:OG.Flur] > 21) \
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,4,1&") \
DOELSEIF ([?Stellantriebe.OG:Schlafen] == 0 and [Temp.OG:SZ.Gisbert] > 16) \
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,12,1&") \
DOELSEIF ([?Stellantriebe.OG:Gaeste] == 0 and [Temp.OG:SZ.Petra] > 21) \
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,0,1&") \
DOELSEIF ([19:30]) \
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,0,1&") \
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,2,1&") \
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,4,1&") \
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,5,1&") \
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,12,1&") \
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,14,1&")
attr Heizkreisverteiler.OG icon sani_heating
attr Heizkreisverteiler.OG room Heizung
attr Heizkreisverteiler.OG wait 0:0:0:0:0:0:0:0:0:0:0:0:2,2,2,2,2,2

setstate Heizkreisverteiler.OG cmd_6
setstate Heizkreisverteiler.OG 2019-01-02 08:57:44 Device Temp.OG
setstate Heizkreisverteiler.OG 2019-01-02 08:56:45 cmd 6
setstate Heizkreisverteiler.OG 2019-01-02 08:56:45 cmd_event Temp.OG
setstate Heizkreisverteiler.OG 2019-01-02 08:56:45 cmd_nr 6
setstate Heizkreisverteiler.OG 2019-01-02 08:56:44 e_Temp.OG_Badezimmer 22.2
setstate Heizkreisverteiler.OG 2019-01-02 08:56:44 e_Temp.OG_OG.Flur 21.2
setstate Heizkreisverteiler.OG 2019-01-02 08:56:45 e_Temp.OG_SZ.Christine 21.2
setstate Heizkreisverteiler.OG 2019-01-02 08:56:44 e_Temp.OG_SZ.Felix 20.1
setstate Heizkreisverteiler.OG 2019-01-02 08:56:44 e_Temp.OG_SZ.Gisbert 15.8
setstate Heizkreisverteiler.OG 2019-01-02 08:56:45 e_Temp.OG_SZ.Petra 20.0
setstate Heizkreisverteiler.OG 2019-01-02 08:44:25 mode enabled
setstate Heizkreisverteiler.OG 2019-01-02 08:56:45 state cmd_6
setstate Heizkreisverteiler.OG 2019-01-02 08:44:25 timer_01_c01 03.01.2019 00:45:00|12345
setstate Heizkreisverteiler.OG 2019-01-02 08:44:25 timer_02_c01 02.01.2019 19:15:00|12345
setstate Heizkreisverteiler.OG 2019-01-02 08:44:25 timer_03_c01 03.01.2019 01:45:00|06
setstate Heizkreisverteiler.OG 2019-01-02 08:44:25 timer_04_c01 02.01.2019 19:15:00|06
setstate Heizkreisverteiler.OG 2019-01-02 08:44:25 timer_05_c02 03.01.2019 00:45:00|12345
setstate Heizkreisverteiler.OG 2019-01-02 08:44:25 timer_06_c02 02.01.2019 19:15:00|12345
setstate Heizkreisverteiler.OG 2019-01-02 08:44:25 timer_07_c02 03.01.2019 01:45:00|06
setstate Heizkreisverteiler.OG 2019-01-02 08:44:25 timer_08_c02 02.01.2019 19:15:00|06
setstate Heizkreisverteiler.OG 2019-01-02 08:44:25 timer_09_c03 03.01.2019 00:45:00|12345
setstate Heizkreisverteiler.OG 2019-01-02 08:44:25 timer_10_c03 02.01.2019 19:15:00|12345
setstate Heizkreisverteiler.OG 2019-01-02 08:44:25 timer_11_c03 03.01.2019 01:45:00|06
setstate Heizkreisverteiler.OG 2019-01-02 08:44:25 timer_12_c03 02.01.2019 19:15:00|06
setstate Heizkreisverteiler.OG 2019-01-02 08:44:25 timer_13_c04 03.01.2019 00:45:00|12345
setstate Heizkreisverteiler.OG 2019-01-02 08:44:25 timer_14_c04 02.01.2019 19:15:00|12345
setstate Heizkreisverteiler.OG 2019-01-02 08:44:25 timer_15_c04 03.01.2019 01:45:00|06
setstate Heizkreisverteiler.OG 2019-01-02 08:44:25 timer_16_c04 02.01.2019 19:15:00|06
setstate Heizkreisverteiler.OG 2019-01-02 08:44:25 timer_17_c05 03.01.2019 00:45:00|12345
setstate Heizkreisverteiler.OG 2019-01-02 08:44:25 timer_18_c05 02.01.2019 19:15:00|12345
setstate Heizkreisverteiler.OG 2019-01-02 08:44:25 timer_19_c05 03.01.2019 01:45:00|06
setstate Heizkreisverteiler.OG 2019-01-02 08:44:25 timer_20_c05 02.01.2019 19:15:00|06
setstate Heizkreisverteiler.OG 2019-01-02 08:44:25 timer_21_c06 03.01.2019 00:45:00|12345
setstate Heizkreisverteiler.OG 2019-01-02 08:44:25 timer_22_c06 02.01.2019 19:15:00|12345
setstate Heizkreisverteiler.OG 2019-01-02 08:44:25 timer_23_c06 03.01.2019 01:45:00|06
setstate Heizkreisverteiler.OG 2019-01-02 08:44:25 timer_24_c06 02.01.2019 19:15:00|06
setstate Heizkreisverteiler.OG 2019-01-02 08:44:25 timer_25_c13 02.01.2019 19:30:00



Ein list:
Internals:
   CFGFN      ./FHEM/HeizungWarmwasser.cfg
   DEF        (([?0:45-19:15|12345]) or ([?1:45-19:15|06]) and [?Stellantriebe.OG:Bad] == 1 and [Temp.OG:Badezimmer] <= 22)
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,5,0&")
DOELSEIF (([?0:45-19:15|12345]) or ([?1:45-19:15|06]) and [?Stellantriebe.OG:Kind1] == 1 and [Temp.OG:SZ.Felix] <= 21)
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,14,0&")
DOELSEIF (([?0:45-19:15|12345]) or ([?1:45-19:15|06]) and [?Stellantriebe.OG:Kind2] == 1 and [Temp.OG:SZ.Christine] <= 21)
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,2,0&")
DOELSEIF (([?0:45-19:15|12345]) or ([?1:45-19:15|06]) and [?Stellantriebe.OG:Diele] == 1 and [Temp.OG:OG.Flur] <= 21)
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,4,0&")
DOELSEIF (([?0:45-19:15|12345]) or ([?1:45-19:15|06]) and [?Stellantriebe.OG:Schlafen] == 1 and [Temp.OG:SZ.Gisbert] <= 16)
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,12,0&")
DOELSEIF (([?0:45-19:15|12345]) or ([?1:45-19:15|06]) and [?Stellantriebe.OG:Gaeste] == 1 and [Temp.OG:SZ.Petra] <= 21)
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,0,0&")
DOELSEIF ([?Stellantriebe.OG:Bad] == 0 and [Temp.OG:Badezimmer] > 22)
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,5,1&")
DOELSEIF ([?Stellantriebe.OG:Kind1] == 0 and [Temp.OG:SZ.Felix] > 21)
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,14,1&")
DOELSEIF ([?Stellantriebe.OG:Kind2] == 0 and [Temp.OG:SZ.Christine] > 21)
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,2,1&")
DOELSEIF ([?Stellantriebe.OG:Diele] == 0 and [Temp.OG:OG.Flur] > 21)
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,4,1&")
DOELSEIF ([?Stellantriebe.OG:Schlafen] == 0 and [Temp.OG:SZ.Gisbert] > 16)
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,12,1&")
DOELSEIF ([?Stellantriebe.OG:Gaeste] == 0 and [Temp.OG:SZ.Petra] > 21)
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,0,1&")
DOELSEIF ([19:30])
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,0,1&")
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,2,1&")
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,4,1&")
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,5,1&")
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,12,1&")
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,14,1&")
   MODEL      FHEM
   NAME       Heizkreisverteiler.OG
   NR         402
   NTFY_ORDER 50-Heizkreisverteiler.OG
   STATE      cmd_6
   TYPE       DOIF
   .attraggr:
   .attrminint:
   READINGS:
     2019-01-02 08:58:14   Device          Temp.OG
     2019-01-02 08:56:45   cmd             6
     2019-01-02 08:56:45   cmd_event       Temp.OG
     2019-01-02 08:56:45   cmd_nr          6
     2019-01-02 08:56:44   e_Temp.OG_Badezimmer 22.2
     2019-01-02 08:56:44   e_Temp.OG_OG.Flur 21.2
     2019-01-02 08:56:45   e_Temp.OG_SZ.Christine 21.2
     2019-01-02 08:56:44   e_Temp.OG_SZ.Felix 20.1
     2019-01-02 08:56:44   e_Temp.OG_SZ.Gisbert 15.8
     2019-01-02 08:56:45   e_Temp.OG_SZ.Petra 20.0
     2019-01-02 08:44:25   mode            enabled
     2019-01-02 08:56:45   state           cmd_6
     2019-01-02 08:44:25   timer_01_c01    03.01.2019 00:45:00|12345
     2019-01-02 08:44:25   timer_02_c01    02.01.2019 19:15:00|12345
     2019-01-02 08:44:25   timer_03_c01    03.01.2019 01:45:00|06
     2019-01-02 08:44:25   timer_04_c01    02.01.2019 19:15:00|06
     2019-01-02 08:44:25   timer_05_c02    03.01.2019 00:45:00|12345
     2019-01-02 08:44:25   timer_06_c02    02.01.2019 19:15:00|12345
     2019-01-02 08:44:25   timer_07_c02    03.01.2019 01:45:00|06
     2019-01-02 08:44:25   timer_08_c02    02.01.2019 19:15:00|06
     2019-01-02 08:44:25   timer_09_c03    03.01.2019 00:45:00|12345
     2019-01-02 08:44:25   timer_10_c03    02.01.2019 19:15:00|12345
     2019-01-02 08:44:25   timer_11_c03    03.01.2019 01:45:00|06
     2019-01-02 08:44:25   timer_12_c03    02.01.2019 19:15:00|06
     2019-01-02 08:44:25   timer_13_c04    03.01.2019 00:45:00|12345
     2019-01-02 08:44:25   timer_14_c04    02.01.2019 19:15:00|12345
     2019-01-02 08:44:25   timer_15_c04    03.01.2019 01:45:00|06
     2019-01-02 08:44:25   timer_16_c04    02.01.2019 19:15:00|06
     2019-01-02 08:44:25   timer_17_c05    03.01.2019 00:45:00|12345
     2019-01-02 08:44:25   timer_18_c05    02.01.2019 19:15:00|12345
     2019-01-02 08:44:25   timer_19_c05    03.01.2019 01:45:00|06
     2019-01-02 08:44:25   timer_20_c05    02.01.2019 19:15:00|06
     2019-01-02 08:44:25   timer_21_c06    03.01.2019 00:45:00|12345
     2019-01-02 08:44:25   timer_22_c06    02.01.2019 19:15:00|12345
     2019-01-02 08:44:25   timer_23_c06    03.01.2019 01:45:00|06
     2019-01-02 08:44:25   timer_24_c06    02.01.2019 19:15:00|06
     2019-01-02 08:44:25   timer_25_c13    02.01.2019 19:30:00
   Regex:
   attr:
     cmdState:
     wait:
       0:
         0
       1:
         0
       10:
         0
       11:
         0
       12:
         2
         2
         2
         2
         2
         2
       2:
         0
       3:
         0
       4:
         0
       5:
         0
       6:
         0
       7:
         0
       8:
         0
       9:
         0
     waitdel:
   condition:
     0          (::DOIF_time($hash,0,1,$wday,$hms,"12345")) or (::DOIF_time($hash,2,3,$wday,$hms,"06")) and ::ReadingValDoIf($hash,'Stellantriebe.OG','Bad') == 1 and ::ReadingValDoIf($hash,'Temp.OG','Badezimmer') <= 22
     1          (::DOIF_time($hash,4,5,$wday,$hms,"12345")) or (::DOIF_time($hash,6,7,$wday,$hms,"06")) and ::ReadingValDoIf($hash,'Stellantriebe.OG','Kind1') == 1 and ::ReadingValDoIf($hash,'Temp.OG','SZ.Felix') <= 21
     10         ::ReadingValDoIf($hash,'Stellantriebe.OG','Schlafen') == 0 and ::ReadingValDoIf($hash,'Temp.OG','SZ.Gisbert') > 16
     11         ::ReadingValDoIf($hash,'Stellantriebe.OG','Gaeste') == 0 and ::ReadingValDoIf($hash,'Temp.OG','SZ.Petra') > 21
     12         ::DOIF_time_once($hash,24,$wday)
     2          (::DOIF_time($hash,8,9,$wday,$hms,"12345")) or (::DOIF_time($hash,10,11,$wday,$hms,"06")) and ::ReadingValDoIf($hash,'Stellantriebe.OG','Kind2') == 1 and ::ReadingValDoIf($hash,'Temp.OG','SZ.Christine') <= 21
     3          (::DOIF_time($hash,12,13,$wday,$hms,"12345")) or (::DOIF_time($hash,14,15,$wday,$hms,"06")) and ::ReadingValDoIf($hash,'Stellantriebe.OG','Diele') == 1 and ::ReadingValDoIf($hash,'Temp.OG','OG.Flur') <= 21
     4          (::DOIF_time($hash,16,17,$wday,$hms,"12345")) or (::DOIF_time($hash,18,19,$wday,$hms,"06")) and ::ReadingValDoIf($hash,'Stellantriebe.OG','Schlafen') == 1 and ::ReadingValDoIf($hash,'Temp.OG','SZ.Gisbert') <= 16
     5          (::DOIF_time($hash,20,21,$wday,$hms,"12345")) or (::DOIF_time($hash,22,23,$wday,$hms,"06")) and ::ReadingValDoIf($hash,'Stellantriebe.OG','Gaeste') == 1 and ::ReadingValDoIf($hash,'Temp.OG','SZ.Petra') <= 21
     6          ::ReadingValDoIf($hash,'Stellantriebe.OG','Bad') == 0 and ::ReadingValDoIf($hash,'Temp.OG','Badezimmer') > 22
     7          ::ReadingValDoIf($hash,'Stellantriebe.OG','Kind1') == 0 and ::ReadingValDoIf($hash,'Temp.OG','SZ.Felix') > 21
     8          ::ReadingValDoIf($hash,'Stellantriebe.OG','Kind2') == 0 and ::ReadingValDoIf($hash,'Temp.OG','SZ.Christine') > 21
     9          ::ReadingValDoIf($hash,'Stellantriebe.OG','Diele') == 0 and ::ReadingValDoIf($hash,'Temp.OG','OG.Flur') > 21
   days:
     0          12345
     1          12345
     10         06
     11         06
     12         12345
     13         12345
     14         06
     15         06
     16         12345
     17         12345
     18         06
     19         06
     2          06
     20         12345
     21         12345
     22         06
     23         06
     3          06
     4          12345
     5          12345
     6          06
     7          06
     8          12345
     9          12345
   devices:
     0           Temp.OG
     1           Temp.OG
     10          Temp.OG
     11          Temp.OG
     2           Temp.OG
     3           Temp.OG
     4           Temp.OG
     5           Temp.OG
     6           Temp.OG
     7           Temp.OG
     8           Temp.OG
     9           Temp.OG
     all         Temp.OG
   do:
     0:
       0          "wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,5,0&"
     1:
       0          "wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,14,0&"
     10:
       0          "wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,12,1&"
     11:
       0          "wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,0,1&"
     12:
       0          "wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,0,1&"
       1          "wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,2,1&"
       2          "wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,4,1&"
       3          "wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,5,1&"
       4          "wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,12,1&"
       5          "wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,14,1&"
     13:
     2:
       0          "wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,2,0&"
     3:
       0          "wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,4,0&"
     4:
       0          "wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,12,0&"
     5:
       0          "wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,0,0&"
     6:
       0          "wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,5,1&"
     7:
       0          "wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,14,1&"
     8:
       0          "wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,2,1&"
     9:
       0          "wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,4,1&"
   helper:
     event      OG.Wifi: -87
     globalinit 1
     last_timer 25
     sleeptimer -1
     timerdev   Temp.OG
     timerevent SZ.Petra: 20.0
     triggerDev Temp.OG
     DOIF_eventas:
       cmd_nr: 6
       cmd: 6
       cmd_event: Temp.OG
       state: cmd_6
     bm:
       DOIF_Get:
         cnt        1
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        02.01. 08:57:42
         max        2.78949737548828e-05
         tot        2.78949737548828e-05
         mAr:
           HASH(0x50d6138)
           Heizkreisverteiler.OG
           ?
       DOIF_Notify:
         cnt        882
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        02.01. 08:56:44
         max        0.0835299491882324
         tot        2.64253091812134
         mAr:
           HASH(0x50d6138)
           HASH(0x50d3f38)
       DOIF_Set:
         cnt        9
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        02.01. 08:44:25
         max        0.000169992446899414
         tot        0.00119137763977051
         mAr:
           HASH(0x50d6138)
           Heizkreisverteiler.OG
           ?
     timerevents:
       SZ.Petra: 20.0
     timereventsState:
       SZ.Petra: 20.0
     triggerEvents:
       OG.Wifi: -87
     triggerEventsState:
       OG.Wifi: -87
   internals:
   interval:
     0          -1
     1          0
     10         -1
     11         10
     12         -1
     13         12
     14         -1
     15         14
     16         -1
     17         16
     18         -1
     19         18
     2          -1
     20         -1
     21         20
     22         -1
     23         22
     3          2
     4          -1
     5          4
     6          -1
     7          6
     8          -1
     9          8
   intervalfunc:
   itimer:
   localtime:
     0          1546472700
     1          1546452900
     10         1546476300
     11         1546452900
     12         1546472700
     13         1546452900
     14         1546476300
     15         1546452900
     16         1546472700
     17         1546452900
     18         1546476300
     19         1546452900
     2          1546476300
     20         1546472700
     21         1546452900
     22         1546476300
     23         1546452900
     24         1546453800
     3          1546452900
     4          1546472700
     5          1546452900
     6          1546476300
     7          1546452900
     8          1546472700
     9          1546452900
   readings:
     0           Temp.OG:Badezimmer
     1           Temp.OG:SZ.Felix
     10          Temp.OG:SZ.Gisbert
     11          Temp.OG:SZ.Petra
     2           Temp.OG:SZ.Christine
     3           Temp.OG:OG.Flur
     4           Temp.OG:SZ.Gisbert
     5           Temp.OG:SZ.Petra
     6           Temp.OG:Badezimmer
     7           Temp.OG:SZ.Felix
     8           Temp.OG:SZ.Christine
     9           Temp.OG:OG.Flur
     all         Temp.OG:Badezimmer Temp.OG:SZ.Felix Temp.OG:SZ.Christine Temp.OG:OG.Flur Temp.OG:SZ.Gisbert Temp.OG:SZ.Petra
   realtime:
     0          00:45:00
     1          19:15:00
     10         01:45:00
     11         19:15:00
     12         00:45:00
     13         19:15:00
     14         01:45:00
     15         19:15:00
     16         00:45:00
     17         19:15:00
     18         01:45:00
     19         19:15:00
     2          01:45:00
     20         00:45:00
     21         19:15:00
     22         01:45:00
     23         19:15:00
     24         19:30:00
     3          19:15:00
     4          00:45:00
     5          19:15:00
     6          01:45:00
     7          19:15:00
     8          00:45:00
     9          19:15:00
   time:
     0          0:45
     1          19:15:00
     10         1:45
     11         19:15:00
     12         0:45
     13         19:15:00
     14         1:45
     15         19:15:00
     16         0:45
     17         19:15:00
     18         1:45
     19         19:15:00
     2          1:45
     20         0:45
     21         19:15:00
     22         1:45
     23         19:15:00
     24         19:30:00
     3          19:15:00
     4          0:45
     5          19:15:00
     6          1:45
     7          19:15:00
     8          0:45
     9          19:15:00
   timeCond:
     0          0
     1          0
     10         2
     11         2
     12         3
     13         3
     14         3
     15         3
     16         4
     17         4
     18         4
     19         4
     2          0
     20         5
     21         5
     22         5
     23         5
     24         12
     3          0
     4          1
     5          1
     6          1
     7          1
     8          2
     9          2
   timer:
     0          0
     1          0
     10         0
     11         0
     12         0
     13         0
     14         0
     15         0
     16         0
     17         0
     18         0
     19         0
     2          0
     20         0
     21         0
     22         0
     23         0
     24         0
     3          0
     4          0
     5          0
     6          0
     7          0
     8          0
     9          0
   timers:
     12          24
   trigger:
   triggertime:
     1546452900:
       localtime  1546452900
       hash:
     1546453800:
       localtime  1546453800
       hash:
     1546472700:
       localtime  1546472700
       hash:
     1546476300:
       localtime  1546476300
       hash:
   uiState:
   uiTable:
Attributes:
   icon       sani_heating
   room       Heizung
   wait       0:0:0:0:0:0:0:0:0:0:0:0:2,2,2,2,2,2
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

Frank_Huber

Auf den ersten Blick fehlt das do always.

Gesendet von meinem Doogee S60 mit Tapatalk


Damian

Du solltest dein Vorhaben aufteilen und nicht die zeitlichen Temperaturvorgaben und die eigentliche Steuerung der einzelnen Stellantriebe zu vermischen.

Pro Stellantrieb würde ich einen eigenen THRESHOLD definieren. Dann kannst du in einem DOIF Zeitabhängig die Vorgabetemperatur pro Stellantrieb/THRESHOLD vorgeben. Um die Steuerung der einzelnen Antriebe brauchst du dich dann nicht mehr zu kümmern.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Gisbert

Hallo Frank und Damian,
vielen Dank für eure Vorschläge.

@Frank,
an einem fehlenden do always kann es nicht liegen, mit diesem Atrribut erhält man den gleichen "Fehler".

@Damian,
muss ich deine Empfehlung so interpretieren, dass man längere DOIFs nicht benutzen sollte? Gibt es eine Obergrenze?
Was mich aber so völlig verwundert ist das Verhalten, dass die commands 1-6 ausgeführt werden, obwohl die Bedingungen nicht zutreffen.

Im Eventmonitor tauchen folgende Einträge auf, d.h. bei jeder Temperaturänderung, egal, ob die Bedingungen erfüllt sind oder nicht:
2019-01-02 10:54:45 DOIF Heizkreisverteiler.OG cmd_nr: 4
2019-01-02 10:54:45 DOIF Heizkreisverteiler.OG cmd: 4
2019-01-02 10:54:45 DOIF Heizkreisverteiler.OG cmd_event: Temp.OG
2019-01-02 10:54:45 DOIF Heizkreisverteiler.OG cmd_4
2019-01-02 10:54:45 DOIF Heizkreisverteiler.OG cmd_nr: 2
2019-01-02 10:54:45 DOIF Heizkreisverteiler.OG cmd: 2
2019-01-02 10:54:45 DOIF Heizkreisverteiler.OG cmd_event: Temp.OG
2019-01-02 10:54:45 DOIF Heizkreisverteiler.OG cmd_2
2019-01-02 10:54:45 DOIF Heizkreisverteiler.OG cmd_nr: 5
2019-01-02 10:54:45 DOIF Heizkreisverteiler.OG cmd: 5
2019-01-02 10:54:45 DOIF Heizkreisverteiler.OG cmd_event: Temp.OG
2019-01-02 10:54:45 DOIF Heizkreisverteiler.OG cmd_5
2019-01-02 10:54:45 DOIF Heizkreisverteiler.OG cmd_nr: 3
2019-01-02 10:54:45 DOIF Heizkreisverteiler.OG cmd: 3
2019-01-02 10:54:45 DOIF Heizkreisverteiler.OG cmd_event: Temp.OG
2019-01-02 10:54:45 DOIF Heizkreisverteiler.OG cmd_3
2019-01-02 10:54:45 DOIF Heizkreisverteiler.OG cmd_nr: 6
2019-01-02 10:54:45 DOIF Heizkreisverteiler.OG cmd: 6
2019-01-02 10:54:45 DOIF Heizkreisverteiler.OG cmd_event: Temp.OG
2019-01-02 10:54:45 DOIF Heizkreisverteiler.OG cmd_6
2019-01-02 10:54:53 DOIF Heizkreisverteiler.OG cmd_nr: 1
2019-01-02 10:54:53 DOIF Heizkreisverteiler.OG cmd: 1
2019-01-02 10:54:53 DOIF Heizkreisverteiler.OG cmd_event: Temp.OG
2019-01-02 10:54:53 DOIF Heizkreisverteiler.OG cmd_1
2019-01-02 10:55:17 DOIF Heizkreisverteiler.OG last_cmd: cmd_1


Ich kenne das Modul TRESHOLD, ich verstehe aber noch nicht genau deinen Vorschlag.
Kannst du deinen Vorschlag etwas genauer darstellen, beispielhafte Darstellung genügt?

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

Gisbert

Hallo Damian,

wenn ich die Zeitbedingungen weglasse, funktioniert die Definition wie gewünscht, besipielhaft und getestet nur cmd_1 und cmd_2 :
defmod Heizkreisverteiler.OG DOIF (([?Stellantriebe.OG:Bad] == 1) and ([Temp.OG:Badezimmer] <= 22.0)) \
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,5,0&") \
DOELSEIF ([?Stellantriebe.OG:Bad] == 0 and ([Temp.OG:Badezimmer:] > 22.0)) \
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,5,1&") \
DOELSEIF ([19:30]) \
("wget -qO /dev/null http://192.168.2.26/control?cmd=GPIO,5,1&")


Aber warum funktioniert die Zeitbedingung nicht, sie funktioniert doch vom Prinzip her in allen Beispielen und auch in eigenen Definitionen?

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

Damian

Zitat von: Gisbert am 02 Januar 2019, 11:04:59

Ich kenne das Modul TRESHOLD, ich verstehe aber noch nicht genau deinen Vorschlag.
Kannst du deinen Vorschlag etwas genauer darstellen, beispielhafte Darstellung genügt?


Wenn du für jeden Stellantrieb einen THRESHOLD definiert hast, dann brauchst du nur noch die Temperaturen vorzugeben:

DOIF ([05:00|12345] or [06:00|06]) (set TH_Kind1 desired 21)
DOELSEIF ([21:00|12345] or [22:00|06]) (set TH_Kind1 desired 20)


Ich nutze inzwischen eine tabellarische Temperaturenvorgabe für alle Zimmer:

siehe: https://forum.fhem.de/index.php/topic,84969.msg848315.html#msg848315

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF