Mein Smart Home

Wie ich meine alte Pellet-Heizung smart gemacht habe – ohne sie anzufassen

Christian Steiner 3. Juli 2026 ≈ 12 min Lesezeit

Lesezeit: ca. 9 Minuten

Es ist spät, ich komme aus dem Keller hoch, wo ich den halben Abend an Kabeln und winzigen Displays gelötet habe. Ich lasse mich aufs Sofa fallen, schaue an die Wohnzimmerwand – und da steht es endlich: wie viele Pellets noch im Tank liegen, ob meine Heizung gerade Wärme durchs Haus schiebt, ob die Solarthermie oben auf dem Dach etwas bringt. Kein Handy, keine App, kein Menü. Drei kleine leuchtende Streifen, die mir das Wichtigste über meine Heizung direkt ins Wohnzimmer holen.

Das Verrückte daran: Meine Heizung selbst kann von all dem nichts. Sie ist steinalt und weiß nicht mal, dass es sowas wie „smart“ gibt.

Fertiges Heizungs-Cockpit: weiße 3D-gedruckte Front mit drei leuchtenden Displays auf der Werkbank
Frisch zusammengebaut auf der Werkbank – alle drei Displays laufen zum ersten Mal.

Die Heizung weiß von nichts

Bei mir hängt eine Windhager PMX 150, ein Pellet-Heizkessel, der von sich aus null smart ist: keine Schnittstelle, keine App, keine Cloud, nichts, was ich irgendwo einstöpseln könnte. So ein Gerät läuft, heizt – und schweigt. Wenn du wissen willst, wie voll der Tank ist, machst du die Klappe auf und guckst rein.

Genau das wollte ich nicht mehr. Und der Clou dieses ganzen Projekts ist: Ich habe die Heizung komplett von außen smart gemacht, ohne einen einzigen Eingriff in die Anlage selbst. Nichts aufgeschraubt, keine Garantie gefährdet, keine Steuerleitung angezapft. Alles nur drangeklebt und außen abgegriffen:

  • Die Temperaturen messe ich außen an den Wasserleitungen. Kleine digitale Fühler (DS18B20) stecken einfach in der Rohrisolierung an Vor- und Rücklauf von Heizung und Warmwasser, ein weiterer an der Solarthermie. Ein kleiner Mikrocontroller (ESP32) liest sie aus.
  • Den Pellet-Füllstand misst ein Ultraschall-Sensor, der von oben in den Tank schaut und den Abstand zur Pellet-Oberfläche bestimmt – daraus rechne ich Kilogramm und Prozent.
  • Und ob gerade jemand nachfüllt, verrät ein kleiner Funk-Kontakt, den ich nachträglich an die Nachfüllklappe geklebt habe.

Nicht-invasiv, nachrüstbar, reversibel. Wenn du also glaubst „meine Heizung ist zu alt für sowas“ – das gilt nicht. Gerade solche stummen alten Geräte kann man von außen erstaunlich gut ablesbar machen. (Falls du Home Assistant noch nicht kennst – das ist die kostenlose Zentrale, in der bei mir alle diese Werte zusammenlaufen; wie man damit startet, habe ich in meinem Home-Assistant-Einsteiger-Guide beschrieben.)

Ultraschallsensor am Pellet-Tank-Deckel und Blick in den Tank auf die Pellets
Der Ultraschall-Sensor schaut von oben in den Tank – aus dem Abstand zur Oberfläche wird der Füllstand errechnet wird.

Der Startpunkt: viel Sensorik, aber nichts, das zusammenspielt

Als ich mich diese Session drangesetzt habe, hing zwar schon einiges – aber es war Stückwerk. An der Wand ein Modul aus drei winzigen Streifendisplays, von denen nur eines etwas Sinnvolles zeigte; die anderen ein grünes Testmuster und widersprüchliche Werte. An der Heizung fünf Temperaturfühler, deren gemeinsame Datenleitung schlicht tot war. Die Werte, die überhaupt ankamen, sprangen so wild, dass ich ihnen nicht traute.

Mein Ziel war deshalb simpel: aus dem Chaos ein sauberes Ganzes machen, dem ich glauben kann – ablesbar aus zwei Metern, stabile Werte statt „unknown“, und auf einen Blick verständlich. Und es sollte sich premium anfühlen, nicht nach hingerotztem Bastelkram.

Offener Aufbau: ESP32 mit Kabelbündel und drei losen ST7789-Streifendisplays
Der ehrliche Zwischenstand: ein Haufen Kabel, dem ich noch kein einziges Messergebnis geglaubt habe.

Den toten Sensor-Bus wiederbeleben

Zuerst habe ich die Verkabelung durchgemessen und mir jede Lötstelle angeschaut. Alle fünf Fühler hängen parallel an einer gemeinsamen Datenleitung (an GPIO4 des ESP32). Der entscheidende Fix war am Ende ein winziges Bauteil: Sobald drei oder mehr dieser Sensoren an einem Strang hängen, reicht der interne Widerstand im Chip nicht mehr, um die Leitung sauber auf Spannung zu halten. Es braucht einen externen 4,7-Kiloohm-Widerstand von der Datenleitung nach 3,3 Volt. Ohne den meldet der Bus stur „Found no devices!“ – „keine Geräte gefunden“.

Ich habe den Widerstand nachgelötet, den ESP neu starten lassen (er scannt die Leitung bei jedem Boot) und plötzlich standen sie im Log:

[C][gpio.one_wire:087]:   Found devices:
[C][gpio.one_wire:090]:     0x5800000036fca428 (DS18B20)
[C][gpio.one_wire:090]:     0xeb000000372ccc28 (DS18B20)
      … vier Stück, wo vorher keiner war …

Von null auf vier – nach dem ewigen „Found no devices!“ ein richtig gutes Gefühl. Zwei Cent Bauteil, stundenlange Wirkung. (Der fehlende fünfte war ein Wackler am weitesten entfernten Abzweig, dem Solar-Fühler – nachgelötet, Klemme nachgezogen, dann waren es fünf.)

ESP32 der Temperatursensorik mit DS18B20-Modul und Anschlusskabel
Das Herz der Temperaturmessung: ein kleiner ESP32, der die fünf Fühler ausliest.

Der Schock: gefunden, aber keiner liefert Werte

Kaum lebte die Leitung, kam der nächste Dämpfer. Direkt unter der schönen Sensor-Liste stand fünfmal:

[W][dallas.temp.sensor:030]:   Unable to select an address

Eine Notiz, die ich mir selbst in die Konfigurationsdatei geschrieben hatte, behauptete, die Software würde die gefundenen Fühler automatisch der Reihe nach zuordnen. Stimmt für den alten Software-Baustein – für den neuen ist es schlicht falsch: Er muss für jeden einzelnen Sensor dessen eindeutige Hardware-Adresse fest eingetragen bekommen, sobald mehr als einer am Strang hängt. Sonst veröffentlicht keiner seinen Wert, und alle Anzeigen bleiben leer. IIch habe an der falschen Stelle gesucht, bis ich kapiert hatte, dass meine eigene Notiz mich angelogen hatte.

Fünf identische Fühler auseinanderhalten

Jetzt kam die kniffligste Fleißarbeit. Fünf dieser Fühler sehen elektrisch exakt gleich aus – welche Adresse gehört zu Heizung-Vorlauf, welche zu Warmwasser-Rücklauf, welche zur Solarthermie? Die gemessene Temperatur half nicht weiter, weil die Fühler beim Einrichten noch frei herumlagen. Also habe ich jeden einzeln in die Hand genommen, mit den Fingern angewärmt und geschaut, welcher Wert auf dem Schirm nach oben kletterte. Fühler für Fühler, bis die Zuordnung stand. Nicht elegant, aber es funktioniert – und man fühlt sich dabei ein bisschen wie beim Kabelsalat-Rätsel.

Aufräumen kostet einen Abend

Ein guter Teil der Zeit ging nicht in Technik, sondern ins Saubermachen – und in ärgerliche Kleinigkeiten. Ich lernte auf die harte Tour, dass ein Umbenennen des Geräts die internen Kennungen nicht automatisch mitzieht (die bleiben stur kleben, jede musste ich einzeln nachziehen), dass eine Notfall-WLAN-Kennung bei 32 Zeichen hart abgeschnitten wird (meine hatte genau zwei zu viel) und dass ich um ein Haar ein völlig fremdes Netzwerkgerät gelöscht hätte, das nur zufällig ähnlich hieß. Nichts davon war schlimm – aber jede dieser Kleinigkeiten kostete einen kompletten Durchlauf und ein genervtes Kopfschütteln.

Die drei Displays bauen

Wichtig zum Verständnis: Es ist kein eigenes Gerät pro Display, sondern ein Mikrocontroller, der alle drei über eine gemeinsame Leitung ansteuert. Jedes Display bekommt zusätzlich seine eigenen Steuersignale. So sieht meine Verkabelung aus:

Display Steuerleitungen (CS / DC / RST / BL) Thema
1 15 / 19 / 4 / 22 Pellet-Lager
2 13 / 21 / 14 / 27 Heizung + Solar
3 25 / 26 / 32 / 33 Warmwasser

Ein Detail, das mich Nerven gekostet hat: Man muss den allgemeinen Display-Treiber mit ausgeschalteter Farbumkehr nutzen – nicht den scheinbar passenden Spezial-Treiber, denn der kehrt fest verdrahtet alle Farben um (aus Rot wird Cyan). Und die eigentliche Härte ist die Auflösung: 284 Pixel breit, nur 76 Pixel hoch. Ein Streifen. Da passt kein Drei-Spalten-Layout, also habe ich jedem Display genau ein Thema gegeben – links eine schmale Zone für ein Icon oder eine Animation, rechts die Zahlen.

Vom Kabelchaos ins Gehäuse

Was ein Bastelprojekt von einem „Gerät“ unterscheidet, ist am Ende das Gehäuse. Damit die drei Displays nicht als nackte Platinen an der Wand kleben, habe ich mir eine passgenaue Hülle selbst konstruiert und aus weißem PETG auf meinem 3D-Drucker (Bambu Lab P1P) gedruckt. Erst dadurch wirkt das Ganze wie ein fertiges Produkt und nicht wie offengelegte Elektronik – genau das „premium“ Gefühl, das ich wollte.

Rückseite der 3D-gedruckten Hülle mit ESP32, Verkabelung und drei Display-Platinen
Die Rückseite meiner gedruckten Hülle – hier verschwindet die ganze Verkabelung sauber im Gehäuse.

Animationen, die etwas Echtes bedeuten

Mir war wichtig, dass die kleinen Animationen nicht nur hübsch sind, sondern echte Zustände zeigen. Statt fertiger Bildchen habe ich alles mathematisch zeichnen lassen – Linien und Kreise, deren Winkel aus einem hochzählenden Zähler kommen. Das läuft ruckelfrei und kostet keinen Speicher.

  • Ein Pumpenrad auf dem Warmwasser-Display dreht sich nur, wenn die Umwälzpumpe wirklich läuft. „Wirklich“ heißt bei mir: Ich schaue auf die tatsächliche Leistungsaufnahme (gerade 32 Watt) und werte alles über 5 Watt als „läuft“ – das ist ehrlicher als ein bloßer Steckdosen-Schalter, der nur „Strom an“ sagt, aber nicht, ob der Motor umwälzt.
  • Ein Heizkörper-Icon glüht rot, wenn die Heizung an ist, und bleibt grau, wenn nicht.
  • Die Fließ-Animation läuft, wenn die Differenz zwischen Vorlauf und Rücklauf groß genug ist – bewusst an die Differenz gekoppelt, nicht ans absolute Niveau, damit es auch im heißen Betrieb stimmt.

Die Temperaturzahlen sollten sprechen: kalt = blau, mittel = orange, heiß = rot. Den Übergang habe ich bewusst über Orange geführt, weil ein direkter Sprung von Blau nach Rot ein hässliches Lila ergibt.

Am meisten Spaß gemacht hat die Sonne auf dem Solar-Display. Erst hing sie nur an der Solarthermie-Temperatur, dann habe ich sie an echten Sonnenschein gekoppelt: Meine Dach-Wetterstation liefert einen Helligkeitswert, und danach richtet sich jetzt, wie hell und gelb die Sonne strahlt und wie viele Strahlen sie hat. Drehen tut sie sich aber nur, wenn zusätzlich echter Wärmeertrag da ist. Nachts ist sie deshalb nur noch ein ruhiger grauer Punkt – vorher hatte die alte Logik selbst im Dunkeln acht graue Strahlen gemalt, die habe ich rausgeworfen.

Mein Lieblings-Feature: die Pellet-Tank-Deckel-Pause

Erinnerst du dich an den Funk-Kontakt an der Nachfüllklappe? Der löst mein liebstes Detail. Das Problem: Wenn ich den Tank zum Nachfüllen öffne und mit der Schaufel in den Messkegel des Ultraschall-Sensors gerate, springt der Füllstand wild.

Meine Lösung: Solange der Deckel offen ist, liefert der Sensor bewusst „keinen gültigen Wert“ – und ein ohnehin vorhandener Filter hält dann automatisch den letzten guten Stand fest. Kilogramm und Prozent frieren ein, das Display zeigt einfach „Open“. Kein Sprung, kein Unsinn.

Der eigentliche Kniff steckt in der Sicherheitslogik: Es wird nur bei ausdrücklich „offen“ pausiert. Denn dieser Funk-Kontakt fällt bei mir rund 30-mal pro Woche kurz auf „nicht verfügbar“ – ganz normale Funk-Aussetzer. Hätte ich „alles außer sicher zu = pausieren“ gebaut, stünde meine Messung ständig still. Diese Lektion – Sicherheitslogik immer auf „explizit pausieren“ bauen, nie auf „bei allem außer normal“ – nehme ich in jedes künftige Projekt mit. Getestet habe ich es übrigens, ohne den Tank überhaupt zu öffnen: den Deckel-Zustand einfach per Software auf „offen“ gesetzt, und prompt fror der Wert ein und das Display sagte „Open“. Genau so soll’s sein.

Was am Ende richtig gut lief

Ein paar Dinge haben mich am meisten gefreut: Der winzige Widerstand, der den ganzen Sensor-Strang zum Leben erweckt hat. Die Deckel-Pause, die ganz ohne komplizierten Zwischenspeicher auskommt. Und die gezeichneten Animationen, die für so wenige Pixel erstaunlich gut aussehen. Als das Pumpenrad zum ersten Mal sauber drehte, saß ich vor dem Display und dachte ehrlich: „Das sieht richtig gut aus.“ Am schönsten aber war der Moment, in dem ich abends hochkam und es einfach lief – ein Gerät, kein Baustellen-Stückwerk mehr.

Für wen lohnt sich das – und für wen nicht?

Ehrlich: Das hier ist ein nischiges, technisches Projekt. Es lohnt sich, wenn du ohnehin mit Home Assistant und ESP32-Mikrocontrollern arbeitest, gern lötest und Freude daran hast, dir eine Information genau so an die Wand zu bauen, wie du sie brauchst. Steigst du gerade erst ein, würde ich mit etwas Einfacherem anfangen – ein fertiges Display oder ein altes Tablet mit der Home-Assistant-App bringt dir denselben Blick an die Wand ohne Löterei. Der Reiz lag für mich im Selberbauen und Verstehen. Wenn dich das nicht kitzelt, ist der Aufwand hart.

Mein Setup (die wichtigsten Teile)

  • Heizung: Windhager PMX 150 Pellet-Heizkessel (von Haus aus ohne jede Schnittstelle).
  • Temperatur: 1× ESP32 mit 5× DS18B20-Fühlern in der Rohrisolierung, plus dem entscheidenden 4,7-kΩ-Widerstand.
  • Displays: 1× TTGO-ESP32 treibt 3× ST7789-Streifendisplay (76×284 Pixel) über eine gemeinsame Leitung, verbaut in einer selbst gedruckten Hülle (Bambu Lab P1P).
  • Pellet-Messung: 1× ESP32 mit Ultraschall-Sensor von oben im Tank.
  • Nachfüll-Erkennung: 1× Funk-Tür-/Fensterkontakt an der Klappe.
  • Software/Werkzeug: ESPHome, Home Assistant.

Preise und Bezugsquellen lasse ich bewusst weg – die habe ich beim Bauen nicht dokumentiert und erfinde sie nicht.

Fazit

Aus einer stummen, alten Heizung und einem Haufen Kabel ist ein kleines Cockpit geworden, das mir jeden Tag im Vorbeigehen erzählt, wie es meiner Anlage geht – und das komplett von außen, ohne einen einzigen Eingriff ins Gerät. Wenn du selbst so etwas angehst: Prüf zuerst den kleinen Widerstand am Sensor-Strang, trau keinem Kommentar, den du dir selbst geschrieben hast, und bau deine Sicherheitslogik immer auf „explizit pausieren“. Der Rest ist Geduld – und ein richtig gutes Gefühl, wenn es abends an der Wand leuchtet.

Ausblick: Die Heizung lernt, sich selbst zu bedienen

Und jetzt kommt der Teil, der mich gerade am meisten kribbeln lässt – denn Ablesen war erst der Anfang. An die vier Bedientasten meiner Heizung (unter anderem An/Aus, Reset und die Modi-Abfrage) kommen gerade kleine Fingerbots – motorisierte Tastendrücker, die auf Kommando aus Home Assistant heraus die Taste physisch drücken. Die stumme Kiste bekommt also im Wortsinn Finger.

Als Nächstes ist geplant: ein Shelly zur Strommessung direkt vor der Heizung, damit ich zweifelsfrei sehe, ob sie wirklich läuft. Ein automatischer Reset, wenn sie sich mit einem Fehler verabschiedet. Und perspektivisch will ich sogar das alte Digitaldisplay der Heizung per Kamera ablesen, um Fehlercodes automatisch zu erkennen. Am Ende soll ein Home-Assistant-Dashboard stehen, das selbst mitdenkt – Außentemperatur, Anwesenheit, Urlaubsmodus und die Frage „reicht heute die Solarthermie, oder muss der Kessel ran?“.

Nichts davon ist fertig, vieles noch Bastelstelle. Aber die Richtung steht: Aus einer stummen alten Heizung wird Stück für Stück eine, die mitdenkt. Davon erzähle ich im nächsten Beitrag.

Windhager PMX ökomix Pellet-Kessel mit Bedienpanel
Die stumme alte Windhager PMX 150 – das Gerät, das ich Stück für Stück zum Mitdenken bringe.
Ch

Christian Steiner

Betreibt sein Zuhause auf Home Assistant und teilt hier, was er selbst ausprobiert – verständlich und ohne Fachchinesisch.

Nach oben scrollen