KapfenbergDrei Orte, ein AlltagHeizen und KühlenLokal statt CloudBruno

Der Ofen gehorcht wieder — für 55 statt 299 Euro

Der Pelletofen nimmt Heizleistung und Solltemperatur wieder an. Es brauchte einen 32-Euro-Wandler, die richtige Baudrate und eine Zeile Code an der richtigen Stelle.

Die Vorderseite des Pelletofens aus der Nähe, Feuer hinter der Sichtscheibe, rechts daneben die Zimmerecke.
Die Vorderseite des Pelletofens aus der Nähe, Feuer hinter der Sichtscheibe, rechts daneben die Zimmerecke.

Bruno hat in Kapfenberg einen klaren Lieblingsplatz: vor dem Pelletofen. Was dieser Ofen jahrelang nicht mehr konnte, kann er seit dem 3. Oktober wieder — er nimmt Heizleistung und Solltemperatur aus Home Assistant entgegen, nicht nur ein und aus.

Die Frage am Anfang war einfach: Früher hing eine GSM-Steuerung am Ofen, die mehr konnte als schalten. Die ist weg. Geht das wieder?

Ja. Beides. Und zwar für ungefähr 55 Euro statt der 299, die das fertige Modul kostet. Hier steht, wie — und wo ich mich dabei zweimal gründlich geirrt habe.

Warum ein Relais nicht reicht

Am Ofen hing bereits ein Shelly am Thermostatkontakt. Der kann genau zwei Zustände: offen und geschlossen. Also Wärmeanforderung ja oder nein.

Das ist der Punkt, an dem die meisten Anleitungen enden — und es ist zu wenig. Wer die Leistung stellen oder auf eine Raumtemperatur regeln will, braucht einen anderen Weg.

Ein Hinweis vorab, weil er in Kommentaren immer wieder auftaucht: Einen brennenden Pelletofen über die Steckdose „auszuschalten“ ist keine Automation, sondern ein Schaden mit Ansage. Das unterbricht die Nachlaufphase des Gebläses. Der Thermostatkontakt ist dafür der richtige Weg, die Steckdose nie.

Die Buchse, an der die alte Steuerung hing

Auf der Rückseite sitzt eine 15-polige Sub-D-Buchse. Dort hing das alte GSM-Modul, und dieselbe Buchse benutzen auch die heutigen Nachrüstlösungen.

Der Beweis, dass dort mehr geht als ein/aus, war die Vorgeschichte selbst: Eine Box, die Heizleistung und Solltemperatur setzen konnte, kann nicht am Thermostatkontakt gehangen haben.

Die Belegung:

Pin Funktion
1 5 V Versorgung
2 Rx — Eingang des Ofens
3 Tx — Ausgang des Ofens
4 TTL-Leitung für den Raumfühler
5, 15 Masse

Pin 2 und 3 sind echtes RS-232. Pin 4 ist etwas anderes, nämlich die TTL-Leitung des Temperaturfühlers. Diese Unterscheidung klingt nach Kleinkram und hat mich einen halben Tag gekostet — dazu später.

Das Überraschende: Der Ofen sucht ein Modem

An dieser Buchse verhält sich der Ofen wie ein PC, der ein GSM-Modem erwartet. Er fragt alle fünfeinhalb Sekunden per AT-Befehl den SMS-Speicher ab. Bekommt er keine Antwort, meldet er sich weiter. Bleibt die Antwort eine halbe Minute ganz aus, schaltet er die GSM-Betriebsart ab — und die holt nur ein Mensch am Tastendisplay zurück.

Wer die Schnittstelle bedienen will, baut also ein Modem nach. Die Befehle kommen dann in Form erfundener SMS an, im Format [Code] [Befehl] [Parameter] — etwa ON, h100 für volle Leistung oder r21 für 21 Grad Raumtemperatur.

Die Teile

Teil Genaue Bezeichnung Zweck Preis
DB15-Kabel Harrisen DB15, konfektioniert — belegt werden rot, braun und hellgrün an Pin 3, 2 und 15 an die Ofenbuchse ~20 €
Serieller Wandler USR-DR162, seriell auf WLAN, mit Steckklemmen bringt die Schnittstelle ins Netz 31,94 €
Netzteil 12 V — versorgt den Wandler ~8 €
Raumfühler — war aus der alten Ausstattung noch da —

Der serielle Wandler in der Hand: vier Leuchten mit den Beschriftungen POW, WORK, COM und LINK, unten eine grüne Steckklemme mit angeschlossenen Adern.

Das ist das Teil für 32 Euro. Die vier Leuchten sagen der Reihe nach: Strom da, Gerät läuft, Daten gehen durch, WLAN steht. Beim Suchen des Fehlers war genau diese Reihenfolge nützlich — die Kennung auf dem Aufkleber habe ich unkenntlich gemacht.

Ein 15-poliger Stecker in der Hand, an drei Stifte sind einzelne Adern gelötet, die übrigen bleiben frei.

Belegt werden drei von fünfzehn Stiften. Die restlichen zwölf gehören zur alten Belegung der Buchse und bleiben frei — das war beim Löten die halbe Arbeit: herausfinden, welche drei es sind.

Nicht nötig, obwohl zuerst eingeplant: ESP32 und Pegelwandler. Die Bedenken wegen des Signalpegels waren unbegründet — Pin 2 und 3 sind echtes RS-232.

Zum Vergleich: Das fertige Nachrüstmodul kostet 299 Euro und kann dasselbe. Es war die ernsthafte Alternative, und die Entscheidung fiel erst, als klar war, dass der Selbstbau trägt. Rund 55 Euro gegen 299 — bei einem Programm von 200 Zeilen.

Die Pinbelegung stammt nicht von mir, sondern aus einem Forenbeitrag von 2013, in dem jemand dieselbe Buchse schon einmal vermessen hat. Ohne ihn hätte das Projekt mit Durchklingeln angefangen.

Beim Wandler lohnt ein Blick auf die Bauform. Die Variante mit Steckklemmen erspart das DB9-Kabel und den Geschlechtswandler; die Dualband-Fähigkeit hilft in einem Haus, dessen 2,4-GHz-Band ohnehin von einem Dutzend Kameras belegt ist.

Der Tag, an dem nichts kam

Erster Messtag: Kabel dran, Wandler im Netz, Mitschnittprogramm läuft — und Stille. Alle fünfeinhalb Sekunden eine Handvoll unsinniger Bytes, deren Anzahl sich mit der Abtastrate verschob.

Was ich daraus gemacht habe, ist der lehrreiche Teil.

Fehler 1: Ich habe ein Muster im Rauschen gelesen

Auf einer der Adern kamen drei Bytes mit einem festen ersten Wert und wechselndem Rest. Das sah nach Struktur aus. Ich habe daraus geschlossen, die richtige Ader gefunden zu haben.

Es war dasselbe Artefakt wie überall sonst, nur an einem anderen Stift. Aus einem Muster im Rauschen eine Botschaft zu lesen, ist der Klassiker — und die Gegenprobe, die es widerlegt hätte, lief zu dem Zeitpunkt schon.

Fehler 2: Eine Annahme, die ich nicht als Annahme gesehen habe

Dann fand ich in einem fremden Projekt den Satz, der Ofen benutze 5-Volt-Logik auf der seriellen Verbindung. Daraus habe ich einen Hardwarefehler konstruiert: Die Buchse führe TTL, der gekaufte Wandler sei das falsche Gerät, es müsse ein ESP32 her.

Das war falsch, und der Einwand kam prompt: TTL gilt für den Temperaturfühler, nicht für die serielle Verbindung. Genau so ist es — Pin 4 ist TTL, Pin 2 und 3 sind RS-232.

Die Wurzel des Irrtums: Ich hatte nie geprüft, ob die Buchse überhaupt RS-232 führt, weil das Originalmodem „RS232“ im Namen trägt. Eine Annahme, die so tief liegt, dass man sie nicht mehr sieht, kostet einen Messtag.

Es war die Baudrate

13:28:50.493  ATE0<CR>
13:28:56.035  ATE0<CR>
13:29:01.576  ATE0<CR>

ATE0 ist der erste Befehl an ein Modem: Echo aus. Der Ofen wiederholte ihn alle fünfeinhalb Sekunden, weil nie ein OK zurückkam.

Die Einstellung, die funktioniert: 38400, 8N1. Fremde Dokumentationen nennen für andere Modelle 115200 — und 38400 war die einzige Rate, die ich nie probiert hatte.

Zwei Stunden an einer Zeile

Der Ofen sprach, nahm aber keinen Befehl an. Auf jeden Versuch kam FAILURE: code Error. Das liest sich wie „falscher Zugangscode“, und genau in diese Richtung habe ich zwei Stunden gesucht: Code neu gesetzt, Absendernummer gekürzt, Leerzeichen im Kopf variiert, Zeilenenden getauscht, Pausen eingebaut.

Neun Verdächtige, alle widerlegt.

Die Ursache war eine Zeile in meiner Portierung des Vorbildprojekts: Ich habe die wartende Nachricht nach der ersten Auslieferung verworfen. Das Original hält sie bereit und liefert sie bei jeder Abfrage erneut aus, bis der Ofen sie ausdrücklich löscht. Mein Ofen las sie deshalb nur halb — und code Error war nie eine Aussage über den Code, sondern über eine halb gelesene Nachricht.

Gefunden hat es nicht der nächste Einfall, sondern ein Werkzeugwechsel. Statt je Versuch einen Lauf von einer Minute lieferte ein Reihenversuch acht Varianten in einem Durchgang. Dabei fiel auf, dass immer die zweite Nachricht eines Paares durchging — und von dort war es ein Schritt zur Lösung.

Die Lehre ist nicht „lies die fremde Dokumentation zu Ende“. Sie lautet: Wer zwölf Einzelversuche macht, sollte nach dem dritten das Werkzeug bauen, das zwölf auf einmal erledigt.

16:08 — er brennt

14:07:30  eingereiht: ON
14:07:47  MELDUNG: STOVE ON - HEAT 60%
14:08:22  eingereiht: h100
14:08:43  MELDUNG: STOVE ON - HEAT 100%

Der Zwischenstecker bestätigte es unabhängig von jeder Meldung: 277 Watt statt 2,5. Man hört die Zündung, und die Leistungsmessung zeigt sie.

Leistungskurve über einen Tag: zwei schmale Spitzen auf rund 280 Watt, dazwischen und danach eine flache Linie bei etwa 30 Watt.

Die beiden Nadeln sind die Zündungen, das Plateau bei rund 30 Watt ist der laufende Betrieb. Genau diese Kurve ist der Grund, warum es hier keinen Sensor namens „brennt” gibt — dazu unten mehr.

Die Rückseite eines flachen weißen Raumfühlers, darauf ein Aufkleber mit Typ und Schutzart.

Der Raumfühler war aus der alten Ausstattung noch da. Auf der Rückseite steht, was drinsteckt — ein einfacher Widerstandsfühler, nichts Digitales.

Später am selben Projekt dann der Raumfühler, angeklemmt an Pin 4 und 5 derselben Buchse — ein Vorher-Nachher ohne jede Deutung:

vorher:   r21  ->  FAILURE: text Error
nachher:  r21  ->  STOVE ON - ROOM 21

Damit ist die Ausgangsfrage beantwortet. Heizleistung und Temperatur.

Der eigenartigste Fehler des Projekts

Der Ofen hängte an jede Antwort PLEASE SAVE TEL NUMBER, obwohl die Nummer gespeichert war. Fünf Erklärungsversuche, alle widerlegt.

Die Lösung war banal und stand seit Stunden im Protokoll. Beim Speichern kam an:

gesendet  "+43..."   ->  gespeichert  "43..."
gesendet  "0670..."  ->  gespeichert  "670..."

Er frisst das erste Zeichen, egal welches. Die Abhilfe ist ein Opferzeichen — die Nummer mit einem zusätzlichen Plus voranstellen, dann kommt sie vollständig an.

Warum ich das nicht früher gefunden habe: Ich habe fünfmal gefragt, warum er die Nummer nicht annimmt, und kein einziges Mal, was bei ihm ankommt — obwohl er es in jeder einzelnen Antwort mitgeteilt hat. Die Bestätigung stand Zeichen für Zeichen da, und ich habe sie als Erfolgsmeldung gelesen statt als Messwert.

Das ist kein Schönheitsfehler: Ohne gültige Nummer verschickt der Ofen Störungen nicht von selbst — und das ist der eigentliche Gewinn der ganzen Anbindung.

Was in Home Assistant steht

Bedienseite im Telefon: zwei große Knöpfe für Aus und Ein, darunter drei für 30, 60 und 100 Prozent Heizleistung, ein Schieberegler für die Solltemperatur und ein Knopf, der auf Raumtemperatur regelt.

So sieht es am Telefon aus. Die drei Stufen sind die, die der Ofen über die Buchse annimmt — mehr gibt das Protokoll nicht her.

Entität Bedeutung
sensor.ofen_kapfenberg_meldung die letzte Meldung des Ofens im Klartext
binary_sensor.ofen_kapfenberg_gsm ob der Ofen sein Modem sieht
binary_sensor.ofen_kapfenberg_stoerung Meldung beginnt mit FAILURE
rest_command.ofen_kapfenberg_befehl einen Befehl absetzen
script.ofen_kapfenberg_aus Ofen aus

Dazu ein kleiner Dienst auf dem Raspberry Pi, der die ständige Verbindung hält und jede Abfrage des Ofens beantwortet. Er muss durchlaufen — nicht aus Bequemlichkeit, sondern weil der Ofen sonst nach einer halben Minute ohne Antwort die GSM-Betriebsart abschaltet. Während der Versuche ist das ein Dutzend Mal passiert, jedes Mal, weil zwischen zwei Läufen niemand geantwortet hat.

Was es bewusst nicht gibt

Keinen Zustandssensor. Dieses Ofenmodell kennt die Statusabfrage nicht; die gibt es erst ab einer neueren Gerätesoftware. Es gibt also keinen Zustand auf Abruf, nur Bestätigungen auf Befehle und Meldungen, die der Ofen von sich aus schickt.

Keinen Sensor namens „brennt“. Die Einstellung und die gemessene Leistung werden nicht zu einer Aussage verrechnet. An einem Abend stand die Einstellung durchgehend auf 30 Prozent, während der Stecker nacheinander 263 W, 11 W und 29 W zeigte. Was davon Zünden, Takten oder Ausgehen war, sagt keine der beiden Zahlen für sich. Das Attribut heißt deshalb regt_sich und nicht brennt — ein Sensor, der daraus eine Verbrennung macht, behauptet mehr, als gemessen ist.

Zum Nachbauen

Das Ganze liegt öffentlich, unter MIT-Lizenz:

Dieses Projekt fritzzetik/rika-serial-homeassistant — Add-on, Paket und die Beschreibung der Nachrichtenform
Das Vorbild n-serrette/esphome_rika_gsm — dieselbe Buchse, aber über ESPHome und einen Mikrocontroller
Die Pinbelegung Forenbeitrag von 2013
Das Handbuch des alten Moduls RIKA GSM Pikatronic — dort steht die Befehlssprache

Gemessen ist alles an einem Como, Baujahr 2014. Dieselbe Buchse und dasselbe Tastenmenü gibt es laut Handbuch auch bei Memo, Pico, Revo und Topo — dort ungetestet, aber das Protokoll gehört dem Ofen, nicht dem Modell.

Ein Hinweis zum Vorbildprojekt, weil er mich eine Vermutung gekostet hat: In dessen Pull Request 5 steht, dass eine andere Ofenreihe kein <LF> am Zeilenende braucht. Ich hatte dasselbe mühsam selbst hergeleitet — es stand die ganze Zeit dort. Für den Como ist die Variante allerdings falsch, er will beides.

Keiner dieser Links ist bezahlt. Der Preisvergleich braucht eine Quelle, und die Bauteile sollen nachvollziehbar sein — mehr steckt nicht dahinter.

Und was heißt das?

Wenn du ein Heizgerät besitzt, das „eigentlich smart“ sein sollte und es nicht mehr ist, kennst du das Muster: Das Gerät ist in Ordnung, nur die Anbindung fehlt. Dieser Fall ist häufiger als ein echter Defekt, und er lässt sich meistens lösen, ohne das Gerät zu tauschen.

Drei Dinge, die ich mitnehme:

  1. Prüfe die Annahme, die du nicht mehr siehst. Ich habe einen Tag verloren, weil „RS232“ im Produktnamen stand.
  2. Baue nach dem dritten Einzelversuch das Werkzeug. Zwölf Versuche von Hand finden weniger als ein Durchgang, der acht Varianten vergleicht.
  3. Frag nicht, warum das Gerät dich ablehnt — frag, was bei ihm ankommt. Die Antwort stand von Anfang an im Protokoll.

Der Einbau an der Buchse selbst ist ein Fachthema. Was hier steht, dokumentiert mein Vorgehen; es ist keine Freigabe für Eingriffe an fremden Anlagen.

Bruno hat von alldem nichts mitbekommen. Er liegt weiter vor dem Ofen. Ihn interessiert die Steuerung nicht, solange die Wärme stimmt — und sie stimmt jetzt auf Ansage.