Moin Moin,
ich habe folgendes DOIF zur Steuerung meines Warmwasser-Boilers (Energie sparen):
([06:00-10:30|7] or [03:30-09:00|8] or [17:00-20:30|7] or [15:30-20:15|8] and
([ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf:Temperature] <= [$SELF:lowpoint]))
(set HM_EG.ATELIER_WarmWasserPwmSw_Sw on)
DOELSEIF ([ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf:Temperature] >= [$SELF:desired])
(set HM_EG.ATELIER_WarmWasserPwmSw_Sw off)
DOIF_Readings lowpoint:([$SELF:desired] - [$SELF:hysterese])
Stand jetzt liegt die gemessene Temperatur bei 51.50 Grad und desired bei 48. Meine Erwartung wäre, daß der DOELSEIF-Zweig triggert und das Relais ausgeschaltet wird. Leider passiert dies nicht - der Boiler heizt lustig weiter.
Was mache ich wohl falsch?
Danke, -MN
Ein list:
Internals:
CFGFN
DEF ([06:00-10:30|7] or [03:30-09:00|8] or [17:00-20:30|7] or [15:30-20:15|8] and
([ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf:Temperature] <= [$SELF:lowpoint]))
(set HM_EG.ATELIER_WarmWasserPwmSw_Sw on)
DOELSEIF ([ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf:Temperature] >= [$SELF:desired])
(set HM_EG.ATELIER_WarmWasserPwmSw_Sw off)
NAME DI_WWBoilerEnergySaverTH
NR 500
NTFY_ORDER 50-DI_WWBoilerEnergySaverTH
STATE cmd_1
TYPE DOIF
DOIF_Readings:
lowpoint (ReadingValDoIf($hash,'DI_WWBoilerEnergySaverTH','desired') - ReadingValDoIf($hash,'DI_WWBoilerEnergySaverTH','hysterese'))
READINGS:
2018-11-29 08:39:02 Device ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf
2018-11-29 03:30:00 cmd 1
2018-11-29 03:30:00 cmd_event timer_3
2018-11-29 03:30:00 cmd_nr 1
2018-11-28 19:49:04 desired 48
2018-11-29 08:36:02 e_DI_WWBoilerEnergySaverTH_desired 48
2018-11-29 08:36:02 e_DI_WWBoilerEnergySaverTH_lowpoint 44
2018-11-29 08:39:02 e_ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf_Temperature 51.50
2018-11-28 19:50:14 hysterese 4
2018-11-28 19:50:14 lowpoint 44
2018-11-28 19:49:53 mode enabled
2018-11-29 03:30:00 state cmd_1
2018-11-28 19:49:53 timer_01_c01 29.11.2018 06:00:00|7
2018-11-28 19:49:53 timer_02_c01 29.11.2018 10:30:00|7
2018-11-28 19:49:53 timer_03_c01 29.11.2018 03:30:00|8
2018-11-28 19:49:53 timer_04_c01 29.11.2018 09:00:00|8
2018-11-28 20:30:01 timer_05_c01 29.11.2018 17:00:00|7
2018-11-28 20:30:01 timer_06_c01 29.11.2018 20:30:00|7
2018-11-28 20:15:00 timer_07_c01 29.11.2018 15:30:00|8
2018-11-28 20:15:00 timer_08_c01 29.11.2018 20:15:00|8
Regex:
DOIF_Readings:
DI_WWBoilerEnergySaverTH:
lowpoint:
desired ^DI_WWBoilerEnergySaverTH$:^desired:
hysterese ^DI_WWBoilerEnergySaverTH$:^hysterese:
condition:
0 DOIF_time($hash,0,1,$wday,$hms,"7") or DOIF_time($hash,2,3,$wday,$hms,"8") or DOIF_time($hash,4,5,$wday,$hms,"7") or DOIF_time($hash,6,7,$wday,$hms,"8") and (ReadingValDoIf($hash,'ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf','Temperature') <= ReadingValDoIf($hash,'DI_WWBoilerEnergySaverTH','lowpoint'))
1 ReadingValDoIf($hash,'ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf','Temperature') >= ReadingValDoIf($hash,'DI_WWBoilerEnergySaverTH','desired')
days:
0 7
1 7
2 8
3 8
4 7
5 7
6 8
7 8
devices:
0 ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf DI_WWBoilerEnergySaverTH
1 ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf DI_WWBoilerEnergySaverTH
all ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf DI_WWBoilerEnergySaverTH
do:
0:
0 set HM_EG.ATELIER_WarmWasserPwmSw_Sw on
1:
0 set HM_EG.ATELIER_WarmWasserPwmSw_Sw off
2:
helper:
DOIF_Readings_events
DOIF_eventas
event Temperature: 51.50,Tem: 51.50
globalinit 1
last_timer 8
sleeptimer -1
timerdev ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf
timerevent Temperature: 51.50,Tem: 51.50
triggerDev ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf
timerevents:
Temperature: 51.50
Tem: 51.50
timereventsState:
Temperature: 51.50
state: Tem: 51.50
triggerEvents:
Temperature: 51.50
Tem: 51.50
triggerEventsState:
Temperature: 51.50
state: Tem: 51.50
internals:
interval:
0 -1
1 0
2 -1
3 2
4 -1
5 4
6 -1
7 6
itimer:
localtime:
0 1543467600
1 1543483800
2 1543458600
3 1543478400
4 1543507200
5 1543519800
6 1543501800
7 1543518900
readings:
0 ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf:Temperature DI_WWBoilerEnergySaverTH:lowpoint
1 ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf:Temperature DI_WWBoilerEnergySaverTH:desired
all ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf:Temperature DI_WWBoilerEnergySaverTH:lowpoint DI_WWBoilerEnergySaverTH:desired
realtime:
0 06:00:00
1 10:30:00
2 03:30:00
3 09:00:00
4 17:00:00
5 20:30:00
6 15:30:00
7 20:15:00
time:
0 06:00:00
1 10:30:00
2 03:30:00
3 09:00:00
4 17:00:00
5 20:30:00
6 15:30:00
7 20:15:00
timeCond:
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
timer:
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
timers:
0 0 1 2 3 4 5 6 7
trigger:
triggertime:
1543478400:
localtime 1543478400
hash:
1543483800:
localtime 1543483800
hash:
1543501800:
localtime 1543501800
hash:
1543507200:
localtime 1543507200
hash:
1543518900:
localtime 1543518900
hash:
1543519800:
localtime 1543519800
hash:
uiState:
uiTable:
Attributes:
DOIF_Readings lowpoint:([$SELF:desired] - [$SELF:hysterese])
readingList desired hysterese
room EG.Atelier,SYS_Events
setList hysterese:2,4,6,8,10,12,14,16 desired:40,44,48,52
webCmd desired:hysterese
er "hängt" in cmd1.
Die zeitbereiche ziehen alleine so wie das and/or verknüpft ist.
mach mal aus dem hier:
([06:00-10:30|7] or [03:30-09:00|8] or [17:00-20:30|7] or [15:30-20:15|8] and
([ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf:Temperature] <= [$SELF:lowpoint]))
das hier:
(([06:00-10:30|7] or [03:30-09:00|8] or [17:00-20:30|7] or [15:30-20:15|8]) and
([ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf:Temperature] <= [$SELF:lowpoint]))
dann sollte es gehen
Danke, Frank.
Mir ist nur nicht klar, warum das DOIF in den Zeitgrenzen hing. Ich habs mal geändert und beobachte....
Danke, -MN
READINGS:
2018-11-29 03:30:00 cmd 1
2018-11-29 03:30:00 cmd_event timer_3
2018-11-28 19:49:53 timer_03_c01 29.11.2018 03:30:00|8
dein Temperaturbereich wird nur im späteren Zeitbereich abgefragt:
or [15:30-20:15|8] and ([ESPEasy_nodemcu_1wire_bridge_WW_Vorlauf:Temperature] <= [$SELF:lowpoint]))
FYI: AND hat Vorrang vor OR, deshalb immer klammern.