Folgendes DOIF soll eine einfache Boost-Funktion für eine Heizung realisieren. Setzt man das DOIF auf "on", wird die Zieltemperatur erhöht. Wird eine Temperaturschwelle erreicht oder das DOIF zuvor auf "off" gesetzt, sollt das Thermostat zu einem voreingestellten Wert zurückkehren.
Internals:
CFGFN
DEF (["$SELF:state: on"])
(
set WZ_Heizung desired-temp 23
)
DOELSEIF(([WZ_Heizung:measured-temp] => 22 and [?$SELF:state] eq "on") or ["$SELF:state: off"])
(
set WZ_Heizung desired-temp [WZ_TC:desired-temp-manu]
)
NAME WZ_Heizung_Boost
NR 424722
NTFY_ORDER 50-WZ_Heizung_Boost
STATE initialized
TYPE DOIF
Readings:
2017-12-12 10:27:56 cmd 0
2017-12-12 10:27:56 state initialized
Condition:
0 EventDoIf('WZ_Heizung_Boost',$hash,'state: on',0)
1 (ReadingValDoIf($hash,'WZ_Heizung','measured-temp') => 22 and ReadingValDoIf($hash,'WZ_Heizung_Boost','state') eq "on") or EventDoIf('WZ_Heizung_Boost',$hash,'state: off',0)
Devices:
1 WZ_Heizung
all WZ_Heizung
Do:
0:
0 set WZ_Heizung desired-temp 23
1:
0 set WZ_Heizung desired-temp [WZ_TC:desired-temp-manu]
2:
Helper:
globalinit 1
last_timer 0
sleeptimer -1
Itimer:
Readings:
1 WZ_Heizung:measured-temp
all WZ_Heizung:measured-temp
Regexp:
0:
0 WZ_Heizung_Boost:state: on
1:
0 WZ_Heizung_Boost:state: off
All:
0 WZ_Heizung_Boost:state: on
1 WZ_Heizung_Boost:state: off
State:
Attributes:
cmdState on|off
setList on off
Da habe ich aber wohl zu einfach gedacht. Denn wenn ich das DOIF auf "on" setze, stellt es sich eine Sekunde später wieder auf "off" zurück. Getriggert wird das "Zurückspringen" offenbar durch ein Event von WZ_Heizung, aber nach meinem Verständnis sollte in dem Moment keine Variante der Bedingung 2 erfülllt sein. measured-temp ist kleiner 22, also scheint die Bedingung ["$SELF:state: off"] erfüllt zu sein, was ich nicht verstehe. Vermutlich habe ich da etwas mit Status und $Self noch nicht ganz durchdrungen. Kann mir jemand auf die Sprünge helfen?
Log des Ablaufs:
2017-12-03 11:47:24 CUL_HM WZ_Heizung set_desired-temp 23
2017-12-03 11:47:25 DOIF WZ_Heizung_Boost cmd_nr: 1
2017-12-03 11:47:25 DOIF WZ_Heizung_Boost cmd: 1
2017-12-03 11:47:25 DOIF WZ_Heizung_Boost cmd_event: set_on_cmd_1
2017-12-03 11:47:25 DOIF WZ_Heizung_Boost on
2017-12-03 11:47:25 DOIF WZ_Heizung_Boost Device: WZ_Heizung_Boost
2017-12-03 11:47:25 DOIF WZ_Heizung_Boost e_WZ_Heizung_Boost_STATE: on
2017-12-03 11:47:26 DOIF WZ_Heizung_Boost cmd_nr: 2
2017-12-03 11:47:26 DOIF WZ_Heizung_Boost cmd: 2
2017-12-03 11:47:26 DOIF WZ_Heizung_Boost cmd_event: WZ_Heizung
2017-12-03 11:47:26 DOIF WZ_Heizung_Boost off
2017-12-03 11:47:26 CUL_HM WZ_Heizung desired-temp: 23.0
2017-12-03 11:47:26 CUL_HM WZ_Heizung set_desired-temp 21.0
2017-12-03 11:47:26 CUL_HM WZ_TC desired-temp: 23.0
2017-12-03 11:47:27 CUL_HM WZ_Heizung desired-temp: 21.0
2017-12-03 11:47:27 CUL_HM WZ_TC desired-temp: 21.0
nicht so=>
sondern so >=
Zitat von: Ellert am 12 Dezember 2017, 10:53:46
nicht so=>
sondern so >=
Oh Mann, das nenne ich mal betriebsblind... :-[
Danke!