Table des matières
Mis à jour - février 3, 2026
Un poêle-cheminée moderne dispose généralement d'une commande de combustion intégrée. Ceux qui ont encore un poêle-cheminée sans ce système automatique peuvent construire eux-mêmes la commande en combinaison avec Smarthome (Raspberry Pi).
S'il n'existe pas encore de possibilité d'automatiser le chargement du bois, à l'exception des poêles à pellets, l'automatisation permet d'obtenir une combustion plus régulière, des températures constantes et une consommation de bois plus faible, jusqu'à 30 %, avec un meilleur rendement.
Pour ceux qui n'osent pas se lancer, sachez que c'est ce qui m'est arrivé. Mais si l'on se penche un peu plus sur le sujet et sur les possibilités offertes par RaspberryMatic sur un Raspberry Pi, on n'est pas loin de penser que l'on va „y arriver“ !
Et comme souvent dans la vie : ensemble, c'est mieux ! Faisons-le !
Théorie
Ce que nous voyons à l'œil nu à l'image et à la couleur de la flamme est ici pris en charge par un capteur haute température vissé dans le tuyau d'échappement à environ 20 cm au-dessus de la chambre de combustion.
En fonction de la température à maintenir (environ 200 °C), un programme simple sur le Raspberry Pi permet d'ouvrir et de fermer le clapet d'arrivée d'air, ce que l'on faisait jusqu'à présent manuellement, si l'on regardait justement le four ...
Il s'agit donc en principe d'un mécanisme simple. Le mécanisme, au sens propre du terme, est ici réalisé par un entraînement linéaire déplacé par un moteur pas à pas. En fonction de la valeur réelle de la température comparée à la valeur de consigne, le moteur pas à pas reçoit l'information de savoir s'il doit augmenter ou diminuer l'air entrant lorsque la température est trop basse. En conséquence, le levier de commande (manuel) du clapet d'arrivée d'air, couplé mécaniquement au chariot linéaire, est déplacé vers l'avant ou vers l'arrière, le clapet est ouvert ou fermé.
Comme RaspberryMatic n'offre pas la possibilité d'adresser directement un moteur pas à pas, nous nous aidons d'un ESP32-IDF, un petit ordinateur qui offre la possibilité de connecter un contrôleur de moteur pas à pas et de prendre ainsi le contrôle de ce dernier.
La communication entre le RaspberryMatic et l'ESP32-IDF se fait via WLAN, qui est déjà intégré sur l'ESP32-IDF. La programmation de l'ESP32-IDF se fait en C++, Arduino IDE et est incluse dans cet article pour une reprise facile, après modification de quelques paramètres.
Le programme de saisie de la température et du positionnement du moteur linéaire pas à pas est également mis à disposition pour une reprise facile.
Liste de courses
- Raspberry Pi 4 modèle B Kit avec boîtier, ventilateur, bloc d'alimentation - env. 95 euros
- Carte SD 16 Go (pour l'installation RaspberryMatic) - environ 10,- euros
- FramboiseMatic (Télécharger) - gratuit
(avec Raspberry Pi Baker (Mac) ou Imager Raspberry Pi (Windows) copier sur une carte SD ;
Créer des variables État_de_combustion (type Chaîne); Abat-jour_réel (type Nombre); Abattement_comme_consigne (type Nombre); 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 Résultat se trouve sur l'avant-dernière ligne de sortie, par exemple „".19827“) - Carte de développement ESP32 (par ex. ESP32 DevKit V1) - environ 12,- euros
Télécharger Arduino IDE 2.x (Mac) (les fenêtres) - Pilote de moteur pas à pas CL86Y (ou TB6600)*
- Moteur pas à pas NEMA 17 (200 steps/rév)* - Set environ 80,- Euro
- Actionneur linéaire 100 mm, 150 mm adapté au type de moteur pas à pas susmentionné env. 50,- Euro
- 2x interrupteurs de fin de course (mécanique) - environ 4,- euros
- Bloc d'alimentation 48V DC (pour moteur 12A) - environ 39,- Euro
- Adaptateur secteur 5V DC (pour ESP32, par ex. USB) - environ 7,- euros
- Sonde haute température ELV PT1000 4 fils Art. N° 258570 - environ 24,- Euro
- ELV Sonde de température en platine Interface - Art. N° 162126 - environ 45,- euros
- Raccord de tube en laiton M10 x 6 mm pour le capteur de température PT1000 - environ 4,- euros
Pour un total d'environ 370 euros, il s'agit d'une alternative complète et très avantageuse à un kit d'équipement ultérieur - si tant est qu'il soit disponible pour le poêle - qui coûte en général entre 750 et 1 500 euros !
Préparations
L'installation de RaspberryMatic sur la carte SD pour le Raspberry Pi 4 B est ici décrit en détail, y compris l'installation du boîtier si aucun kit n'a été acheté.
ESP32 - Configuration
macOS
Étape 1 : installer l'IDE Arduino
- Télécharger :
- Aller à : https://www.arduino.cc/en/software
- Télécharger „Arduino IDE 2.x“ pour macOS
- Choisis
.dmgpour Intel ou.dmgpour Apple Silicon (M1/M2/M3)
- installation :
.dmgOuvrir le fichier- Glisser l'IDE Arduino dans le dossier Programmes
- Démarrer l'IDE Arduino
Installer le support de la carte ESP32
- Ouvrir l'IDE Arduino
- Ouvrir le gestionnaire de conseil d'administration :
- Menu :
Arduino IDE→Paramètres(ouCmd + ,) - Inscrire sous „Additional boards manager URLs“ :
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json- Cliquez sur
OK
- Menu :
- Installer les cartes ESP32 :
- Clique sur l'icône du tableau à gauche (ou dans la Barre de menu
Outils→Conseil d'administration→Directeur des conseils) - Recherche
esp32 - Installe : „esp32 by Espressif Systems“ (version 2.0.17 ou plus récente)
- Attendre la fin de l'installation (peut prendre 5-10 minutes)
- Clique sur l'icône du tableau à gauche (ou dans la Barre de menu
Pilote USB (jusqu'à OS 10.14)
Si ESP32 n'est pas détecté
- Télécharger : https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers
- fichier :
macOS_VCP_Driver.ziptélécharger - Installer et redémarrer le Mac
Pour puce CH340 :
- Télécharger : https://github.com/adrianmihalko/ch340g-ch34g-ch34x-mac-os-x-driver
- Installer et redémarrer le Mac
Connecter l'ESP32
- Connecter l'ESP32 par USB
- Vérifier le port :
- Arduino IDE Barre de menu:
Outils→port - Choisir un port similaire à :
/dev/cu.usbserial-0001ou/dev/cu.SLAB_USBtoUARTou/dev/cu.wchusbserial*
- Arduino IDE Barre de menu:
Sélectionner un conseil
- Arduino IDE :
- Barre de menu
Outils→Conseil d'administration→esp32→ „ESP32 Dev Module“
- Barre de menu
- Réglages :
- Vitesse de téléchargement : 115200
- Fréquence de flash : 80MHz
- Mode Flash : QIO
- Taille du flash : 4MB (32Mb)
- Schéma de partition : Par défaut 4MB avec spiffs
Téléchargement de test
- Ouvrir l'exemple de code :
- Barre de menu
Fichier→Exemples→01.Basics→Blink
- Barre de menu
- Télécharger le code :
- Cliquez sur le bouton de téléchargement (→)
- Attends que „Connecting...“ s'affiche
- Si „Connecting...“ se bloque : Maintenir la touche BOOT de l'ESP32 enfoncée
- Le succès :
- „Hard resetting via RTS pin...“ = téléchargement réussi !
- La LED de l'ESP32 doit clignoter
WINDOWS
Installer l'IDE Arduino
- Télécharger :
- Aller à : https://www.arduino.cc/en/software
- Télécharger „Arduino IDE 2.x“ pour Windows
- Choisis
.exeInstallateur
- installation :
- Exécuter l'installateur (en tant qu'administrateur)
- Laisser toutes les options activées
- Terminer l'installation
Installer le support de la carte ESP32
- Ouvrir l'IDE Arduino
- Configurer le Board Manager :
- Barre de menu
Fichier→PréférencesInscrire sous „Additional boards manager URLs“ :
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json- Cliquez sur
OK
- Barre de menu
- Installer les cartes ESP32 :
- Barre de menu
Outils→Conseil d'administration→Directeur des conseils - Recherche :
esp32 - Installe : „esp32 by Espressif Systems“ (version 2.0.17+)
- Attendre que l'installation soit terminée
- Barre de menu
Installer le pilote USB
Windows ne détecte souvent PAS automatiquement ESP32 !
Pour puce CP2102/CP2104 (la plus courante) :
- Télécharger :
- https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers
- fichier :
CP210x_Universal_Windows_Driver.zip
- installation :
- Décompresser le ZIP
CP210xVCPInstaller_x64.exeExécuter en tant qu'administrateur- Terminer l'installation
- Redémarrer Windows
Pour puce CH340/CH341 :
- Télécharger :
- installation :
- Décompresser le ZIP
CH341SER.EXEExécuter en tant qu'administrateur- Cliquez sur „INSTALL“.“
- Redémarrer Windows
Découvrir le type de puce :
- Connecter l'ESP32
- Ouvrir le gestionnaire de périphériques :
Windows + X→Gestionnaire de périphériques - Ports (COM & LPT) ouvrir
- Recherche
- „Silicon Labs CP210x...“ = CP2102
- „USB-SERIAL CH340“ = CH340
- „SLAB_USBtoUART“ = CP2102
Connecter ESP32 & vérifier le port
- Connecter l'ESP32 par USB
- Trouver le port :
- Barre de menu
Outils→port - Choisir : COM3, COM4, COM5 etc.
- (le nombre varie en fonction du système)
- Barre de menu
Pas de port visible ? → Pilote non installé ou pilote incorrect !
Sélectionner un conseil
- Choisir un conseil :
Barre de menusOutils→Conseil d'administration→esp32→ „ESP32 Dev Module“
- Paramètres de téléchargement :
- Vitesse de téléchargement : 115200
- Fréquence de flash : 80MHz
- Mode Flash : QIO
- Taille du flash : 4MB (32Mb)
- Schéma de partition : Par défaut 4MB avec spiffs
Téléchargement de test
- Charger un exemple :
- Barre de menu
Fichier→Exemples→01.Basics→Blink
- Barre de menu
- Télécharger :
- Cliquer sur le bouton de téléchargement (→)
- Pour „Connecting...“, éventuellement. Bouton BOOT tenir sur le ESP32
- Le succès :
- „Hard resetting...“ = ✅ Téléchargement réussi !
Bibliothèques pour le contrôle de la combustion
Automatiquement présent (ESP32 Core) :
- WiFi.h
- HTTPClient.h
- WebServer.h
- Preferences.h
- esp_task_wdt.h
Dépannage
Problème : „Port non trouvé“
Mac :
# Ouvrir le terminal et vérifier :
ls /dev/cu.*
# Devrait afficher :
/dev/cu.usbserial-XXXX
/dev/cu.SLAB_USBtoUART
Windows :
- Ouvrir le gestionnaire de périphériques
- Vérifier les connexions (COM & LPT)
- Réinstaller le pilote
- Redémarrer Windows
„Connecting...“ est suspendu
Solution :
- Bouton BOOT maintenir enfoncé sur l'ESP32
- Puis cliquer sur le bouton Upload
- Maintenir la touche BOOT enfoncée jusqu'à ce que „Writing...“ s'affiche
- Relâcher le bouton
Alternative :
- appuyer brièvement sur la touche EN (réinitialisation)
- Puis réessayer le téléchargement
„Erreur de compilation“
Causes fréquentes :
- Mauvais conseil choisi
- Support de la carte ESP32 non installé
- Erreur de syntaxe dans le code
Solution :
- Vérifier à nouveau la carte :
Module ESP32 Dev - Ouvrir le Board Manager → réinstaller esp32
Le téléchargement fonctionne, mais le moniteur série est vide
Solution :
- Vérifier la vitesse de transmission :
- Code :
Serial.begin(115200) ; - Serial Monitor : Aussi 115200 régler
- Code :
- Vérifier le port :
- Le port COM correct est-il sélectionné ?
- Appuyer sur la touche EN :
- Réinitialisation après le téléchargement
Liste de contrôle avant le premier téléchargement
- [ ] Arduino IDE installé
- [ ] Support de la carte ESP32 installé (version 2.0.17+)
- [ ] Pilote USB installé (Windows !)
- [ ] ESP32 connecté par USB
- [ ] Port visible dans l'IDE Arduino
- [ ] Carte : „ESP32 Dev Module“ sélectionné
- [ ] Vitesse de téléchargement : 115200
- [ ] Taille de la mémoire flash : 4MB
- [ ] Vitesse de transmission du moniteur série : 115200
- [ ] Routeur Partage NTP
Validation NTP
Certains routeurs sont configurés par défaut sans partage NTP, ce qui a pour conséquence que les demandes via le port NTP 123 ne sont pas transmises, avec pour conséquence qu'aucune donnée ne peut être demandée au serveur NTP contacté.
Il est donc nécessaire de définir une règle appropriée :

Ressources d'apprentissage
Documentation officielle :
- ESP32 Arduino : https://docs.espressif.com/projects/arduino-esp32/
- Référence Arduino : https://www.arduino.cc/reference/en/
Télécharger le code
- Ouvrir le fichier :
- Le site Contenu textuel de ce fichier copier dans la fenêtre vide ( !) de l'IDE Arduino
- Personnaliser le WiFi :
const char* WIFI_SSID = "VOTRE_WIFI" ; const char* WIFI_PASSWORD = "VOTRE_MOT DE PASSE" ; - Saisir le jeton API XML :
const char* XML_API_TOKEN = "TON_TOKEN_HIER" ;
L'addon XML-API doit être installé dans RaspberryMatic. Ensuite, dans les paramètres de l'addon XML-API, on peut cliquer sur tokenregister.cgi un jeton doit être créé. Le token est valable pour toutes les connexions GUI futures et se compose d'une suite de 16 caractères en majuscules et en minuscules. Il doit être inséré à l'endroit correspondant dans le code ESP32. - Téléchargement :
- Verify (✓) → Vérifier le code
- Upload (→) → Charger sur ESP32
- Ouvrir le moniteur série :
Outils→Moniteur de série- Vitesse de transmission : 115200 (se trouve sous le menu TOOLS - Vitesse de téléchargement : .... réglé)
- Observe l'édition !
Mise en service
Après une installation réussie :
- Tester la connexion WiFi
- Télécharger le code de contrôle de la combustion
- Raccorder le moteur & l'interrupteur de fin de course
- Générer un jeton RaspberryMatic
- Tester le système
Code ESP32
Le code nécessaire est entièrement commenté, ce qui permet de le comprendre et de l'adapter le cas échéant. (Télécharger)
ESP32 GUI
Dans l'interface utilisateur graphique, il est possible de régler manuellement et en continu la température des gaz d'échappement en fonction de l'ouverture des clapets, à des fins de test.
On observe l'image de la flamme et on ajuste à chaque instant le pourcentage d'ouverture du clapet qui est visuellement „approprié“. La valeur de température lue sur le RaspberryMatic à ce moment-là est attribuée comme valeur de départ de la modification au pourcentage d'ouverture du clapet réglé. La valeur de température jusqu'à est obtenue avec la prochaine correction visuelle „nécessaire“ de l'ouverture du clapet.
Si, par exemple, 150°C ont été reconnus comme point de départ (de ...) pour l'ouverture à 80% et 200°C comme valeur pour la réduction à 45%, on obtient alors la constellation montrée sous la première fonction SINON dans le programme „Contrôle de la combustion - Régulation de la température“ comme illustré.

„Mode test“ est affiché lorsqu'aucun périphérique n'a encore été connecté à l'ESP32 et que la variable "const bool TEST_MODE =" ni sur „true“.
Modification sur „faux.faux“annule le mode test et initialise la course de référence du moteur raccordé pour déterminer les positions de départ et de fin définies par les interrupteurs de fin de course.
Enregistrement en direct

Diagnostics

Traitement automatisé des erreurs
L'interception d'éventuels états d'erreur est élémentaire pour un fonctionnement irréprochable en continu. C'est pourquoi le code est doté des routines suivantes afin de détecter les erreurs et d'y remédier par des mesures appropriées :
- Traitement du débordement de la pile
- Détection de brownout
- Division par NULL
- Arrêt d'urgence par interrupteur de fin de course
- Gestion des erreurs HTTP
- Gestion des exceptions HTTP
- Contrôle de débordement d'entiers
- Surveillance de la mémoire
- millis() Débordement
- Détection d'alarme moteur
- Récupération des préférences
- Contraintes de position
- Protection contre les opérations de blocage très longues
- Gestion des clients Telnet
- Pointeur NULL Telnet
- Thread-Safety
- Validation du jeton
- Minuteur de chien de garde
- WiFi auto-reconnexion
RaspberryMatic - Programmes
Contrôle de la combustion
programme
SI l'état du système Abbrand_Valve_Soll est compris dans la plage de valeurs 0 et inférieure à 101 (pourcentage)
PUIS SCRIPT ... IMMÉDIATEMENT
! Adresse IP ESP32 (AJOUTER ICI !)
string esp32_ip = "Saisir_adresse_IP_ESP32" ;
! Obtenir la valeur actuelle de la variable système
var valeur_doit = dom.GetObject("Abbrand_Valve_Soll").Value() ;
! Construire une URL pour le callback ESP32
string url = "http://" # esp32_ip # "/setSoll?value=" # valeur de consigne ;
! Appeler ESP32
string cmd = "wget -q -O /dev/null '" # url # "'" ;
system.Exec(cmd) ;
! Sortie du journal (facultatif, pour le débogage)
WriteLine("Échauffement : envoyer " # valeur de consigne # "% à ESP32 " # esp32_ip) ;
Contrôle de la combustion - Régulation de la température
programme
SI sélection de l'appareil "PT1000_Sonde_de_température_gaz_d'échappement" SI température réelle de ... à ...
ALORS état du système Consigne_Combustion_Valve IMMÉDIATEMENT xxx*
SINON SI ...
ici, les deux lignes supérieures avec respectivement d'autres plages de température et pourcentages sont complétées en continu par une fonction SINON jusqu'à ce que toutes les plages nécessaires soient couvertes.
* „xxx“ est le pourcentage d'ouverture du volet souhaité.

Actionneur linéaire & montage des interrupteurs de fin de course
En fonction de l'espace disponible sous le mécanisme du volet, on monte l'entraînement linéaire équipé du moteur en dessous. Sur le chariot avancé ou reculé par la broche, on fixe une „fourche“ dans laquelle s'engage le mécanisme à actionner manuellement.
La plupart du temps, le „levier“ est conçu de manière à pouvoir être déplacé légèrement vers le haut et vers le bas. En conséquence, la longueur des „fourches“ est ajustée de manière à ce que le levier puisse encore être déplacé manuellement hors de celle-ci et poussé entièrement vers l'OUVERT.
Cela sert d'une part à générer un tirage maximal lors de l'ajout de combustible, si la commande électronique n'est pas encore entièrement réglée sur 100%.
D'autre part, cela permet de conserver l'option de commande purement mécanique, par exemple en cas de panne de l'alimentation électrique.