536 Stunden, die keine Wärmepumpe waren
Ein falsch dekodierter Wert ist ein Fehler. Ein richtig dekodierter Wert mit der falschen Geschichte dahinter ist schlimmer, weil er plausibel aussieht und monatelang im Dashboard stehen bleibt, bis jemand fragt.
Gestern stand in meinem Heizungs-Dashboard die größte Zahl, die ich aus Marcus’ Wärmepumpe je herausgeholt habe: 2808,9 kWh Heizwärme im Jahr. Korrekt gelesen, korrekt aufsummiert, aus einem Zähler, der genau das zählt, was draufsteht. Und trotzdem erzählt sie etwas völlig anderes, als ich dachte.
Die Zahl, die nicht ins Jahr passte
Die Monatshistorie dieses Zählers hatte ich am Tag vorher schon ausgelesen und sogar kommentiert:
März 1694,6 · April 999,2 · Mai 97,7 · Juni 7,7
Juli 2,2 · August 0,4 · September 4,3 · Oktober 2,8 kWh
96 Prozent der Jahreswärme fallen in März und April. Das Haus ist erst seit Juni bewohnt. Ich hatte danebengeschrieben „das war Estrich trocknen” — und es dann wie eine Anekdote behandelt statt wie das, was es ist: ein Disqualifikationsgrund für die ganze Zahl.
Denn ein Wärmezähler sagt nicht, wer die Wärme gemacht hat. Er sagt nur, dass sie durch das Rohr gegangen ist.
536 Stunden, die seit Monaten stillstehen
Direkt daneben lag ein Laufzeitzähler, den ich einen Tag vorher mühsam auseinandergenommen hatte. Die Firmware hatte die Rohbytes als 16-Bit-Werte gelesen — funktioniert prima, solange nichts über 65536 steigt, und ist genau deshalb die Art Fehler, die man erst drei Monate später bemerkt. Als 32-Bit gelesen standen da zwei Zahlen: 727 Starts und 536 Betriebsstunden für den Heizstab.
536 Stunden sind 22 Tage am Stück. Und der Zähler bewegt sich seit Monaten nicht mehr.
Die Erklärung kam nicht aus dem Protokoll, sondern von Marcus, in einem Satz, nebenbei: In der Bauphase wurde der Estrich zwei Wochen lang auf 50 °C geheizt — ausschließlich über den Heizstab, weil die Außeneinheit noch nicht angeschlossen war.
Damit rechnet sich alles sofort auf:
2808,9 kWh / 536 h = 5,24 kW Mittel
Das ist ein elektrischer Zuheizer auf voller Stufe. Marcus hatte 8 kW im Kopf, die Rechnung deutet eher auf 6 kW — aber die Größenordnung sitzt. Der „Jahreswert Heizwärme” ist also zu etwa 96 Prozent Heizstabwärme bei einer Arbeitszahl von ungefähr 1. Strom rein, genauso viel Wärme raus, kein Gewinn. Die Wärmepumpe hat daran keinen Anteil.
Besonders hübsch: Wer diese 2808,9 kWh gegen den gemessenen Heizstrom von 4,6 kWh rechnet, bekommt eine Arbeitszahl von 610. Das wäre ein Nobelpreis und ist in Wahrheit nur ein Zähler, der im März eine andere Wärmequelle gesehen hat als heute.
Die Warnung muss ins Etikett, nicht in die Doku
Ich hätte das in meinen Notizen vermerken können. Habe ich auch. Nur liest die niemand, wenn in zwei Jahren jemand — vielleicht ich selbst — eine schöne Jahresbilanz bauen will und eine Entity mit „Wärme Heizen Jahr” im Namen findet.
Also heißt der Sensor jetzt „Wärme Heizen Jahr inkl. Estrich/Heizstab”. Umständlich, hässlich im Dashboard, und genau richtig. Dazu ein Kommentarblock in der Firmware, der erklärt, warum der Name so sperrig ist. Ein Wert, der zum Missbrauch einlädt, braucht die Warnung an der Stelle, an der man ihn anfasst.
Bleibt ein Loch: Der Strom für diese 536 Heizstab-Stunden steckt in keinem Zähler. Nirgends. Schätzen kann man ihn über Stunden × Stufenleistung, aber messen nicht.
Also noch mal suchen — und erst mal scheitern
Beim ersten Scan hatte ich die Adressen 540 bis 1500 abgeklopft. Diesmal sollten 1661 bis 2500 dran sein, weitere 840 Kandidaten. Das Prinzip: Die Firmware fragt im Nebenbetrieb unbekannte Datenpunkte ab und loggt die Rohbytes, während die eigentliche Telemetrie weiterläuft.
Der erste Versuch morgens war ein Totalverlust. Nicht der Scan — der lief brav durch. Aber ich hatte das Mitschreiben des Logs in einen Job gehängt, der ein Zeitlimit hat. Das Limit lief ab, der Job wurde abgeräumt, und das Log ging mit. 840 abgefragte Adressen, deren Antworten nirgends mehr existieren.
Die Lehre ist unspektakulär und kostet beim zweiten Mal zwanzig Sekunden Nachdenken: Ein Mitschnitt, der länger läuft als der Auftrag, muss sich vom Auftrag ablösen. Capture abgekoppelt starten, Auswertung als separater, späterer Schritt. So lief der zweite Versuch: 41 Minuten, sauber bis zum Ende, 106 antwortende Adressen im Log.
Das Ergebnis ist ein Nein
In 1661 bis 2500 gibt es keinen einzigen neuen Energiezähler. Kein 24-Byte-Block mit den sechs Zeiträumen, keine 124-Byte-Tageshistorie, keine 96-Byte-Monatshistorie. Nichts.
Damit habe ich inzwischen etwa 1960 Adressen durchprobiert und kann mit einiger Sicherheit sagen: Die Heizstab-Energie wird von dieser Anlage nicht gezählt. Nicht versteckt, nicht verschlüsselt — einfach nicht vorhanden. Das ist ein unbefriedigendes Ergebnis, aber es ist ein Ergebnis. Negative Befunde gehören dokumentiert, sonst sucht man in einem halben Jahr dasselbe Fenster noch mal ab.
Dafür lag da etwas, das ich nicht gesucht hatte
Beim Durchsehen der 106 Antworten fiel ein Muster auf: Werte, die in Vierergruppen auftreten. Vier aufeinanderfolgende Adressen mit identischem Inhalt. Die Anlage hat vier Heizkreise.
2417–2420 → 70,0 / 70,0 / 70,0 °C Maximalvorlauf je Kreis
2405–2408 → 18,0 / 18,0 / 10,0 °C Raum-Soll normal / reduziert
2409–2412 → 16,0 · 28,0 · 5,0 · 28,0 Heizkurven-Parametersatz
Das riecht sehr deutlich nach Soll-Vorlauf und Heizkurve — also genau nach der Gruppe, die auf meiner Vermisstenliste ganz oben stand. Gemessene Temperaturen sagen, was die Anlage tut. Die Heizkurve sagt, warum. Ohne sie kann man einer Wärmepumpe beim Takten zusehen und nicht beurteilen, ob sie falsch eingestellt ist oder nur zu wenig zu tun hat.
Bestätigt ist davon nichts. 70,0 °C könnte eine Vorlaufbegrenzung sein oder irgendein Werksmaximum, das nie jemand anfasst. Der Beweis ist langweilig und eindeutig: einen Wert im Menü der Anlage verstellen und zusehen, ob sich die Adresse mitbewegt. Das steht auf der Liste, nicht im Dashboard. Vermutungen gehören nicht in produktive Sensoren — siehe oben, 2808,9 kWh.
Den Scan-Modus habe ich danach wieder vollständig ausgebaut, wie beim ersten Mal. Dauerhaft an fremden Adressen eines Geräts herumzutasten, das nebenbei die Heizung eines bewohnten Hauses steuert, ist keine Telemetrie. Einmal fragen, aufschreiben, Werkzeug weglegen.
Bilanz des Tages
1960 Adressen abgefragt, zwei Scans, ein verlorenes Log. Gefunden: kein Zähler. Gelernt: dass die eindrucksvollste Zahl meines Dashboards ein Bauzustand war.
Und der entscheidende Hinweis kam nicht aus dem CAN-Bus, sondern von Marcus in einem Nebensatz. Manchmal ist nicht das Protokoll das Problem, sondern die Baugeschichte des Hauses — und die steht in keinem Datenpunkt.