OpenHAB Heizkörper
ONLINE

openHAB und meine Heizkörper

Dieser Beitrag schrieb ich vor 2 Jahren. Behalte das beim Lesen bitte im Hinterkopf.

openHAB Sitemap HeizungEine 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ässig per Tastendruck aufgeheizt werden soll.

openHAB Heizung ELW BadezimmerIch habe das Grundgerüst am Beispiel meiner Badezimmerheizung durchexerziert und ein dickes grosses Konfig-FileGITHUB 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 SitemapGITHUB 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).

Abschliessend erstellte ich dann meine heizung.rulesGITHUB, 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 anschliessend 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

MarianneDerzeit 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

osgi> 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
  1. Hallo,

    auch wenn der Artikel wohl schon älter ist, finde ich ihn sehr interessant und die Anzeige sehr übersichtlich.
    Wie machst du es denn z.B. im Sommer?
    Aktuell stelle ich alle Thermostate von Hand auf Manuell und auf Aus.
    Das müsste man doch auch über einen zusätzlichen Button in der Modus-Auswahl realisieren können, oder?
    Ich stehe da leider im Moment etwas auf dem Schlauch…
    Vielleicht hast du so etwas ja schon, oder hast eine spontane Idee, wie man so etwas lösen könnte.

  2. Anonymous

    Ich schalte alle HM Variablen einzeln, also Boost aus Auto an, dann bleibt nichts hängen.

  3. Ich habe meine Heizungssteuerung noch mit der Temperaturvorhersage des aktuellen Tages gekoppelt.

    Wenn es draussen warm ist (wobei das ja immer eine persönliche Sache ist), dann werden die Heizungen einfach auf eine Minimaltemperatur runtergeregelt.
    Jetzt wo es so warm war, bin ich nämlich an einem kühlen Tag in die Situation gelaufen, dass die Heizung anging, obwohl ich über die Kälte mal froh war.

    Wenn es Herbst und später Winter wird, dann darf OpenHab die Raum-Temperatur wieder auf „gemütlich warm“ hochregeln.

    Ansonsten: schöner Blog.

  4. Udo Hartmann

    Was den hängenbleibenden Boost-Mode betrifft: openHAB bekommt aber doch mit, dass die CCU2 den Heizkreis auf Auto-Mode gesetzt hat, oder? Dann müsstest Du doch nur in openHAB auf die Zustandsänderung z.B. ELW_Bad_STATE_AUTO changed to ON reagieren und ELW_Bad_STATE_BOOST.postUpdate(OFF) ausführen. Nicht schön, das extra einfügen zu müssen, aber wenn die CCU2 das Item nicht selbst zurücksetzt…

    • Grundsätzlich hast du recht: für den Boost-Mode könnte ich es im Regelwerk von OpenHAB abfangen oder über die CCU2 einen ReloadTrigger veranlassen, der die geänderten Werte publiziert.

      Vor dem selben Problem stehe ich allerdings, wenn ich den Heizkörper über die CCU2 auf Comfort- oder Eco-Temperatur stelle: dann bleibt der MODE nämlich auf AUTO-MODE, und ich wüsste nicht, wie ich das in einem Regelwerk abfangen könnte — weil ich halt von OpenHAB aus auf diese Werte der CCU2 nicht zugreifen kann (oder einfach noch nicht herausgefunden habe, wie das geht — kann ja auch sein).

      *kopfkratz*

  5. Die Idee, erstmal alle STATE_* auf OFF zu stellen, gefällt mir, das muss ich bei Gelegenheit auch mal ausprobieren.
    Ansonsten gibt’s ein ähnliches Setup unter https://groups.google.com/d/msg/openhab/2rgoC2h_lBs/Ef6-RHekP_MJ

    Leider klappt letzteres bei mir auch nur teilweise, da ich das Heizkörperthermostat auch noch mit einem Wandthermostat in eine Gruppe geschmissen habe und da kommt es häufig vor, dass mein Wunsch nach „Comfort“ nur bei einem der beiden Geräte ankommt und das andere das dann irgendwie kurz drauf wieder rückgängig macht

    Vielleicht muss ich ja alle Schreibzugriffe auf das virtuelle Device der Gruppe INT_* schicken, aber da hatte ich wohl auch noch nicht genug Musse, um das sauber durchzuprobieren.

    Jetzt hat erstmal die Rolladen-Anti-Sonnen-Schaltung Priorität.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.