Salut à tous c’est Ludo ! Ahhh la grande question du chauffage et de la domotique, généralement c’est un domaine que l’on souhaite tous domotiser un minimum, mais il y a tellement de manière de faire. Surtout que selon le système de chauffage, certaines méthodes peuvent être pénalisantes plutôt que d’apporter un gain. Je vais donc vous montrer comment j’ai domotisé ma chaudière De Dietrich à condensation. Et surtout on verra, pourquoi malgré que je n’avais pas anticipé la chose à la construction je me retrouve « par chance » avec la meilleure gestion que j’aurai pu jamais imaginer.

Alors voyons voir comment j’ai fait pour éviter que mes hivers ressemblent à cela et que je puisse bénéficier d’interaction chauffage <-> domotique :

Chaudière De Dietrich

Ma chaudière De Dietrich à condensation

Alors il faut savoir que pendant la construction de la maison je ne me suis pas soucié de la domotisation de la chaudière. J’étais parti du principe que je mettrai un Thermostat Connecté.

Grosse erreur dans mon cas (mais heureusement dans mon malheur j’ai eu de la chance)

La chaudière installée par mon plombier

Sans réelles contraintes imposées à mon plombier, il a installé une chaudière De Dietrich à condensation. Il s’agit d’une chaudière Innovens avec un système de gestion Diematic :

Chaudière De Dietrich

Elle fonctionne en combiné avec le thermostat suivant (d’origine De Dietrich)

Chaudière De Dietrich

Elle alimente un réseau de chauffage au sol de 9 zones

Chaudière De Dietrich

Voilà donc pour mon installation de chauffage.

Petit Topo sur les chaudières de dernière génération

Alors ici on va aborder un point relativement important. C’est la régulation de flamme. En effet les dernières générations de chaudière à condensation fonctionnent en régulation de flamme. Je vous explique :

Chaudière classique :
  • Si elle a besoin de chauffer elle s’allume
  • Si elle n’a plus besoin de chauffer elle s’éteint

C’est complètement binaire, après selon l’algorithme utilisé par le thermostat elle peut faire ceci soit via Hystérésis soit via PID (je ne vais pas parler de ceci ici mais il y aura sûrement un article dédié prochainement)

Chaudière à condensation dernière génération :
  • Elle calcule la température de l’eau qui doit circuler en fonction de la température de consigne de l’inertie et de la température extérieure
  • Elle régule la flamme (comme quand vous diminuez ou augmentez votre gazinière) pour obtenir un résultat efficace en consommant le moins d’énergie possible

Ici la chaudière chauffe le circuit de manière complètement régulée, la flamme pouvant très bien être à 5% comme à 95%.

La problématique des thermostats connectés

Je possédais dans l’appartement un thermostat Netatmo.

Chaudière De Dietrich

Alors c’est un très bon thermostat. Mais sur une chaudière à condensation à régulation de flamme comme j’ai exposé au-dessus on perd complètement la régulation de flamme et donc 90% de l’économie et le confort de cette régulation de flamme. Et OHHH combien je voulais éviter ce désagrément.

Ensuite perdre les notions natives de la chaudière disponibles sur son Thermostat propriétaire était aussi quelque chose que je voulais éviter.

Chaudière De Dietrich

Honnêtement vous mettriez un moteur de Dacia si vous aviez cette voiture vous ?

Alors je me suis tourné vers le Nest V3. Chaudière De Dietrich

En effet celui là à la particularité d’être compatible OpenTherm. Ce dernier est un soit disant language universel de communication des systèmes de chauffage. Et vous savez quoi ma chaudière est compatible OpenTherm. Sauf que De Dietrich est malin très très malin.

LEUR OPENTHERM NE FAIT QUE ON OFF SUR MA CHAUDIERE (donc pas de régulation de flamme)

J’imagine bien le PDG De Dietrich qui a proposé cela afin je pense d’essayer de vendre leur solution connectée à $$$$$€.

PDG : « Oui donc je pense on va empêcher OpenTherm de fonctionner à 100% des capacités : allez on supprime la régulation et ça devient un contact sec »

Equipe : « Mais Monsieur ça serait vicieux de faire ça »

PDG : « Oui je sais !!! AHAHAHAHAHAHA »

Chaudière De Dietrich

La Cascade et le Modbus

Donc pendant quelques mois je me suis dit que je ne domotiserai pas la chaudière et la laisserai se gérer d’elle même. D’ailleurs le but de la domotiser n’était pas spécialement de la contrôler mais surtout de la monitorer.

Et là j’ai découvert quelque chose. Les chaudières De Dietrich peuvent être montées en cascade et ont donc deux ports Mini-Din permettant justement de raccorder des chaudières en cascade. Et il s’avère que la solution connectée De Dietrich se branche sur un de ces ports si on l’achète ($$$$$$$€).

Après plusieurs recherches j’ai découvert que le protocole utilisé par De Dietrich au travers de ces Dins était :

Chaudière De Dietrich

LE MODBUS !!!!!!!

– En même temps facile : c’est écrit dans le titre du paragraphe et dans le titre de l’article

Alors je ne vais pas m’étaler sur la définition du Modbus, j’y reviendrai dans un prochain article. Mais en résumé le Modbus permet de lire des adresses ou d’écrire dans des adresses. Et selon la table d’adressage du device on obtient plusieurs informations, voir on contrôle plusieurs choses. Il faut voir ça comme un gigantesque tableau où on vient lire ou écrire à des endroits précis. Il s’avère qu’en fouinant sur le net on trouve la table d’adressage De Dietrich. Et je dois vous dire que c’est hallucinant. Il y a tout :

  • les températures
  • les modes
  • les pressions de circuits
  • le taux d’ionisation
  • le pourcentage d’activité de la flamme
  • etccc

Ce sont plus de 150 paramètres qui permettent d’agir ou de monitorer la chaudière. Je me suis dit si j’arrive à en faire quelquechose : « J’ai hâte de voir la tête du mec de l’entretien quand je vais lui dire : dites moi le 12 mars pendant 2h il y a eu un taux d’ionisation relativement bas et lui montrer la courbe »

Chaudière De Dietrich

Bref je commençais à retoucher du bout des doigts la possibilité de domotiser la chaudière et d’aller même plus loin que j’aurai jamais pu espérer.

Branchement de la Chaudière De Dietrich

Alors pour commencer il me fallait deux petites choses :

Chaudière De Dietrich

Chaudière De Dietrich

Je tiens à remercier au passage Alois Mylard qui m’avait envoyé mon premier câble :

Chaudière De Dietrich

Celui-ci marchait parfaitement. Au bout de 6 mois il ne marchait plus bien (beaucoup de trames perdues). Du coup j’ai acheté le modèle que je vous ais mis en lien et je n’ai plus de soucis. Sûrement lié à ma longueur de câble vous comprendrez par la suite.

Il faut donc couper le câble mini-din pour pouvoir raccorder les brins nécessaires au convertisseur USB. Il est important de noter que les 3 fils importants sont ceux correspondant à :

  • la masse
  • au pico en haut à droite en regardant le din de face
  • au pico en bas à droite en regardant le din de face

Le tout se branche sur le convertisseur sur les fiches :

  • ground
  • tr+
  • tr-

Avant de partir plus loin j’ai voulu d’abord valider le fonctionnement et la réception de trames avec un ordinateur et le logiciel Modscan, il suffit de le paramétrer et d’essayer de lire une adresse. Voici les paramètres communs aux chaudières De Dietrich :

  • 10 pour le unit ID
  • une vitesse de 9600
  • aucune parité
  • une taille d’octets de 8
  • 1 bit de fin

Chaudière De Dietrich

Et YOUPIII CA MARCHE !!!

L’installation finale

Si vous avez lu mon article Teleinfo + Wiser + Baie + Jeedom, vous savez que j’ai une baie de brassage. Après avoir testé un moment avec un Pi à proximité de la chaudière je voulais gagner un élément et je voulais faire en sorte que la chaudière soit directement raccordée à mon serveur domotique.

Chaudière De Dietrich

Si je reprends mon plan de l’article Teleinfo + Wiser + Baie + Jeedom. En W on retrouve le cellier et en B la baie dans le garage. J’ai donc tiré un câble entre W et B via les combles et si vous lisez l’article téléinfo vous verrez que c’est pas le premier. J’ai donc tiré un câble réseau (pour utiliser seulement 3 brins, mais au moins j’ai d’autre brins disponibles si jamais).

Chaudière De Dietrich

Toujours les mêmes combles

  • Je raccorde donc 3 brins de mon RJ45 aux 3 bons fils du câble Din côté cellier.
  • Et je raccorde donc côté baie les mêmes 3 brins du RJ45 au convertisseur USB

Ce qui donne :

 

Chaudière De Dietrich

Côté Cellier (on voit le câble noir qui rentre dans la chaudière)

Chaudière De Dietrich

Côté Baie

Ma chaudière De Dietrich à condensation dans Jeedom

Alors dans Jeedom c’est simple, j’ai commencé à développer un plugin Modbus RTU. Je vous rassure il sera bien évidemment publié sur le market Jeedom et sûrement regroupé avec le plugin Modbus TCP.

Chaudière De Dietrich

Voici mon équipement dans Jeedom. Une belle chaudière De Dietrich.

Chaudière De Dietrich

Une fois dans l’équipement on retrouve toutes les configurations relatives à l’utilisation du Modbus. Je reviendrai sur l’ensemble de ces réglages lorsque je ferai un article après publication du plugin. L’idée du plugin est bien évidemment de gérer tout un tas de produit utilisant le Modbus. J’ai même prévu un mode esclave pour gérer un produit distant juste avec un raspberry Pi.

Chaudière De Dietrich

Dans l’onglet commandes j’ai créé l’ensemble des commandes pertinentes que je voulais contrôler ou remonter dans Jeedom. En effet comme je vous l’ai dit au dessus la table Modbus de cette chaudière De Dietrich est monumentale. En effet en plus des classiques températures, modes etcc…. on retrouve :

  • les pressions des circuits
  • la vitesse de la pompe
  • la température de départ et celle de retour
  • le taux d’ionisation
  • la durée de fonctionnement des brûleurs
  • etc….

C’est quasiment plus de 150 paramètres qui sont interfaçables en Modbus sur cette chaudière De Dietrich.

Résultat final

Chaudière De Dietrich

 

Voici donc ce que donne le widget (entièrement personnalisable : donc chacun peut faire ce qu’il veut), que j’ai dans Jeedom. Je précise que sur l’ensemble des quasi 150 paramètres, je n’affiche ici que ce que j’ai considéré comme intéressant et utile.

On retrouve sur la partie gauche :

  • La température de la sonde d’ambiance (le thermostat)
  • Celle de la sonde extérieure
  • La consigne Jour , réglable
  • Celle Nuit, réglable aussi
  • La température de départ du circuit
  • Celle de retour du circuit

Sur la partie droite :

  • La pression du circuit
  • La vitesse de la pompe de circulation
  • Une température calculée par la chaudière (celle permettant de réguler la flamme)
  • La puissance en cours : de 0 à 100% c’est la fameuse régulation de flamme
  • Et enfin le choix de modes et le mode actif

Conclusion

Au final après une période de déception car ne trouvant pas la solution ultime, je me retrouve avec une solution BIEN AU DELÀ de mes espérances. Je garde le fonctionnement natif de la chaudière, je peux contrôler ce que je veux et remonter toutes les infos que je veux. Un autre gros avantage de cette méthode est que je garde une parfaite synchronisation entre MA DOMOTIQUE, LA CHAUDIERE et LE THERMOSTAT. Si quelquechose se passe d’un côté c’est instantanément répercuté sur les 2 autres. Je peux donc changer ce que je veux où je veux et tout le monde est au courant. Et le fait d’avoir accès à toutes les possibilités natives de la chaudière sur la domotique est un réel plus ne serait ce que pour historiser les données pour la maintenance. Au quotidien ce que j’ai  montré sur le widget me suffit amplement cependant.

Je ne peux donc que recommander aux nouvelles constructions de partir là dessus et à ceux qui possèdent une chaudière De Dietrich ou supportant le Modbus de se pencher sur la question. On est en effet grâce au Modbus au sommet du contrôle de sa chaudière et c’est juste le pied.



Partager sur :

Infos de l'auteur

Je m’appelle Ludovic Sarakha j’ai 32 ans et je suis habitant de Clermont-Ferrand. Concernant les études il faut savoir que bien que j’ai travaillé dans l’informatique (SSII internationale) et maintenant dans la domotique, j’ai un doctorat de Chimie des matériaux. Je suis un autodidacte passioné d'informatique, de domotique et de tout ce qui tourne autour des objets connectés

240 commentaires

  1. Bonjour à tous,

    Comme toi j’ai galèré pour installer les dependances, j’ai installer la version dev de python et cela a fonctionné.
    De mon coté la commande get-pip.py ne fonctionne pas du tout.

    Maintenant c’est le demon qui ne marche pas, il me parle du module Parakito qu’il ne trouve pas , alors qu’il est bien installé
    As tu eu ce problème ?

  2. Bonjour à tous,

    Je tiens d’abord à remercier Ludovic pour tout ce beau travail.
    Je viens de charger le plugin et j’ai essayer toute la journée de hier d’installer les dépendances sans succès. Je pense avoir un problème avec ma version de Python 2.7

    Je n’arrive pas à actualiser Python

    J’ai essayé en SSH

    python get-pip.py –force-reinstall
    pip install –upgrade setuptools
    pip install –upgrade pip

    visiblement il a un problème de répertoire… Je suis malheureusement un peu perdu…

    root@jeedom:/home/jeedom# python get-pip.py –force-reinstall
    python: can’t open file ‘get-pip.py’: [Errno 2] No such file or directory

    root@jeedom:/home/jeedom# pip install –upgrade setuptools
    Invalid requirement: ‘–upgrade’
    Traceback (most recent call last):
    File « /usr/local/lib/python2.7/dist-packages/pip/_internal/req/constructors.py », line 253, in install_req_from_line
    req = Requirement(req)
    File « /usr/local/lib/python2.7/dist-packages/pip/_vendor/packaging/requirements.py », line 96, in __init__
    requirement_string[e.loc:e.loc + 8], e.msg
    InvalidRequirement: Parse error at « ‘\xe2\x80\x93upgra' »: Expected W:(abcd…)

    root@jeedom:/home/jeedom# pip install –upgrade pip
    Invalid requirement: ‘–upgrade’
    Traceback (most recent call last):
    File « /usr/local/lib/python2.7/dist-packages/pip/_internal/req/constructors.py », line 253, in install_req_from_line
    req = Requirement(req)
    File « /usr/local/lib/python2.7/dist-packages/pip/_vendor/packaging/requirements.py », line 96, in __init__
    requirement_string[e.loc:e.loc + 8], e.msg
    InvalidRequirement: Parse error at « ‘\xe2\x80\x93upgra' »: Expected W:(abcd…)

    Les logs

    ********************************************************
    * Installation des dépendances *
    ********************************************************
    Ign http://repo.jeedom.com ./ InRelease
    Ign http://repo.jeedom.com ./ Release.gpg
    Hit http://security.debian.org jessie/updates InRelease
    Ign http://http.us.debian.org jessie InRelease
    Ign http://repo.jeedom.com ./ Release
    Ign http://repo.jeedom.com ./ Sources/DiffIndex
    Ign http://repo.jeedom.com ./ Packages/DiffIndex
    Hit http://http.us.debian.org jessie Release.gpg
    Hit http://http.us.debian.org jessie Release
    Ign http://httpredir.debian.org jessie InRelease
    Hit http://httpredir.debian.org jessie-updates InRelease
    Hit http://httpredir.debian.org jessie Release.gpg
    Ign http://repo.jeedom.com ./ Translation-en
    Err http://repo.jeedom.com ./ Sources
    404 Not Found
    Err http://repo.jeedom.com ./ Packages
    404 Not Found
    Hit http://httpredir.debian.org jessie Release
    Hit https://deb.nodesource.com jessie InRelease
    Hit http://security.debian.org jessie/updates/main Sources
    Hit http://security.debian.org jessie/updates/main armhf Packages
    Hit http://security.debian.org jessie/updates/main Translation-en
    Hit http://http.us.debian.org jessie/non-free armhf Packages
    Hit http://http.us.debian.org jessie/non-free Translation-en
    Get:1 http://httpredir.debian.org jessie-updates/main Sources [17.2 kB]
    Get:2 http://httpredir.debian.org jessie-updates/main armhf Packages/DiffIndex [11.8 kB]
    Get:3 http://httpredir.debian.org jessie-updates/main Translation-en/DiffIndex [3688 B]
    Get:4 https://deb.nodesource.com jessie/main Sources [687 B]
    Get:5 https://deb.nodesource.com jessie/main armhf Packages [930 B]
    Get:6 https://deb.nodesource.com jessie/main Translation-en [162 B]
    Get:7 https://deb.nodesource.com jessie/main Translation-en [162 B]
    Get:8 https://deb.nodesource.com jessie/main Translation-en [162 B]
    Get:9 https://deb.nodesource.com jessie/main Translation-en [162 B]
    Get:10 https://deb.nodesource.com jessie/main Translation-en [162 B]
    Ign https://deb.nodesource.com jessie/main Translation-en
    Get:11 http://httpredir.debian.org jessie/main Sources [7063 kB]
    Get:12 http://httpredir.debian.org jessie/main armhf Packages [6675 kB]
    Get:13 http://httpredir.debian.org jessie/main Translation-en [4581 kB]
    Fetched 17.1 kB in 13min 45s (20 B/s)
    W: Failed to fetch http://repo.jeedom.com/depot/repo.jm0.eu/BSP:/IMX6/Debian_Jessie/./Sources 404 Not Found
    W: Failed to fetch http://repo.jeedom.com/depot/repo.jm0.eu/BSP:/IMX6/Debian_Jessie/./Packages 404 Not Found
    E: Some index files failed to download. They have been ignored, or old ones used instead.
    Reading package lists…
    Building dependency tree…
    Reading state information…
    libffi-dev is already the newest version.
    python-dev is already the newest version.
    python-pip is already the newest version.
    The following packages were automatically installed and are no longer required:
    python-ply python-pycparser
    Use ‘apt-get autoremove’ to remove them.
    0 upgraded, 0 newly installed, 0 to remove and 162 not upgraded.
    Reading package lists…
    Building dependency tree…
    Reading state information…
    python-serial is already the newest version.
    python-pyudev is already the newest version.
    python-requests is already the newest version.
    libudev-dev is already the newest version.
    The following packages were automatically installed and are no longer required:
    python-ply python-pycparser
    Use ‘apt-get autoremove’ to remove them.
    0 upgraded, 0 newly installed, 0 to remove and 162 not upgraded.
    Reading package lists…
    Building dependency tree…
    Reading state information…
    Package ‘python-cffi’ is not installed, so not removed
    The following packages were automatically installed and are no longer required:
    python-ply python-pycparser
    Use ‘apt-get autoremove’ to remove them.
    0 upgraded, 0 newly installed, 0 to remove and 162 not upgraded.
    Requirement already up-to-date: cffi in /usr/local/lib/python2.7/dist-packages (1.11.5)
    Requirement already satisfied, skipping upgrade: pycparser in /usr/local/lib/python2.7/dist-packages (from cffi) (2.14)
    Requirement already up-to-date: cryptography in /usr/local/lib/python2.7/dist-packages (2.3.1)
    Requirement already satisfied, skipping upgrade: idna>=2.1 in /usr/local/lib/python2.7/dist-packages (from cryptography) (2.1)
    Requirement already satisfied, skipping upgrade: asn1crypto>=0.21.0 in /usr/local/lib/python2.7/dist-packages (from cryptography) (0.24.0)
    Requirement already satisfied, skipping upgrade: six>=1.4.1 in /usr/local/lib/python2.7/dist-packages (from cryptography) (1.10.0)
    Requirement already satisfied, skipping upgrade: cffi!=1.11.3,>=1.7 in /usr/local/lib/python2.7/dist-packages (from cryptography) (1.11.5)
    Requirement already satisfied, skipping upgrade: enum34 in /usr/local/lib/python2.7/dist-packages (from cryptography) (1.1.6)
    Requirement already satisfied, skipping upgrade: ipaddress in /usr/local/lib/python2.7/dist-packages (from cryptography) (1.0.16)
    Requirement already satisfied, skipping upgrade: pycparser in /usr/local/lib/python2.7/dist-packages (from cffi!=1.11.3,>=1.7->cryptography) (2.14)
    Requirement already up-to-date: minimalmodbus in /usr/local/lib/python2.7/dist-packages (0.7)
    Requirement already satisfied, skipping upgrade: pyserial in /usr/lib/python2.7/dist-packages (from minimalmodbus) (2.6)
    Collecting paramiko
    Using cached https://files.pythonhosted.org/packages/cf/ae/94e70d49044ccc234bfdba20114fa947d7ba6eb68a2e452d89b920e62227/paramiko-2.4.2-py2.py3-none-any.whl
    Requirement already satisfied, skipping upgrade: pyasn1>=0.1.7 in /usr/local/lib/python2.7/dist-packages (from paramiko) (0.1.9)
    Collecting bcrypt>=3.1.3 (from paramiko)
    Requirement already satisfied, skipping upgrade: cryptography>=1.5 in /usr/local/lib/python2.7/dist-packages (from paramiko) (2.3.1)
    Collecting pynacl>=1.0.1 (from paramiko)
    Using cached https://files.pythonhosted.org/packages/61/ab/2ac6dea8489fa713e2b4c6c5b549cc962dd4a842b5998d9e80cf8440b7cd/PyNaCl-1.3.0.tar.gz
    Installing build dependencies: started
    Installing build dependencies: still running…
    Installing build dependencies: still running…
    Installing build dependencies: finished with status ‘done’
    Requirement already satisfied, skipping upgrade: six>=1.4.1 in /usr/local/lib/python2.7/dist-packages (from bcrypt>=3.1.3->paramiko) (1.10.0)
    Requirement already satisfied, skipping upgrade: cffi>=1.1 in /usr/local/lib/python2.7/dist-packages (from bcrypt>=3.1.3->paramiko) (1.11.5)
    Requirement already satisfied, skipping upgrade: idna>=2.1 in /usr/local/lib/python2.7/dist-packages (from cryptography>=1.5->paramiko) (2.1)
    Requirement already satisfied, skipping upgrade: asn1crypto>=0.21.0 in /usr/local/lib/python2.7/dist-packages (from cryptography>=1.5->paramiko) (0.24.0)
    Requirement already satisfied, skipping upgrade: enum34 in /usr/local/lib/python2.7/dist-packages (from cryptography>=1.5->paramiko) (1.1.6)
    Requirement already satisfied, skipping upgrade: ipaddress in /usr/local/lib/python2.7/dist-packages (from cryptography>=1.5->paramiko) (1.0.16)
    Requirement already satisfied, skipping upgrade: pycparser in /usr/local/lib/python2.7/dist-packages (from cffi>=1.1->bcrypt>=3.1.3->paramiko) (2.14)
    Building wheels for collected packages: pynacl
    Running setup.py bdist_wheel for pynacl: started
    Running setup.py bdist_wheel for pynacl: still running…
    Running setup.py bdist_wheel for pynacl: still running…
    Running setup.py bdist_wheel for pynacl: still running…
    Running setup.py bdist_wheel for pynacl: still running…
    Running setup.py bdist_wheel for pynacl: still running…
    Running setup.py bdist_wheel for pynacl: still running…
    Running setup.py bdist_wheel for pynacl: still running…
    Running setup.py bdist_wheel for pynacl: still running…
    Running setup.py bdist_wheel for pynacl: still running…
    Running setup.py bdist_wheel for pynacl: still running…
    Running setup.py bdist_wheel for pynacl: still running…
    Running setup.py bdist_wheel for pynacl: still running…
    Running setup.py bdist_wheel for pynacl: still running…
    Running setup.py bdist_wheel for pynacl: still running…

  3. Bonsoir,
    Eteint ton raspberry, au redemarrage fait un update, upgrade et recommence avec les quelques lignes qui ont été données, pour moi çà c’est bien installé.
    Par contre je n’ai pas encore de communications avec la chaiuière.

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.