ich habe relativ viele DOIF's am Laufen doch eines davon funktioniert überhaupt nicht wie es soll.
Bei folgendem DOIF wird weiter geheizt obwohl die Soll Temperatur schon lange überschritten ist.
Woran kann das liegen?
defmod di.wcheizung DOIF ([MQTT2_wcheizung:AM2301_Temperature] < 23 and [06:00-22:00])\
(set MQTT2_wcheizung ON)\
DOELSE\
(set MQTT2_wcheizung OFF)\
Internals:
DEF ([06:00-22:00] and [MQTT2_wcheizung:AM2301_Temperature] < 23)
(set MQTT2_wcheizung ON)
DOELSE
(set MQTT2_wcheizung OFF)
DOELSEIF ([22:01])
MODEL FHEM
NAME di.wcheizung
NR 872
NTFY_ORDER 50-di.wcheizung
STATE cmd_2
TYPE DOIF
READINGS:
2018-12-04 08:16:04 Device MQTT2_wcheizung
2018-12-04 08:16:04 cmd 2
2018-12-04 08:16:04 cmd_event di.wcheizung
2018-12-04 08:16:04 cmd_nr 2
2018-12-04 08:14:47 mode enabled
2018-12-04 08:16:04 state cmd_2
2018-12-04 08:14:47 timer_01_c01 05.12.2018 06:00:00
2018-12-04 08:14:47 timer_02_c01 04.12.2018 22:00:00
Regex:
attr:
cmdState:
wait:
waitdel:
condition:
0 ::DOIF_time($hash,0,1,$wday,$hms) and ::ReadingValDoIf($hash,'MQTT2_wcheizung','AM2301_Temperature') < 23
days:
devices:
0 MQTT2_wcheizung
all MQTT2_wcheizung
do:
0:
0 set MQTT2_wcheizung ON
1:
0 set MQTT2_wcheizung OFF
helper:
event POWER: OFF
globalinit 1
last_timer 2
sleeptimer -1
timerdev
timerevent
timerevents
timereventsState
triggerDev MQTT2_wcheizung
DOIF_eventas:
cmd_nr: 2
cmd: 2
cmd_event: di.wcheizung
state: cmd_2
triggerEvents:
POWER: OFF
triggerEventsState:
POWER: OFF
internals:
interval:
0 -1
1 0
intervalfunc:
itimer:
localtime:
0 1543986000
1 1543957200
readings:
0 MQTT2_wcheizung:AM2301_Temperature
all MQTT2_wcheizung:AM2301_Temperature
realtime:
0 06:00:00
1 22:00:00
time:
0 06:00:00
1 22:00:00
timeCond:
0 0
1 0
timer:
0 0
1 0
timers:
0 0 1
trigger:
triggertime:
1543957200:
localtime 1543957200
hash:
1543986000:
localtime 1543986000
hash:
uiState:
uiTable:
Attributes:
disable 0
room notifys
Nach dem List kommen keine Events von MQTT2_wcheizung:AM2301_Temperature.
Du kannst auch auf alle Events von MQTT2_wcheizung reagieren, dann musst du das Attribut checkReadingevent 0 setzen.
Vielleicht deshalb weil ich ein checkall davor ausgeführt habe.
Hier ein aktueller list:
Internals:
DEF ([06:00-22:00] and [MQTT2_wcheizung:AM2301_Temperature] < 23)
(set MQTT2_wcheizung ON)
DOELSE
(set MQTT2_wcheizung OFF)
DOELSEIF ([22:01])
MODEL FHEM
NAME di.wcheizung
NR 872
NTFY_ORDER 50-di.wcheizung
STATE cmd_2
TYPE DOIF
READINGS:
2018-12-04 15:22:29 Device MQTT2_wcheizung
2018-12-04 15:22:29 cmd 2
2018-12-04 15:22:29 cmd_event MQTT2_wcheizung
2018-12-04 15:22:29 cmd_nr 2
2018-12-04 15:22:29 e_MQTT2_wcheizung_AM2301_Temperature 23.0
2018-12-04 08:14:47 mode enabled
2018-12-04 15:22:29 state cmd_2
2018-12-04 08:14:47 timer_01_c01 05.12.2018 06:00:00
2018-12-04 08:14:47 timer_02_c01 04.12.2018 22:00:00
Regex:
attr:
cmdState:
wait:
waitdel:
condition:
0 ::DOIF_time($hash,0,1,$wday,$hms) and ::ReadingValDoIf($hash,'MQTT2_wcheizung','AM2301_Temperature') < 23
days:
devices:
0 MQTT2_wcheizung
all MQTT2_wcheizung
do:
0:
0 set MQTT2_wcheizung ON
1:
0 set MQTT2_wcheizung OFF
helper:
event POWER: OFF
globalinit 1
last_timer 2
sleeptimer -1
timerdev MQTT2_wcheizung
timerevent AM2301_Temperature: 23.0
triggerDev MQTT2_wcheizung
DOIF_eventas:
cmd_nr: 2
cmd: 2
cmd_event: MQTT2_wcheizung
state: cmd_2
timerevents:
AM2301_Temperature: 23.0
timereventsState:
AM2301_Temperature: 23.0
triggerEvents:
POWER: OFF
triggerEventsState:
POWER: OFF
internals:
interval:
0 -1
1 0
intervalfunc:
itimer:
localtime:
0 1543986000
1 1543957200
readings:
0 MQTT2_wcheizung:AM2301_Temperature
all MQTT2_wcheizung:AM2301_Temperature
realtime:
0 06:00:00
1 22:00:00
time:
0 06:00:00
1 22:00:00
timeCond:
0 0
1 0
timer:
0 0
1 0
timers:
0 0 1
trigger:
triggertime:
1543957200:
localtime 1543957200
hash:
1543986000:
localtime 1543986000
hash:
uiState:
uiTable:
Attributes:
disable 0
room notifys
DOELSE-Zweig muss immer als letzter.