İçindekiler tablosu
Aktualisiert – Şubat 3, 2026
Ein moderner Kaminofen verfügt i.d.R. über eine integrierte Abbrandsteuerung. Wer noch einen Kaminofen ohne diese Automatik hat, kann sich die Steuerung im Kombination mit Smarthome (Raspberry Pi) selbst bauen.
Wenn es auch noch keine Möglichkeit gibt das Nachlegen des Holzes zu automatisieren, von Pelletöfen abgesehen, so erzielt man mit einer Automatisierung einen gleichmäßigeren Abbrand, gleichbleibende Temperaturen und einen geringeren Holzverbrauch von bis zu 30 % bei größerer Effizienz.
Wer sich nicht gleich „traut“, dem sei gesagt, dass es auch mir einst so erging. Doch, befasst man sich einmal etwas gründlicher mit der Thematik und den Möglichkeiten, die z.B. RaspberryMatic auf einem Raspberry Pi zur Verfügung stellen, so ist die Überzeugung nicht weit, dass man das „schaffen“ wird!
Und wie so oft im Leben: gemeinsam geht es besser! Packen wir’s an!
Theorie
Was wir mit dem bloßen Auge am Flammenbild und der Flammenfarbe erkennen, übernimmt hier ein etwa 20 cm oberhalb der Brennkammer in das Abgasrohr eingeschraubter Hochtemperatur-Fühler.
Entsprechend der zu haltenden Temperatur von um die 200 °C veranlasst er über ein einfaches Programm auf dem Raspberry Pi das Auf- und Zuregeln der Zuluftklappe, was man bisher manuell vorgenommen hatte, – so man gerade den Blick auf den Ofen warf …
Also im Prinzip ein einfacher Mechanismus. Der Mechanismus, im wahrsten Sinne des Wortes, wird hier über einen Linearantrieb, der durch einen Schrittmotor bewegt wird, realisiert. Entsprechend dem Temperatur-Ist-Wert im Vergleich mit dem Soll-Wert erhält der Schrittmotor die Information, ob er bei zu geringer Temperatur die Zuluft erhöhen oder vermindern soll. Entsprechend wird der mit dem Linearschlitten mechanisch gekoppelte (manuelle) Betätigungshebel der Zuluft-Klappe vor oder zurück, die Klappe auf oder zu bewegt.
Da RaspberryMatic keine Möglichkeit bietet einen Schrittmotor direkt anzusprechen, behelfen wir uns mit einem ESP32-IDF, einem kleinen Computer, der den Anschluss eines Schrittmotor-Controllers bietet und somit die Steuerung desselben übernehmen kann.
Die Kommunikation zwischen RaspberryMatic und ESP32-IDF erfolgt via WLAN, das auf dem ESP32-IDF bereits integriert ist. Die Programmierung des ESP32-IDF erfolgt in C++, Arduino IDE und ist in diesem Beitrag zur einfachen Übernahme, nach Änderung weniger Parameter, enthalten.
Das Programm zur Erfassung der Temperatur und Positionierung des Linear-Schrittmotors wird ebenfalls zur einfachen Übernahme zur Verfügung gestellt.
Alışveriş listesi
- Raspberry Pi 4 Modell B Set mit Gehäuse, Lüfter, Netzteil – ca. 95 Euro
- SD-Karte 16 GB (für RaspberryMatic-Installation) – ca. 10,- Euro
- RaspberryMatic (İndir) – kostenfrei
(mit Raspberry Pi Baker (Mac) veya Raspberry Pi Imager (Windows) auf SD-Karte kopieren;
Değişkenler oluşturun Abbrand_Status (Typ Karakter dizisi); Abbrand_Klappe_Ist (Typ Sayı); Abbrand_Klappe_Soll (Typ Sayı); ISD-ID der drei Variablen ermitteln und im Code unter VAR_STATUS, VAR_IST und VAR_SOLL eintragen (Ermitteln der ISE-ID -> „http://IP_RaspberrPi:8181/rega.exe?x=dom.GetObject(%22Variablen_Name%22).ID()“ – das Resultat findet sich in der vorletzten Ausgabe-Zeile, z.B. „<x>19827</x>“) - ESP32 Development Board (z.B. ESP32 DevKit V1) – ca. 12,- Euro
Arduino IDE 2.x Download (Mac) (Pencereler) - CL86Y Schrittmotortreiber (oder TB6600)*
- NEMA 17 Schrittmotor (200 Steps/Rev)* – Set ca. 80,- Euro
- Linearantrieb 100 mm, 150 mm passend für o.g. Schrittmotor-Typ ca. 50,- Euro
- 2x Endschalter (mechanisch) – ca. 4,- Euro
- Netzteil 48V DC (für Motor 12A) – ca. 39,- Euro
- Netzteil 5V DC (für ESP32, z.B. USB) – ca. 7,- Euro
- ELV PT1000 Hochtemperaturfühler 4-Leiter Art. Nr. 258570 – ca. 24,- Euro
- ELV Platin-Temperatursensor Interface – Art. Nr. 162126 – ca. 45,- Euro
- Messing-Rohrverschraubung M10 x 6 mm für den PT1000-Temperatursensor – ca. 4,- Euro
Für summa summarum ca. 370,- Euro ergibt sich eine vollwertige und zudem sehr preisgünstige Alternative zu einem, – falls für den Kaminofen überhaupt verfügbaren -, Nachrüstsatz, der i.d.R. zwischen 750 und 1.500 Euro liegt!
Hazırlıklar
Die Installation von RaspberryMatic auf die SD-Karte für den Raspberry Pi 4 B ist Burada ausführlich beschrieben, inklusive Gehäuseeinbau, wenn kein Kit erworben wurde.
ESP32 – Setup
macOS
Schritt 1: Arduino IDE installieren
- Download:
- Gehe zu: https://www.arduino.cc/en/software
- Download „Arduino IDE 2.x“ für macOS
- Wähle
.dmgfür Intel oder.dmgfür Apple Silicon (M1/M2/M3)
- Installation:
.dmgDatei öffnen- Arduino IDE in den Programme-Ordner ziehen
- Arduino IDE starten
ESP32 Board Support installieren
- Arduino IDE öffnen
- Board Manager öffnen:
- Menü:
Arduino IDE→Ayarlar(oderCmd + ,) - Unter „Additional boards manager URLs“ eintragen:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json- Tıklayınız
OK
- Menü:
- ESP32 Boards installieren:
- Klick auf Board-Icon links (oder in der Menüleiste
Tools→Board→Boards Manager) - Suche nach:
esp32 - Installiere: „esp32 by Espressif Systems“ (Version 2.0.17 oder neuer)
- Warte bis Installation abgeschlossen (kann 5-10 Minuten dauern)
- Klick auf Board-Icon links (oder in der Menüleiste
USB-Treiber (bis OS 10.14)
Falls ESP32 nicht erkannt wird:
- Download: https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers
- Datei:
macOS_VCP_Driver.zipherunterladen - Installieren und Mac neu starten
Für CH340 Chip:
- Download: https://github.com/adrianmihalko/ch340g-ch34g-ch34x-mac-os-x-driver
- Installieren und Mac neu starten
ESP32 anschließen
- ESP32 per USB verbinden
- Port prüfen:
- Arduino IDE Menüleiste:
Tools→Liman - Wähle Port ähnlich wie:
/dev/cu.usbserial-0001veya/dev/cu.SLAB_USBtoUARTveya/dev/cu.wchusbserial*
- Arduino IDE Menüleiste:
Board auswählen
- Arduino IDE:
- Menüleiste
Tools→Board→esp32→ „ESP32 Dev Module“
- Menüleiste
- Einstellungen:
- Upload Speed: 115200
- Flash Frequency: 80MHz
- Flash Mode: QIO
- Flash Size: 4MB (32Mb)
- Partition Scheme: Default 4MB with spiffs
Test-Upload
- Beispiel-Code öffnen:
- Menüleiste
File→Examples→01.Basics→Blink
- Menüleiste
- Code hochladen:
- Klick auf Upload-Button (→)
- Warte bis „Connecting…“ erscheint
- Falls „Connecting…“ hängt: BOOT-Taste am ESP32 gedrückt halten
- Erfolg:
- „Hard resetting via RTS pin…“ = Upload erfolgreich!
- LED am ESP32 sollte blinken
WINDOWS
Arduino IDE installieren
- Download:
- Gehe zu: https://www.arduino.cc/en/software
- Download „Arduino IDE 2.x“ für Windows
- Wähle
.exeInstaller
- Installation:
- Installer ausführen (als Administrator)
- Alle Optionen aktiviert lassen
- Installation abschließen
ESP32 Board Support installieren
- Arduino IDE öffnen
- Board Manager konfigurieren:
- Menüleiste
File→PreferencesUnter „Additional boards manager URLs“ eintragen:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json- Tıklayınız
OK
- Menüleiste
- ESP32 Boards installieren:
- Menüleiste
Tools→Board→Boards Manager - Suche:
esp32 - Installiere: „esp32 by Espressif Systems“ (Version 2.0.17+)
- Warte bis Installation fertig
- Menüleiste
USB-Treiber installieren
Windows erkennt ESP32 oft NICHT automatisch!
Für CP2102/CP2104 Chip (am häufigsten):
- Download:
- https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers
- Datei:
CP210x_Universal_Windows_Driver.zip
- Installation:
- ZIP entpacken
CP210xVCPInstaller_x64.exeals Administrator ausführen- Installation abschließen
- Windows neu starten
Für CH340/CH341 Chip:
- Download:
- Installation:
- ZIP entpacken
CH341SER.EXEals Administrator ausführen- Klick auf „INSTALL“
- Windows neu starten
Chip-Typ herausfinden:
- ESP32 anschließen
- Geräte-Manager öffnen:
Windows + X→Geräte-Manager - Anschlüsse (COM & LPT) aufklappen
- Suche nach:
- „Silicon Labs CP210x…“ = CP2102
- „USB-SERIAL CH340“ = CH340
- „SLAB_USBtoUART“ = CP2102
ESP32 anschließen & Port prüfen
- ESP32 per USB verbinden
- Port herausfinden:
- Menüleiste
Tools→Liman - Wähle: COM3, COM4, COM5 etc.
- (Zahl variiert je nach System)
- Menüleiste
Kein Port sichtbar? → Treiber nicht installiert oder falscher Treiber!
Board auswählen
- Board wählen:
MenüleisteTools→Board→esp32→ „ESP32 Dev Module“
- Upload-Einstellungen:
- Upload Speed: 115200
- Flash Frequency: 80MHz
- Flash Mode: QIO
- Flash Size: 4MB (32Mb)
- Partition Scheme: Default 4MB with spiffs
Test-Upload
- Beispiel laden:
- Menüleiste
File→Examples→01.Basics→Blink
- Menüleiste
- Hochladen:
- Upload-Button klicken (→)
- Bei „Connecting…“ evtl. BOOT-Taste am ESP32 halten
- Erfolg:
- „Hard resetting…“ = ✅ Upload erfolgreich!
Bibliotheken für Abbrandsteuerung
Automatisch dabei (ESP32 Core):
- WiFi.h
- HTTPClient.h
- WebServer.h
- Preferences.h
- esp_task_wdt.h
Sorun Giderme
Problem: „Port nicht gefunden“
Mac:
# Terminal öffnen und prüfen:
ls /dev/cu.*
# Sollte zeigen:
/dev/cu.usbserial-XXXX
/dev/cu.SLAB_USBtoUART
Windows:
- Geräte-Manager öffnen
- Anschlüsse (COM & LPT) prüfen
- Treiber neu installieren
- Windows neu starten
„Connecting…“ hängt
Lösung:
- BOOT-Taste am ESP32 gedrückt halten
- Dann Upload-Button klicken
- BOOT-Taste halten bis „Writing…“ erscheint
- Taste loslassen
Alternative:
- EN-Taste kurz drücken (Reset)
- Dann Upload erneut versuchen
„Compilation error“
Häufige Ursachen:
- Falsches Board gewählt
- ESP32 Board Support nicht installiert
- Syntaxfehler im Code
Lösung:
- Board nochmal prüfen:
ESP32 Dev Module - Board Manager öffnen → esp32 neu installieren
Upload funktioniert, aber Serial Monitor leer
Lösung:
- Baudrate prüfen:
- Kod:
Serial.begin(115200); - Serial Monitor: Auch 115200 einstellen
- Kod:
- Port prüfen:
- Richtiger COM-Port ausgewählt?
- EN-Taste drücken:
- Reset nach Upload
Checkliste vor dem ersten Upload
- [ ] Arduino IDE installiert
- [ ] ESP32 Board Support installiert (Version 2.0.17+)
- [ ] USB-Treiber installiert (Windows!)
- [ ] ESP32 per USB verbunden
- [ ] Port in Arduino IDE sichtbar
- [ ] Board: „ESP32 Dev Module“ ausgewählt
- [ ] Upload Speed: 115200
- [ ] Flash Size: 4MB
- [ ] Serial Monitor Baudrate: 115200
- [ ] Router NTP-Freigabe
NTP-Freigabe
Manche Router sind standardmäßig ohne NTP-Freigabe konfiguriert, was dazu führt, dass Anfragen über NTP Port 123 nicht weitergeleitet werden, mit der Folge, dass keine Daten vom angesprochenen NTP-Server angefordert werden können.
Deshalb muss eine entsprechende Regel definiert werden:

Lernressourcen
Offizielle Dokumentation:
- ESP32 Arduino: https://docs.espressif.com/projects/arduino-esp32/
- Arduino Referenz: https://www.arduino.cc/reference/en/
Code hochladen
- Datei öffnen:
- Den Textinhalt dieser Datei in das leere(!) Arduino IDE-Fenster kopieren
- WiFi anpassen:
const char* WIFI_SSID = "DEIN_WIFI"; const char* WIFI_PASSWORD = "DEIN_PASSWORT"; - XML-API Token eintragen:
const char* XML_API_TOKEN = "DEIN_TOKEN_HIER";
In RaspberryMatic muss das Addon XML-API installiert werden. Danach kann in den Einstellungen des XML-API-Addons mit Klick auf tokenregister.cgi ein Token erzeugt werden. Der Token ist für alle künftigen GUI-Anmeldungen gültig und besteht aus einer 16-stelligen Folge von Groß- und Kleinbuchstaben. Er ist im ESP32-Code an der entsprechenden Stelle einzufügen. - Upload:
- Verify (✓) → Code prüfen
- Upload (→) → Auf ESP32 laden
- Serial Monitor öffnen:
Tools→Serial Monitor- Baudrate: 115200 (wird unter dem Menü TOOLS – Upload Speed: …. eingestellt)
- Beobachte Ausgabe!
Devreye alma
Nach erfolgreichem Setup:
- WiFi-Verbindung testen
- Abbrandsteuerungs-Code hochladen
- Motor & Endschalter anschließen
- RaspberryMatic Token generieren
- System testen
ESP32 Code
Der erforderliche Code ist vollständig kommentiert und damit nachvollzieh- und ggf. anpassbar. (İndir)
ESP32 GUI
In der GUI kann zu Testzwecken der Ermittlung der Abhängigkeit von Abgas-Temperatur zu Klappen-Öffnung diese manuell stufenlos eingestellt werden.
Man beobachtet das Flammenbild und justiert zum jeweiligen Zeitpunkt den visuell „passenden“ Prozentwert der Klappenöffnung. Der aus RaspberryMatic zu dem Zeitpunkt abgelesene Temperaturwert wird als Startwert der Änderung dem eingestellten Prozentwert der Klappenöffnung zugeordnet. Der bis-Temperaturwert ergibt sich mit der nächsten visuell „nötigen“ Korrektur der Klappenöffnung.
Wurden also z.B. 150°C als Startpunkt (von …) zur Öffnung auf 80% erkannt und 200°C als Wert zur Reduktion auf 45%, dann ergibt sich die unter der ersten SONST WENN Funktion gezeigte Konstellation im Programm „Abbrandsteuerung – Temperatur-Regelung“ wie abgebildet.

„Testmodus“ wird angezeigt, wenn noch keine Peripherie an den ESP32 angeschlossen wurde und die Variable "const bool TEST_MODE =" noch auf „true“ steht.
Änderung auf „Yanlış“ hebt den Testmodus auf und initialisiert die Referenzfahrt des angeschlossenen Motors zur Bestimmung der durch die Endschalter definierten Start- und Ende-Positionen.
Live-Logging

Diagnostics

Fehler-Behandlung automatisiert
Für einen kontinuierlich einwandfrei laufenden Betrieb ist das Abfangen möglicher Fehlerzustände elementar. Daher ist der Code mit folgenden Routinen versehen, um Fehler zu erkennen und durch geeignete Maßnahmen zu beheben:
- Behandlung von Stack Overflow
- Brownout Detection
- Division durch NULL
- Endschalter-Notabschaltung
- HTTP Error Handling
- HTTP Exception Handling
- Integer-Overflow Prüfung
- Memory Monitoring
- millis() Overflow
- Motor-Alarm Detection
- Preferences Recovery
- Position-Constraints
- Schutz vor sehr langen Blocking Operations
- Telnet Client Management
- Telnet NULL-Pointer
- Thread-Safety
- Token-Validierung
- Watchdog Timer
- WiFi Auto-Reconnect
RaspberryMatic – Programme
Abbrandsteuerung
Program
WENN Systemzustand Abbrand_Klappe_Soll im Wertebereich von 0 und kleiner 101 (Prozent)
DANN SKRIPT … SOFORT
! ESP32 IP-Adresse (HIER ANPASSEN!)
string esp32_ip = "IP_Adresse_ESP32_eingeben";
! Hole aktuellen Wert der Systemvariable
var sollwert = dom.GetObject("Abbrand_Klappe_Soll").Value();
! Baue URL für ESP32 Callback
string url = "http://" # esp32_ip # "/setSoll?value=" # sollwert;
! Rufe ESP32 auf
string cmd = "wget -q -O /dev/null '" # url # "'";
system.Exec(cmd);
! Log-Ausgabe (optional, für Debugging)
WriteLine("Abbrand: Sende " # sollwert # "% an ESP32 " # esp32_ip);
Abbrandsteuerung – Temperatur-Regelung
Program
WENN Geräteauswahl "PT1000_Temperatursensor_Abgas" BEI IST-Temperatur von ... bis ...
DANN Systemzustand Abbrand_Klappe_Soll SOFORT xxx*
SONST WENN ...
hier werden die oberen zwei Zeilen mit jeweils anderen Temperaturbereichen und Prozentwerten fortlaufend durch je eine SONST WENN Funktion ergänzt, bis alle erforderlichen Bereiche abgedeckt sind.
* „xxx“ ist der gewünschte Prozentwert der Klappenöffnung.

Linearantrieb & Endschalter-Montage
Je nach Platzverhältnissen unterhalb der Klappenmechanik montiert man den mit dem Motor ausgestatteten Linearantrieb darunter. Auf den durch die Spindel vor- oder zurückbewegten Schlitten wird eine „Gabel“ befestigt, in welche die manuell zu bedienende Mechanik eingreift.
Meist ist der „Hebel“ so ausgelegt, dass man ihn etwas auf und ab bewegen kann. Entsprechend richtet man die Länge der „Gabelzinken“ so aus, dass man den Hebel noch manuell aus dieser heraus bewegen und gänzlich auf AUF schieben kann.
Dies dient dazu, einerseits beim Nachlegen von Brennmaterial einen maximalen Zug zu erzeugen, sollte die elektronische Steuerung noch nicht ganz auf 100% geregelt sein.
Andererseits hat man sich damit, z.B. bei Ausfall der Spannungsversorgung, die rein mechanische Bedienoption nach wie vor offengehalten.