Heizung mit Home Assistant messen: eine Änderung auf einmal statt Blindflug

Schema: Buderus-Brennwertkessel mit RC310 und Gateway KM50, Heizkörper-Thermostaten und Gaszähler liefern Messwerte an Home Assistant zur Drei-Tage-Auswertung

Verfasst von

in

Im letzten Winter wurde ein zentraler Wohnraum unseres Hauses bei Kälte nicht warm. Meine schnelle Reaktion damals: Heizkurve und Solltemperatur an der Bedieneinheit hochdrehen, bis der Raum passte. Als ich die Gas-Brennwertheizung diesen Oktober in Home Assistant eingebunden und das erste Mal über Nacht gemessen habe, sah ich die Quittung: Der Brenner startete exakt alle zehn Minuten und lief jeweils nur rund 30 Sekunden bis eine Minute, über 140 Mal am Tag. Seitdem stelle ich die Anlage systematisch um, halte vor jedem Eingriff den Ist-Stand fest und messe jede Änderung am Kessel einzeln über drei volle Tage.

Schema: Buderus-Brennwertkessel mit RC310 und Gateway KM50, Heizkörper-Thermostaten und Gaszähler liefern Messwerte an Home Assistant zur Drei-Tage-Auswertung

Die Anlage und warum das letzte Jahr im Blindflug lief

Das Haus stammt aus dem Jahr 2001 und hat rund 140 m² Wohnfläche. Im März 2014 wurde ein modulierender Buderus Gas-Brennwertkessel eingebaut (Steuereinheit UBA3.5 mit Basisregler BC10, was auf einen Logamax plus GB162-25 hindeutet). Der Kessel hat 25 kW Nennleistung und moduliert herunter bis auf 21 Prozent, also rund 5,3 kW. Zum Vergleich: Die Heizlast des Hauses liegt selbst bei −10 °C Außentemperatur nur grob bei 4 bis 6 kW, in der Übergangszeit bei rund 1 kW. Es gibt einen einzigen ungemischten Heizkreis für die Heizkörper, an dem in zwei Räumen auch eine Fußbodenheizung über analoge Regler (Stufe 3) hängt, sowie einen Warmwasserspeicher über ein 3-Wege-Ventil.

Geregelt wird auf zwei Ebenen, die nichts voneinander wissen. Im Referenzraum hängt die Bedieneinheit Logamatic RC310 an der Wand, am Kessel sitzt das Internet-Gateway KM50. An zehn Heizkörpern im Haus regeln DECT-Thermostate vom Typ FRITZ!Smart Thermo 301 über eine FRITZ!Box 7590 AX die einzelnen Räume.

Als der Referenzraum im vergangenen Winter nicht warm wurde, habe ich an der RC310 die Solltemperatur für „Heizen“ auf 24 °C gestellt, den Raumeinfluss auf 3 K gelassen und die Auslegungstemperatur auf 60 °C gesetzt. Warum ein einzelner Raum kalt blieb, war damals nicht erkannt. Erst bei der Bestandsaufnahme am 14. Oktober fiel auf: Das FRITZ!-Thermostat in diesem Raum sitzt hinter einer Couch mit etwa 10 cm Abstand. Darunter staut sich die warme Luft. Das Thermostat meldete 22 bis 24 °C und drehte das Ventil zu, während das Wandgerät RC310 im selben Raum nur 19,6 bis 21 °C maß. Weil der RC310 bei 24 °C Sollwert dauerhaft 3 bis 4 K zu wenig sah, zog sein aktivierter Raumeinfluss die Vorlauf-Solltemperatur für das gesamte Haus Tag und Nacht an den Anschlag von 60 °C.

Ist-Stand festhalten: Gateway, Servicemenü und ein Zähler-Unterschied

Bevor ich einen einzigen Wert verstellt habe, habe ich am 13. Oktober um 22:03 Uhr den kompletten Ausgangsstand gesichert. Das Gateway KM50 hängt im lokalen Netz (Beispieladresse 192.0.2.166) und lässt sich über die HACS-Integration bosch (bosch-thermostat Version 0.28.2, Typ IVT, Protokoll HTTP) in Home Assistant einbinden. Von den 57 angebotenen Entitäten habe ich 20 aktiviert, darunter Vorlauf-, Rücklauf-, Außen- und Warmwassertemperatur, Modulation, Anlagendruck, Brennerstarts und Betriebszeit. Den Gasverbrauch liefert der vorhandene Sensor sensor.gaszahler_gefiltert.

Die Integration reicht für den laufenden Betrieb, zeigt aber nicht alles. Deshalb bestand die Bestandsaufnahme aus drei Teilen:

  • Kompletter JSON-Abzug aller lesbaren Pfade des KM50 mit bosch-thermostat-client als Datei 2026-10-13-ausgangsstand.json.
  • Auslesen sämtlicher DECT-Thermostate und ihrer Zeitprogramme über die REST-API der FRITZ!Box (/api/v0/smarthome) in die Datei 2026-10-14-thermostate-vorher.json.
  • 35 Fotos aller Ebenen im Servicemenü der RC310 (Taste menu rund drei Sekunden gedrückt halten), weil Parameter wie Pumpenkennfeld, Dämpfung der Außentemperatur, Auslegungstemperatur und Raumeinfluss über das KM50 lokal nicht auslesbar sind.

Im Gateway KM50 war die interne Verlaufsaufzeichnung abgeschaltet (logging/userAcceptance = false). Ich habe zusätzlich geprüft, ob der Fachmann-Lesezugang (instAccess) lokal mehr Daten freischaltet: Ein Vergleich von 70 Fachmann-Pfaden vor und nach dem Einschalten zeigte, dass das KM50 lokal exakt dieselben Werte liefert. Die tiefen Parameter des Servicemenüs gibt es nur direkt am RC310 oder über einen separaten EMS-Bus-Adapter. Maximale Heizleistung und Taktsperre stellt bei diesem Kessel sogar erst die Service-Ebene am Bedienfeld des Kessels (UBA3.5/BC10) bereit.

Für einzelne Abfragen am Gateway ohne Umweg über neue Sensoren nutze ich ein kleines Hilfsskript über den Dienst bosch.send_custom_get:

km50-lesen.py /dhwCircuits/dhw1/charge /heatSources/flameStatus /system/sensors

Beim Abgleich der Quellen fiel sofort eine Diskrepanz zwischen Gateway und Bedieneinheit auf, die für jede spätere Auswertung wichtig ist:

Messwert am 13.10.2026KM50 (22:03 Uhr)RC310 Monitorwerte (22:44 Uhr)Bewertung
Außentemperatur13,5 °C13,6 °C (gedämpft 13 °C)Dämpfung im Servicemenü war aus
Vorlauf Ist / Soll40,4 °C / 59,0 °C27,9 °C / 59 °CSoll am Anschlag trotz 13,5 °C außen
Rücklauf22,3 °C–niedrig, gut für Brennwertnutzung
Raumtemperatur RC31020,8 °C (Soll 24,0 °C)–3,2 K unter Soll zieht Vorlauf hoch
Anlagendruck1,5 bar1,5 bis 1,6 barpasst für ca. 9 m Anlagenhöhe
Brennerstarts307.81945.679KM50 zählt jeden Taktstart live mit
Betriebsstunden21.627 h (1.297.603 min)873 hdavon 18.360 h Heizung, 3.267 h Warmwasser

Über gut zwölf Jahre gerechnet bedeuten 307.819 Starts bei 21.627 Betriebsstunden eine durchschnittliche Laufzeit von gut vier Minuten pro Start. In der ersten Messnacht vom 13. auf den 14. Oktober lag die Anlage noch deutlich schlechter: Ab 22:15 Uhr ging der Brenner exakt alle zehn Minuten an und lief jeweils nur rund 30 Sekunden bis eine Minute. In 80 Minuten stieg die aufaddierte Brennerlaufzeit lediglich um vier Minuten. Weil Home Assistant Flamme und Modulation nur einmal pro Minute abfragt, tauchten viele dieser kurzen Brennphasen im Verlauf gar nicht auf – erst der Startzähler des KM50 machte das Takten im 10-Minuten-Raster sichtbar.

Ein Taktzyklus im Sekundentakt: 37 Sekunden bis zur Abschaltung

Um zu verstehen, warum der Kessel selbst nach dem ersten Absenken des Vorlauf-Sollwerts weiter taktete, habe ich am 15. Oktober um 21:46 Uhr bei 13,8 °C Außentemperatur und 36 °C Vorlauf-Soll einen einzelnen Brennerstart im Sekundentakt über das KM50 mitgeschrieben.

Messkurve eines Brennerzyklus: Nach 37 Sekunden bei 44 Prozent Leistung schaltet der Kessel bei 43 Grad Vorlauf ab und geht für 10 Minuten in die Taktsperre

Der Ablauf zeigt das hydraulische Problem der Anlage in weniger als einer Minute:

  • Der Brenner startet mit 44 Prozent Modulation (rund 11 kW Leistung) bei 30 °C Vorlauf und 29 °C Rücklauf.
  • Innerhalb von 34 Sekunden schießt die Vorlauftemperatur im Kessel von 30 auf 43 °C hoch, während der Rücklauf unverändert bei 29 °C klebt.
  • Nach exakt 37 Sekunden erreicht der Kessel etwa Sollwert plus 7 K und schaltet den Brenner wieder ab.
  • Die Restwärme treibt den Vorlauf im Nachlauf noch auf 49 °C, danach greift für zehn Minuten die Taktsperre.

Der Kessel wird seine Startleistung von 11 kW schlicht nicht schnell genug ins Rohrnetz los. Wenn die meisten Heizkörperventile bei mildem Wetter fast geschlossen sind und die Kesselpumpe auf einer niedrigen Differenzdruckstufe (Delta-P Stufe 2) läuft, fließt zu wenig Wasser durch den Wärmetauscher. Über den Tag gemittelt kamen so zwischen dem 13. und 15. Oktober nur etwa 0,5 bis 0,7 kW Wärmeleistung im Haus an, und die gemessene Vorlauftemperatur lag im Tagesmittel 4 bis 5 K unter dem Sollwert (am 14. Oktober 30,0 statt 34,2 °C, am 15. Oktober 31,4 statt 36,2 °C).

Das Messprotokoll: Drei-Tage-Fenster und kWh je Gradtag

Auf den Dashboards in Home Assistant habe ich die Kacheln für Heizkreis und Warmwasser auf reine Anzeige umgestellt. Zwar kann die bosch-Integration Sollwerte und Betriebsarten direkt in den Regler schreiben, aber ungeplante Klicks im Vorbeigehen machen jede Auswertung zunichte. Stattdessen wird jede Änderung an RC310, KM50, Kessel oder Thermostaten in einer Datei inventory/heizung-aenderungen.yaml protokolliert.

- zeitpunkt: "2026-10-14T11:15:00"
  ort: "RC310 Servicemenü"
  parameter: "Heizkreis 1 > Heizkurve > Raumeinfluss"
  vorher: "3 K"
  nachher: "Aus"
  erwartung: "Vorlauf-Soll fällt bei 12,8 °C außen von 41 auf 33 °C; Regler arbeiten nicht mehr gegeneinander"
  ergebnis: "offen (Auswertung nach 3 vollen Tagen am 18.10.)"

Aus dieser YAML-Datei und den Verlaufsdaten aus Home Assistant erzeugt ein Skript automatisch eine Kennzahlenseite, die für jeden Eintrag die drei vollen Tage vor der Änderung mit den drei vollen Tagen danach vergleicht. Bewertet werden fünf Größen:

  • Brennerstarts je Stunde
  • Durchschnittliche Laufzeit in Minuten je Start
  • Gasverbrauch in kWh je Gradtag (witterungsbereinigt)
  • Temperatur im Referenzraum (RC310)
  • Mittlere Raumtemperatur über die erreichbaren Thermostate

Der absolute Gasverbrauch in Kubikmetern oder Kilowattstunden pro Tag taugt für den Vorher-Nachher-Vergleich kaum. Fällt die Außentemperatur im Drei-Tage-Fenster nach einer Änderung von 14 auf 9 °C, steigt der Gasverbrauch zwangsläufig an, selbst wenn die Einstellung am Kessel sparsamer arbeitet als vorher. Erst die Normierung auf kWh je Gradtag rechnet die Witterung heraus und macht eine milde Oktoberwoche mit einer kühleren Woche vergleichbar. Genauso verrät das Paar aus Starts je Stunde und Minuten je Start sofort, ob der Kessel ruhiger durchläuft oder nur in kurzen Stößen gegen geschlossene Ventile anrennt.

Warum zwei gleichzeitige Änderungen die Auswertung entwerten

Für alle Eingriffe am Kessel und am RC310 gilt bei mir die Regel: nur eine Änderung auf einmal, davor und danach jeweils drei volle Tage Messung. Die einzige Ausnahme waren die DECT-Thermostate an den Heizkörpern, deren Zeitprogramme und Komforttemperaturen ich am 14. Oktober in einem Rutsch an unsere Nutzung der Räume (unter anderem dauerhaft 16 °C in Nebenräumen) angepasst habe.

Warum diese Trennung am Wärmeerzeuger wichtig ist, zeigten gleich die ersten beiden Schritte am 14. Oktober. Um 09:09 Uhr habe ich den Sollwert „Heizen“ am RC310 von 24 auf 21 °C gesenkt (Vorlauf-Soll fiel von 60 auf 48 °C), um 09:26 Uhr am zugestellten Thermostat hinter der Couch eine Temperaturkorrektur von −2 K eingetragen und um 11:15 Uhr im Servicemenü den Raumeinfluss von 3 K auf „Aus“ gestellt (Vorlauf-Soll fiel weiter auf 33 °C).

Hätte ich die −2 K Korrektur am Heizkörperthermostat eingestellt und den Raumeinfluss am RC310 gleichzeitig eingeschaltet gelassen oder zusammen mit einer neuen Heizkurve verstellt, hätten beide Regler direkt gegeneinander gearbeitet: Mit −2 K Offset heizt das Thermostat am Heizkörper den Raum auf echte 23 °C hoch. Der RC310 an der Wand steht nach der Korrektur auf 21 °C Sollwert. Sieht der RC310 nun über seinen Raumeinfluss, dass der Raum über 21 °C warm wird, senkt er die Vorlauftemperatur für das gesamte Haus ab – genau in dem Moment, in dem das Thermostat hinter der Couch das Ventil weiter öffnet, um die 23 °C zu halten. Dasselbe passiert, wenn im Referenzraum der Kamin angezündet wird.

Ein zweites Beispiel aus den Messdaten zwischen dem 13. und 15. Oktober: Als der Referenzraum trotz 100 Prozent geöffnetem Thermostatventil bei 20,1 °C stehenblieb, lag der Gedanke nahe, gleichzeitig die Heizkurve anzuheben und die Kesselpumpe umzustellen (ein Gedankenspiel, so habe ich es nicht gemacht). Eine testweise Anhebung des Sollwerts von 21 auf 22,5 °C hob den tatsächlichen Vorlauf bei gleichem Wetter aber nur um 1,4 K an und änderte an der Raumtemperatur nichts. Die Ursache war offenbar nicht die Heizkurve, sondern ein zu geringer Wasserdurchfluss bei Pumpenstufe 2; die Bestätigung steht noch aus. Dreht man in so einer Situation an Pumpenkennfeld, Heizkurve und Taktsperre zugleich, weiß man drei Tage später nicht, welcher Parameter den Durchfluss gebracht hat und welcher nur den Vorlauf unnötig verteuert. Noch deutlicher wäre der Effekt bei der Taktsperre gewesen: Hätte ich die Sperrzeit am Kessel von 10 auf 20 oder 30 Minuten verlängert, bevor der Durchfluss stimmt, hätte der Brenner zwar seltener gestartet, in den 37 Sekunden Brennzeit aber genauso wenig Wärme ins Haus geschoben – der Wohnraum wäre schlicht noch kälter geworden.

Wo die Messphase gerade steht – und was noch nicht rund läuft

Ich schreibe diesen Artikel mitten in der laufenden Umstellung; die Heizperiode hat gerade erst begonnen und ein Teil der Punkte ist noch offen oder frisch geändert:

  • Am 17. Oktober um 00:30 Uhr habe ich im Servicemenü des RC310 das Pumpenkennfeld von Delta-P Stufe 2 auf Stufe 4 angehoben, um den Durchfluss aus der Messung vom 15. Oktober zu erhöhen, und Auslegungstemperatur und maximale Vorlauftemperatur vorsorglich von 60 auf 65 °C gesetzt. Die Drei-Tage-Auswertung dieser Stufe läuft noch; die Einzelwirkung der drei Werte schreibe ich ihr deshalb nicht zu.
  • Zwei der zehn FRITZ!Smart Thermo 301 sind aktuell über DECT nicht erreichbar (vermutlich Batterie oder Funkabstand) und stehen noch auf den alten Firmware-Versionen 05.08 und 05.21 statt 05.34. Eines davon heißt in Home Assistant noch climate.test, weil die Umbenennung noch aussteht.
  • Die Warmwasser-Zirkulationspumpe steckt in einer schaltbaren Tuya-Steckdose außerhalb der Kesselsteuerung, die zurzeit defekt und in Home Assistant nicht erreichbar ist. Sobald der Ersatzstecker da ist, soll sie zu den Stoßzeiten morgens und abends alle 15 Minuten für 5 Minuten laufen (tagsüber alle 30 Minuten für 5 Minuten) sowie eine Stunde bei der Warmwasserladung. Das drückt die Laufzeit auf rund 4,5 Stunden am Tag.
  • Ein Test der Warmwasser-Einmalladung über Home Assistant (switch.water_heater_dhw1_charge) am 14. Oktober um 09:14 Uhr bei 55,7 °C Speichertemperatur endete nach elf Minuten ohne Brennerstart: Die RC310 brach die Ladung auf 60 °C selbst ab, weil der Speicher offenbar noch innerhalb der Einschaltdifferenz von rund 5 K lag. Ein Gegenversuch bei kaltem Speicher unter 50 °C steht noch aus.
  • Für die beiden Fußbodenheizungskreise am ungemischten Heizkreis muss noch per Foto geklärt werden, ob die analogen Regler auf Stufe 3 reine Raumthermostate oder Rücklauftemperaturbegrenzer sind, die den Estrich vor Vorlauftemperaturen über 55 °C schützen.

Für die kommenden Wochen stehen die nächsten einzelnen Schritte im Zeitplan, jeweils mit eigenem Messfenster:

Geplanter TerminEinzelschrittOrtZiel der Messung
ab 18. OktoberSkript heizung-wohnzimmer-korrektur.py scharf schaltenHome Assistant / FRITZ!BoxVergleicht alle 30 min RC310 und Thermostat, passt Offset in 0,5-K-Schritten (0 bis −4 K, max. 10×/Tag) automatisch an
25. OktoberSommer/Winter-Schwelle von 18 auf 16 °C senkenKM50Weniger Heizstunden an milden Herbsttagen
28. OktoberAußentemperatur-Dämpfung einschalten; thermische Desinfektion montags 02:00 Uhr auf 70 °CRC310 ServicemenüTrägheit des Gebäudes berücksichtigen; Legionellenschutz mit Zirkulation
NovemberBedarfsgeführte Abschaltung testenHome Assistant -> KM50Schaltet über Sommer/Winter-Schwelle ab, wenn alle Räume warm sind, und bei −0,5 K wieder ein

Die Parameter direkt am Kesselbedienfeld – maximale Heizleistung drosseln und Taktsperre anpassen – bleiben bis zur nächsten regulären Wartung mit dem Fachbetrieb im kommenden Jahr unangetastet. Bis dahin zeigt sich an den Zahlen im Drei-Tage-Rhythmus, wie weit wir allein über Durchfluss, bereinigte Regler und die bedarfsgeführte Abschaltung aus Home Assistant von den 37-Sekunden-Takten herunterkommen auf das Ziel von ein bis zwei Brennerstarts pro Stunde mit mehreren Minuten Laufzeit.

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht, deine IP-Adresse wird nicht gespeichert. Kommentare erscheinen erst nach Freigabe. Was mit deinen Angaben passiert, steht in der Datenschutzerklärung. Pflichtfelder sind mit * markiert.