openHAB und meine Heizkörper
Eine ganze Weile hatte ich nun ein Brett vorm Kopf: schon seit längerem besitze ich einige Heizkörperthermostate (HH-CC-RT-DN) und versuche nach und nach, hierfür ein Regelwerk zu erstellen. Doch nun ist endlich der Groschen gerutscht, und ich stelle euch hier das Grundgerüst meiner Heizungsschaltung vor. So ist es problemlos möglich, die Heizkörper im Nachtbetrieb herunter zu regeln; eine Regel im wahrsten Sinne des Wortes, da man die Einstellungen von Uhrzeiten abhängig machen kann. Kniffliger wird es schon, wenn die Heizkörper in Abhängigkeit von Anwesenheit geschaltet werden sollen. Oder die Badezimmerheizung, die über den Tag heruntergeregelt ist, im Falle verschmierter Kinder aber SOS-mäßig per Tastendruck aufgeheizt werden soll.
Ich habe das Grundgerüst am Beispiel meiner Badezimmerheizung durchexerziert und ein dickes großes Konfig-File erstellt (und ausführlich kommentiert), mit dessen Hilfe ich alle verfügbaren Werte abgreife und Aktionen in Form von Switches verfügbar mache; darüberhinaus lege ich mir hier der Übersichtlichkeit halber Gruppen an, in die ich meine Items sortiere.
Dann erstelle ich mir eine Sitemap und stelle meine Items im Webinterface dar. Ich kann die Temperatur entweder von Hand einstellen – über die kleinen Pfeiltasten in 0,5°C-Schritten – oder ich nutze die Presets Baden (entspricht Boost), Eco oder Comfort: über die CCU2 definierte ich, dass die Badezimmerheizung im Eco-Mode auf 17,0°C herunterreguliert wird, im Comfort-Mode hingegen auf 24,0°C herauf. Der Betriebsmodus des Heizkörperthermostats bleibt bei Umschaltung auf AUTO-MODE
– was sich lediglich ändert, ist der Sollwert der Temperatur. Tatsächlich fand ich diesen Aspekt nicht gerade selbsterklärend und brauchte eine ganze Weile, bis ich hier durchgeblickt hatte. Für die Boost-Funktion habe ich festgelegt, dass die Ventilöffnung für 20 Minuten auf 99% gesetzt wird. Dieses Setup ist also unabhängig von der Umgebungstemperatur, von der gerade eingestellten Temperatur,… – es ist Geschmackssache und sehr abhängig von den Gegebenheiten, das ist klar. Nach Ablauf der 20 Minuten fällt der Thermostat wieder in den AUTO-MODE
(ebenfalls mit den über die CCU2 eingestellten Werten).
Abschließend erstellte ich dann meine heizung.rules, die in der jetzigen Version wesentlich übersichtlicher ist als meine ersten Anläufe ;) Sie setzt alle Kontroll-Switches für den Heizkörper auf OFF
(postUpdate
ist openHAB-intern!) und wertet dann aus, welcher der vier Buttons gedrückt wurde – nur dieser Modus wird dann auf ON
geschaltet (sendCommand
wird an die CCU2 durchgereicht!). So vermeide ich es, dass mehrere Switches auf ON
stehen und sich irgendwann gegenseitig verwirren.
Allerdings habe ich keine Möglichkeit gefunden, auf die Eco- und die Comfort-Temperatur wirklich zuzugreifen – die Thermostate stellen hierfür offenbar keine Datenpunkte zur Verfügung. Und noch ein Aspekt ist bei diesem Setup nicht berücksichtigt: stelle ich meinen Heizkörper per openHAB auf Boost und anschließend im Webfrontend der CCU2 auf Comfort, dann schaltet sich die Sollwert-Temperatur auf 24°C (was okay ist), der Modus schaltet sich auf AUTO-MODE
und wird im Webinterface auch so dargestellt (was okay ist), der Switch ELW_Bad_STATE_BOOST
bleibt jedoch auf ON
stehen – was nicht okay ist.
osgi> openhab status ELW_Bad_STATE_BOOST
ON
Derzeit fällt mir nur eine Lösung ein, mit diesem Problem umzugehen: den Status eines jeden Heizkörpers als Variable innerhalb der CCU2 festzuhalten und mit dem ReloadTrigger
zu arbeiten. Oder sehe ich gerade den Wald vor lauter Bäumen nicht? Mag mir wer auf die Sprünge helfen?
Umschalten auf Comfort
2015-04-13 14:05:43.221 [INFO ] [runtime.busevents ] - ELW_Bad_Scene_Heating received command 3
2015-04-13 14:05:43.721 [INFO ] [.model.script.Heating rules - ] - ELW_Bad_STATE_AUTO
2015-04-13 14:05:43.730 [INFO ] [runtime.busevents ] - ELW_Bad_STATE_AUTO state updated to OFF
2015-04-13 14:05:43.735 [INFO ] [.model.script.Heating rules - ] - ELW_Bad_STATE_BOOST
2015-04-13 14:05:43.736 [INFO ] [runtime.busevents ] - ELW_Bad_STATE_BOOST state updated to OFF
2015-04-13 14:05:43.736 [INFO ] [.model.script.Heating rules - ] - ELW_Bad_STATE_ECO
2015-04-13 14:05:43.737 [INFO ] [runtime.busevents ] - ELW_Bad_STATE_ECO state updated to OFF
2015-04-13 14:05:43.737 [INFO ] [.model.script.Heating rules - ] - ELW_Bad_STATE_COMFORT
2015-04-13 14:05:43.741 [INFO ] [runtime.busevents ] - ELW_Bad_STATE_COMFORT state updated to OFF
2015-04-13 14:05:43.771 [INFO ] [hab.model.script.Heating rules] - Entering comfort mode.
2015-04-13 14:05:43.803 [INFO ] [runtime.busevents ] - ELW_Bad_STATE_COMFORT received command ON
2015-04-13 14:05:44.409 [INFO ] [runtime.busevents ] - ELW_Bad_Heizung_MODE state updated to AUTO-MODE
2015-04-13 14:05:44.422 [INFO ] [runtime.busevents ] - ELW_Bad_Heizung_FAULT_REPORTING state updated to NO_FAULT
2015-04-13 14:05:44.422 [INFO ] [runtime.busevents ] - ELW_Bad_Heizung_BOOST_STATE state updated to 0
2015-04-13 14:05:44.423 [INFO ] [runtime.busevents ] - ELW_Bad_Heizung_SET_TEMPERATURE state updated to 24.00
Umschalten auf Normal
2015-04-13 14:58:08.175 [INFO ] [runtime.busevents ] - ELW_Bad_Scene_Heating received command 0
2015-04-13 14:58:08.177 [INFO ] [.model.script.Heating rules - ] - ELW_Bad_STATE_AUTO
2015-04-13 14:58:08.178 [INFO ] [runtime.busevents ] - ELW_Bad_STATE_AUTO state updated to OFF
2015-04-13 14:58:08.179 [INFO ] [.model.script.Heating rules - ] - ELW_Bad_STATE_BOOST
2015-04-13 14:58:08.180 [INFO ] [runtime.busevents ] - ELW_Bad_STATE_BOOST state updated to OFF
2015-04-13 14:58:08.180 [INFO ] [.model.script.Heating rules - ] - ELW_Bad_STATE_ECO
2015-04-13 14:58:08.180 [INFO ] [runtime.busevents ] - ELW_Bad_STATE_ECO state updated to OFF
2015-04-13 14:58:08.181 [INFO ] [.model.script.Heating rules - ] - ELW_Bad_STATE_COMFORT
2015-04-13 14:58:08.181 [INFO ] [runtime.busevents ] - ELW_Bad_STATE_COMFORT state updated to OFF
2015-04-13 14:58:08.190 [INFO ] [hab.model.script.Heating rules] - Entering normal mode.
2015-04-13 14:58:08.208 [INFO ] [runtime.busevents ] - ELW_Bad_STATE_AUTO received command ON
2015-04-13 14:58:08.797 [INFO ] [runtime.busevents ] - ELW_Bad_Heizung_MODE state updated to AUTO-MODE
2015-04-13 14:58:08.797 [INFO ] [runtime.busevents ] - ELW_Bad_Heizung_FAULT_REPORTING state updated to NO_FAULT
2015-04-13 14:58:08.798 [INFO ] [runtime.busevents ] - ELW_Bad_Heizung_BOOST_STATE state updated to 0
2015-04-13 14:58:08.798 [INFO ] [runtime.busevents ] - ELW_Bad_Heizung_SET_TEMPERATURE state updated to 17.00
Umschalten auf Baden
2015-04-13 15:39:08.461 [INFO ] [runtime.busevents ] - ELW_Bad_Scene_Heating received command 1
2015-04-13 15:39:08.520 [INFO ] [.model.script.Heating rules - ] - ELW_Bad_STATE_AUTO
2015-04-13 15:39:08.524 [INFO ] [runtime.busevents ] - ELW_Bad_STATE_AUTO state updated to OFF
2015-04-13 15:39:08.527 [INFO ] [.model.script.Heating rules - ] - ELW_Bad_STATE_BOOST
2015-04-13 15:39:08.528 [INFO ] [runtime.busevents ] - ELW_Bad_STATE_BOOST state updated to OFF
2015-04-13 15:39:08.528 [INFO ] [.model.script.Heating rules - ] - ELW_Bad_STATE_ECO
2015-04-13 15:39:08.529 [INFO ] [runtime.busevents ] - ELW_Bad_STATE_ECO state updated to OFF
2015-04-13 15:39:08.529 [INFO ] [.model.script.Heating rules - ] - ELW_Bad_STATE_COMFORT
2015-04-13 15:39:08.530 [INFO ] [runtime.busevents ] - ELW_Bad_STATE_COMFORT state updated to OFF
2015-04-13 15:39:08.539 [INFO ] [hab.model.script.Heating rules] - Entering bathing mode.
2015-04-13 15:39:08.550 [INFO ] [runtime.busevents ] - ELW_Bad_STATE_BOOST received command ON
2015-04-13 15:39:09.115 [INFO ] [runtime.busevents ] - ELW_Bad_Heizung_MODE state updated to BOOST-MODE
2015-04-13 15:39:09.115 [INFO ] [runtime.busevents ] - ELW_Bad_Heizung_FAULT_REPORTING state updated to NO_FAULT
2015-04-13 15:39:09.115 [INFO ] [runtime.busevents ] - ELW_Bad_Heizung_BOOST_STATE state updated to 19
2015-04-13 15:39:09.137 [INFO ] [runtime.busevents ] - ELW_Bad_Heizung_SET_TEMPERATURE state updated to 17.00
Hintergrundbild: Bild genauer anschauen – © Marianne Spiller – Alle Rechte vorbehalten