Domotiser son poêle à granulés avec un ESP8266 et MQTT

Mon poêle à granulés Edilkamin Seven dispose d’un contact sec que je veux exploiter pour domotiser le poêle, de manière sécurisée. Voici comment j’ai procédé.

Concept

J’avais déjà branché un Netatmo en guise de thermostat sur le poêle, via le contact sec (une prise DB9 sur laquelle il faut mettre en contact 2 pins), pour pouvoir le démarrer et l’éteindre à distance via une programmation. Mais depuis l’installation en complément de notre pompe à chaleur air/air, gérer les 2 systèmes de chauffage via Netatmo était impossible. Il me fallait contrôler les deux systèmes et définir des règles précises de fonctionnement.

J’ai donc choisi, au départ, d’utiliser mon IPX800 et de tirer un câble via mes combles jusqu’au poêle à granulés. Mais après quelques jours d’essais, je me rend compte qu’il y a des perturbations autour du câble qui le font démarrer et s’arrêter n’importe quand … pas très pratique pour avoir un système fiable.

J’ai testé de passer le câble via mon sous sol jusqu’au poêle, mais sans succès aussi … toujours les mêmes perturbations.

En repensant au Netatmo, qui est sans fil, je me suis dit : pourquoi ne pas reproduire un système équivalent, sans fil. Et j’ai décidé d’utiliser un ESP8266 de marque Wemos, modèle D1 mini. Il se connecte en wifi au réseau de la maison, et permet de disposer de plusieurs GPIO digitaux (comme le nodemcu).

Je lui ai adjoints un relais piloté et 2 leds de contrôle : une pour l’alimentation, et 1 pour le statut du relais.

Relais utilisé

MQTT et sécurité

J’ai d’abord tenté de mettre sur l’ESP8266 un programme sous forme de serveur web, qui lorsqu’elle est appelée fait allumer ou éteindre un relais (source : https://pastebin.com/mjW9CZpr).

Problème : au bout d’un moment, le site devient inaccessible, on ne peut plus joindre le module, et le reboot de l’ESP8266 inévitable. Vous comprendrez aisément qu’au niveau fiabilité, on a connu mieux …

Oui, mais comment faire donc ? Ayant déjà pas mal travaillé sur MQTT, je me suis dit qu’il fallait que l’ESP8266 soit en attente d’une action, ce pour quoi il est censé marcher, et pas qu’il soit en train de fournir de l’info (comme la page web au dessus) et donc qu’il passe une partie de son temps à faire la page web et pas écouter ce qui arrive.

Et bingo, c’est beaucoup, beaucoup plus fiable !

Le programme est très simple : une fois connecté au wifi, il se connecte au broker MQTT et s’abonne au topic. Puis il tourne en boucle en attendant un évènement sur le topic. Si un 1 arrive, il active le relais et la LED de contrôle. Si un zéro arrive, il désactive le relais et la LED de contrôle.

Facile non ?

Le module dans sa boite
Le module fermé avec les leds de contrôle (jaune : alimentation, rouge : relais)

Gestion avec Jeedom

Grâce au plugin MQTT, il est facile de créer un MQTT avec 2 actions sur un topic concerné, qui sur On mettent le payload à 1 et sur Off mettent le payload à 0.

Configuration Jeedom

Sur chaque action, dans les paramètres supplémentaires, j’ai ajouté une action après exécution de la commande pour modifier une variable avec l’état du poêle.

Post commande

Enfin, dans un équipement virtuel, je récupère la variable pour l’afficher dans Jeedom.

Et donc, sur la page d’accueil, on retrouve un widget pour la partie MQTT On/Off et un widget avec le statut du pôele.

Code source

Voici le lien github du code utilisé : https://github.com/doddyfab/Arduino_PoeleMQTT

Conclusion

On voit qu’il est assez facile de domotiser un poêle sur contact sec. La limite de l’exercice est qu’on peut juste gérer le on/off, pas la puissance. Le modèle Edilkamin Seven ne permet pas plus. Nous allons changer prochainement notre poêle par un Edilkamin Cherie Up, qui disposera d’un contact sec et d’un modèle wifi de pilotage du poêle (puissance, ventilo, etc …). Aucune doc n’existe vraiment, je pense que des heures de reverse engineering sont à venir …

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.