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
Auf den ersten Blick fehlt das do always.
Gesendet von meinem Doogee S60 mit Tapatalk
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.
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
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
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