Aller au contenu
Platypus

Easymatic-De Dietrich (City 1.24 BIC II)

Recommended Posts

Bonjour,

 

j'ouvre un fil suite à une sollicitation. Ce sujet est fortement lié à celui-ci

mais concerne une autre chaudière : City 1.24 BIC II.

Dans l'attente d'être sûr que cela concerne exactement le même protocole, je propose que les sujets seront distincts et seront regroupés sinon.

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Je copie ensuite le début de notre discussion:

Salut,

 

J'ai une chaudière De Dietrich (City 1.24 BIC II) qui semble compatible Easymatic (c'est ce que dit la doc), et je souhaiterais la domotiser un peu (surtout récupérer la pression d'eau car elle a tendance à baisser et je souhaiterais être alerté quand ça se produit).

Pour une raison que j'ignore, je n'arrive pas à répondre au sujet sur le forum (peut-être suis-je trop récemment inscrit).

 

Pourrais-tu me dire où tu en es ? Quel matériel est nécessaire à ton avis pour lire les informations le la chaudière (lecture seulement).

Est-ce qu'on peut réaliser une carte d'interface avec un Arduino (plus simple qu'un PCB dédié !)

 

Merci en tout cas pour toutes les infos que tu donnes !

 

A+

Guillaume

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour Gderou,

 

Plusieurs choses :

- Est-ce que tu sais si l'Easymatic n'est pas vendu avec une interface pour être connecté à ta chaudière ? Si c'est le cas, tu devras en acheter une avant de pouvoir espérer intercepteur les informations.

- Ton 1er but est d'avoir l'information sur la pression mais sais-tu si la chaudière a un capteur qui la mesure ? Si c'est le cas, est-ce cette information est envoyée à l'Easymatic ? Ou est-ce que ce n'est pas plutôt un message d'erreur qui pourrait être envoyé mais à ce moment là .... ce sera trop tard ?

 

Sinon, côté interface, je n'ai pas eu le temps de me poser dessus mais il faut faire attention au problèmes des masses, c'est un bus dit "différentiel". J'ai pour l'instant une interface faite maison avec sigrok dans le but de décoder les trames (cf. https://sigrok.org/wiki/Protocol_decoder:Easymatic)

Je pense qu'un arduino est envisageable (à vérifier par un électronicien, ou moi même quand je pourrai me poser) si l'alimentation de celui-ci est bien isolée. Cela se fait en passant par un transformateur (si je ne me trompe pas).

 

En espérant avoir répondu à tes questions, je t'adresse mes meilleurs vœux pour cette nouvelles année.

Partager ce message


Lien à poster
Partager sur d’autres sites

Je ne connais rien de l'Easymatic - et n'ai pas envie de l'acheter (ce n'est pas du jeu ;-) ). Je vais quand même me renseigner…

Pour l'info de pression, je ne sais absolument pas ce qui passe sur l'easymatic - Sur la chaudière, j'ai l'info de pression, et en cas de pression trop basse, elle passe en erreur - donc effectivement c'est de la pure spéculation à ce niveau.

 

Pour l'Arduino, je me disait qu'on pourrait l'alimenter directement depuis la chaudière (soit avec un pont diviseur de tension + filtre passe bas, soit avec un régulateur de tension type lm7805. Comme ça, ça règlerait le problème de la masse.

Je ne suis pas un expert en la matière, mais le projet est marrant.

 

Je vais contacter De Dietrich pour en savoir un peu plus sur les capacités de Easymatic pour ma chaudière.

 

Bonne année à toi aussi

 

G

Partager ce message


Lien à poster
Partager sur d’autres sites

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui - je n'ai pas d'oscillo - mais je pourrai voir cela facilement avec un arduino et un montage simple diviseur de tension pour la ramener dans [0,5V]

Partager ce message


Lien à poster
Partager sur d’autres sites

Alors, avec un montage très simple avec un arduino, j'ai récupéré qqch qui bouge (yeah !)

 

Je ne suis pas calé sur l'horloge de la chaudière (ni sur du 1200 baud), donc c'est approximatif, mais j'ai l'impression qu'on a bien des trames envoyées toutes les secondes (1 trame par seconde), qui sont répétées (donc une première trame, puis la même 1 sec plus tard, puis une nouvelle trame également répétée). Est-ce que ça te dit qqch ?

J'ai eu de la chance car par défaut, l'arduino samplait à peu près à 1200 hz, donc pas trop mal.

 

Tout ça est fait en copiant la sortie série dans excel... Je vais essayer de me renseigner sur comment je peux lire les données binaires de façon fiable...

Partager ce message


Lien à poster
Partager sur d’autres sites

Voici en binaire les trames - il y a qqs décalages de bits car je ne suis pas très sûr de mon horloge, mais on voit bien les paires de trames.

J'ai 7 trames différentes qui sont émises en boucle. Reste à savoir ce que ça signifie... Je ne suis pas sûr non plus d'avoir capturé suffisamment de bits par trame, mais on n'en est pas encore là.

Encore une fois, 1 trame / seconde environ (je déclenche l'enregistrement sur un bit à 1)

 

1100110000111111110000011111111111111111111100011111111111111111111000111111111111111111110001111111111111111111110011111111111
1100110000111111110000011111111111111111111000111111111111111111111001111111111111111111110001111111111111111111100011111111111

 

........

Partager ce message


Lien à poster
Partager sur d’autres sites

J'avance - j'ai fait un vrai décodeur série, donc plus (ou moins) de pb de clock:

 

Voici une capture des trames - toujours des paires, on voit bien la séquence 1 3 5 7 9 11 13 des trames impaires (donc du boiler). Je ne vérifie pas la parité, et ai donc qqs rares erreurs.

Reste à savoir ce que ça signifie, mais tout cela sent bon.

 

11 8 0 0 0 0
11 8 0 0 0 0
13 0 0 0 0 0
13 0 0 0 0 0
1 64 2 11 1 37
1 64 2 11 1 37
3 254 1 255 255 255
3 255 1 255 255 255
5 2 255 255 255 255
5 2 255 255 255 255
7 255 255 255 255 255
7 255 255 255 255 255
9 117 15 7 255 255
9 117 15 7 255 255
11 16 0 0 0 0
11 8 0 0 0 0
13 0 0 0 0 0
13 0 0 0 0 0
.....

 

Modifié par Platypus
Reduction du code cité

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

oui, je reconnais tes trames....

J'ai commencé à les décrire ici : https://sigrok.org/wiki/Protocol_decoder:Easymatic

Ceux sont les trames de ta chaudière qui commencent par des nombres impairs !

Tu peux regarder si cela correspond en terme d'information

Modifié par Platypus

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu peux décrire ton montage électronique stp ? Pour voir si je peux m'en inspirer pour adapter le mien.

Je pense faire un système avec arduino + esp8266

Partager ce message


Lien à poster
Partager sur d’autres sites

Alors, justement, j'ai commandé 2 Wemos D1 ce matin pour réaliser le circuit - c'est à base d'ESP8266 mais ça remplace l'Arduino. Si tout se passe bien, je devrais pouvoir l'alimenter depuis la chaudière et avoir un truc très compact et connecté en wifi !

J'avais vu le lien sigrok, mais je ne vois pas dans les trames les informations de pression d'eau (c'est ce qui m'intéresse le plus), ni les températures et consignes courantes de chauffage (température ECS / chauffage). Je vais essayer de jouer avec la chaudière et de voir ce qui change dans les trames pour enrichir la description du protocole.

La trame 1, on semble lire 21.1° (sur ma capture, ça évolue de 21.1 à 20.9) - ce qui est cohérent avec une mesure de température (sonde de température de l'eau en arrivée ?)

 

Pour le circuit (sur breadboard pour le moment), il y a juste un dont diviseur de tension pour ramener le signal dans [0,5V] (il faudra encore réduire pour le Wemos D1 car l'ESP8266 est en 3.3V). Je relie la masse de la chaudière à GND sur l'Arduino, et je sample sur l'entrée analogique A0.

L'alim de l'Arduino est faite via le port USB, et je récupère tout sur la console série de mon ordi.

Pour le firmware, je me suis inspiré de Girino.

On doit pouvoir ajouter des capa pour réduire le bruit (mais je suis déjà très content du résultat), et pour le montage final il faudra ajouter la partie alimentation (je prendrais probablement un régulateur de tension 5V, on peut alimenter le D1 en 5V - il a un régulateur intégré).

 

Au final, je pense faire un firmware qui décode le protocole Easymatic, et qui envoie les infos en HTTP. Si tu as des infos sur la partie commande (trames émises par l'Easymatic), ça permettrait de contrôler à distance la chaudière. J'imagine que c'est du genre chaque seconde est divisée en 500ms, une phase d'écoute et une phase d'envoi. Je pourrais donc essayer d'envoyer dans la 2ème partie de la seconde une trame de pilotage, mais franchement ce n'est pas mon besoin immédiat, donc je laisse ça pour plus tard.

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Alors, je continue l'exploration des trames émises par la chaudière:

Trame 01: 2eme octet (le premier est le type de trame): 1: Chaudière Off (sur le panneau de contrôle), 4: Chauffage + ECS, 8: ECS seulement

Trame 05: 2eme octet : 02: en marche mais éteint, 06: en chauffe, 00: Off (je n'ai pas plus d'info)

Trame 07: 2eme octet : FF: RAS, 0D: alarme pression trop basse (je ne sais pas si c'est spécifique à cette alarme ou si les autres alarmes sont remontées avec un autre code)

 

Pour mon objectif principal, je peux donc me concentrer sur le 2ème octet de la trame 07.

 

Voici une photo de mon montage (rien de plus simple ! J'ai mis un pont diviseur de tension avec des résistances 10kOhm et 47kOhm.

Le firmware Arduino est en PJ (pas du tout mis au propre, mais ça a l'avantage de fonctionner).

 

Reste à attendre l'arrivée de mon Wemos D1 !!!

 

20180112_220838.jpg.1339a21ecc48603475c4322d50264567.jpgGirino3.zip

 

Modifié par gderou
  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Alors, j'ai fait un enregistrement d'une nuit entière, rien de bien nouveau. Trame 5, 2ème octet, j'ai les valeurs 01, 02, 05, 06 - je ne sais pas exactement à quoi ça correspond (enfin 01 et 06).

Les 2 dernières paires d'octets de la trame 1 ressemblent à des températures, mais je ne sais pas lesquelles.

 

Pour l'alimentation de l'arduino depuis la chaudière, il faut probablement que je revisite le truc, car la tension chute pas mal quand je le branche. Je vais essayer avec un convertisseur buck à la place du régulateur de tension, ça consommera moins (mais il faut attendre qu'il arrive de Chine).

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 15 heures, gderou a dit :

Trame 5, 2ème octet, j'ai les valeurs 01, 02, 05, 06 - je ne sais pas exactement à quoi ça correspond (enfin 01 et 06).

J'ai pas eu lle temps de le documenter sur la page sigrok (cf " Boiler bits command ") mais il y a un bit pour : la pompe de circulation, l’allumage ou nom du bruleur, la vanne ECS, la vanne chauffage

Regarde si cela correspond ?

Il y a 15 heures, gderou a dit :

Les 2 dernières paires d'octets de la trame 1 ressemblent à des températures, mais je ne sais pas lesquelles.

Pour moi (cf page sigrok) : température de l'eau chaude sanitaire (ECS) et température de l'eau chaude pour le chauffage

Il y a 15 heures, gderou a dit :

Pour l'alimentation de l'arduino depuis la chaudière, il faut probablement que je revisite le truc, car la tension chute pas mal quand je le branche.

Je ne suis, malheureusement pas étonné. Pour éviter de claquer quoique ce soit (et donc d'être privé de chauffage), je regarde à deux fois ce que je fais.

L'easymatic peut être autoalimenté (vérifié) mais pour envoyer des informations, cela semble se passer en fonction de sa consommation (mise en ligne d'une résistance ou non).

Pour info, c'est ce qu'il se fait pour le protocole OpenTherm.

J'ai l'impression qu ele protocole utilisé est de l'opentherm sur lequel on enlève au niveau des bits du Manchester Code. Cf https://www.domoticaforum.eu/uploaded/Ard M/Opentherm Protocol v2-2.pdf

décrit ici aussi : http://www.palebluedot.nl/jml/index.php/projects/arduino/24-openthermmon

Modifié par Platypus

Partager ce message


Lien à poster
Partager sur d’autres sites

Ah oui, si as l'information de comment sont codée les température négatives, je suis preneur ! Je n'ai pas encore réussit à l'observer

Merci !

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 39 minutes, Platypus a dit :

J'ai pas eu lle temps de le documenter sur la page sigrok (cf " Boiler bits command ") mais il y a un bit pour : la pompe de circulation, l’allumage ou nom du bruleur, la vanne ECS, la vanne chauffage

Regarde si cela correspond ?

J'ai bien vu ta description du protocole - ça semble correspondre, mais je ne sais pas quel bit correspond à quoi (et pour être honnête, ce n'est pas ma priorité). J'ai juste observé 4 valeurs différentes pour l'état. Je suppose effectivement qu'il y a un mode chauffage (bruleur actif + vanne chauffage), un mode ECS (bruleur + vanne ECS), et je pense qu'ils correspondent à 06 et 05 respectivement (donc bit n°3 pourrait être le bit du brûleur - 1 pour brûleur actif, 0 sinon). Donc bit 1: vanne ECS, bit 2 vanne chauffage. Et quand le brûleur s'arrête on a la vanne qui reste ouverte.

Quand on met la chaudière OFF, ça passe à 00, ce qui est cohérent…

il y a 39 minutes, Platypus a dit :

Pour moi (cf page sigrok) : température de l'eau chaude sanitaire (ECS) et température de l'eau chaude pour le chauffage

J'ai une nuit d'enregistrement, et de mémoire (je n'ai pas les données sous la main à l'instant) il y a de grands sauts de valeurs. Mais peut-être que c'est ça…

il y a 39 minutes, Platypus a dit :

Je ne suis, malheureusement pas étonné. Pour éviter de claquer quoique ce soit (et donc d'être privé de chauffage), je regarde à deux fois ce que je fais.

L'easymatic peut être autoalimenté (vérifié) mais pour envoyer des informations, cela semble se passer en fonction de sa consommation (mise en ligne d'une résistance ou non).

Pour info, c'est ce qu'il se fait pour le protocole OpenTherm.

J'ai l'impression qu ele protocole utilisé est de l'opentherm sur lequel on enlève au niveau des bits du Manchester Code. Cf https://www.domoticaforum.eu/uploaded/Ard M/Opentherm Protocol v2-2.pdf

décrit ici aussi : http://www.palebluedot.nl/jml/index.php/projects/arduino/24-openthermmon

Si on ne peut pas tirer suffisamment, je passerai sur une alim externe + optocoupleur. Pour le moment tout fonctionne sans problème.

il y a 50 minutes, Platypus a dit :

Pour info, c'est ce qu'il se fait pour le protocole OpenTherm.

J'ai l'impression qu ele protocole utilisé est de l'opentherm sur lequel on enlève au niveau des bits du Manchester Code. Cf https://www.domoticaforum.eu/uploaded/Ard M/Opentherm Protocol v2-2.pdf

décrit ici aussi : http://www.palebluedot.nl/jml/index.php/projects/arduino/24-openthermmon

L'opentherm semble avoir des trames de 16 bits de données - donc pas mal de différences avec ce qu'on a ici.

Les valeurs de températures (si ce sont bien des températures) sont de l'ordre de 0x0200, ce qui correspond à 512 en décimal, et que je suis tenté d’interpréter en 51.2°C (ça varie pas mal jusqu'à 70°C). Opentherm les représente en ce qu'ils appellent f8.8 (cf pdf page 22), et c'est complètement différent (ça serait plutôt du 0x2800 pour 51.20°)

il y a 32 minutes, Platypus a dit :

Ah oui, si as l'information de comment sont codée les température négatives, je suis preneur ! Je n'ai pas encore réussit à l'observer

Merci !

Je n'ai pas vu de températures négatives, mais je n'ai pas de sonde extérieure, donc je sauf gros problème, je n'en verrai jamais ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai fait une capture de hier soir à ce midi. On voit bien les 2 températures des trames 1 (graphe du haut), ça semble effectivement correspondre à l'ECS (en bleu - byte 3 et 4) et au chauffage (en rouge, byte 5 et 6) - les deux sont sur l'axe de gauche. Sur ce même graphe, on a le statut (trame 5, byte 2), à lire sur l'axe de droite. On voit quand la courbe bleue baisse (plus que sa pente naturelle) - ça correspond aux douches de la famille, vers 8:15 et 11h). J'ai un thermostat connecté qui régule le chauffage à 18 la nuit, donc au début ça chauffe très peu, puis vers 4h, le chauffage se remet en route et on voit les cycles de chauffe. Je ne comprends pas les variations plus rapides de la courbe bleue (de 4:30 à 10:00).

Sur le graphe du bas, on a 2 trucs : en bleu (trame 3, byte 1 et 2, se lit sur l'axe de gauche), et en rouge (trame 7 byte 3 et 4 - mais seul le byte 4 est non nul, se lit sur l'axe de droite). Je ne sais pas de quoi il s'agit.

 

Tout ça fonctionne avec mon montage arduino connecté à un orange pi zéro, donc est compact et pourrait tout à fait rentrer dans le panneau de contrôle (même si moins pratique que le wemos D1).

5a5f4ba2aeae2_Capture_chaudiere20180117.thumb.PNG.2bd231202756c5bc88e25a03b65fba58.PNG

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 15/01/2018 à 12:07, gderou a dit :

L'opentherm semble avoir des trames de 16 bits de données - donc pas mal de différences avec ce qu'on a ici.

Les valeurs de températures (si ce sont bien des températures) sont de l'ordre de 0x0200, ce qui correspond à 512 en décimal, et que je suis tenté d’interpréter en 51.2°C (ça varie pas mal jusqu'à 70°C). Opentherm les représente en ce qu'ils appellent f8.8 (cf pdf page 22), et c'est complètement différent (ça serait plutôt du 0x2800 pour 51.20°)

Oui effectivement, j'ai dit ça un peu vite, j'ai oubli de préciser que je m'intéresse à l’interfaçage physique, comment bien interfacer un remplaçant à l'easymatic -;)

Partager ce message


Lien à poster
Partager sur d’autres sites

En PJ la dernière version du code arduino qui fonctionne.

On m'a fait très justement remarquer qu'un simple filtre passe haut devrait suffire pour récupérer un signal décodable avec le port série de l'Arduino, j'essaierai de faire ça.

Pour le moment, ça fonctionne avec l'Arduino connecté en USB au Rpi, et j'attends le Wemos D1 pour faire un montage qui fasse tout, idéalement alimenté par la chaudière…

Easymaticduino 2.zip

Modifié par gderou
Erreur: passe-bas -> passe-haut

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 28/01/2018 à 16:07, gderou a dit :

En PJ la dernière version du code arduino qui fonctionne.

On m'a fait très justement remarquer qu'un simple filtre passe haut devrait suffire pour récupérer un signal décodable avec le port série de l'Arduino, j'essaierai de faire ça.

Pour le moment, ça fonctionne avec l'Arduino connecté en USB au Rpi, et j'attends le Wemos D1 pour faire un montage qui fasse tout, idéalement alimenté par la chaudière…

Easymaticduino 2.zip

Effectivement ca doit marche s'il n'y a que le signal de la chaudière mais si je ne me trompe pas (à confirmer) le signal de l'easymatic est "inversé" hysiquement et un traitement comme tu l'as fait reste très intéressant.

Je n'arrive pas à comprendre à quoi sert dmin et dmax dans ton code, tu peux me dire stp ?

Merci beaucoup

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai enfin reçu mon Wemos D1 - j'ai une version équivalente (plus simple) du code pour cette carte.

dmin et dmax servent à calibrer le seuil entre 0 et 1 (car je fais des analogread - on n'est pas dans le monde digital...) - sur une période de plus de 1 seconde, on est sûr d'avoir au moins 1 "1" et 1 "0", je prends la moyenne et j'ajuste le seuil en fonction. Je ne sais pas si c'est nécessaire, mais au moins, ça rend le code portable sur une autre installation (le seuil s'adaptera tout seul en qqs secondes).

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Alors la version ESP8266 marche très bien: voici ce que ça donne dans Jeedom (courbe bleue et courbe rouge sont les 2 valeurs dont je ne sais pas à quoi elles correspondent).

image.thumb.png.09b0c8ef12a2d4835a6ee05403f6a4d2.png

 

Il me reste à gérer l'alimentation (pour le moment mon Wemos D1 mini est alimenté en micro USB) et à finaliser le montage pour me débarasser de la breadboard.

 

Voici en PJ le code du firmware (j'utilise l'IDE Arduino).

 

esp8266_easymatic_anon.ino.zip

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 11/02/2018 à 09:09, gderou a dit :

J'ai enfin reçu mon Wemos D1 - j'ai une version équivalente (plus simple) du code pour cette carte.

Super !

Le 11/02/2018 à 09:09, gderou a dit :

dmin et dmax servent à calibrer le seuil entre 0 et 1 (car je fais des analogread - on n'est pas dans le monde digital...) - sur une période de plus de 1 seconde, on est sûr d'avoir au moins 1 "1" et 1 "0", je prends la moyenne et j'ajuste le seuil en fonction. Je ne sais pas si c'est nécessaire, mais au moins, ça rend le code portable sur une autre installation (le seuil s'adaptera tout seul en qqs secondes).

Je trouve la démarche très intelligente. Cependant, disons que quand on a un easymatic qui communique avec la chaudière (c’est mon cas), il y a deux niveaux (à vérifier), je dois donc faire une adaptation mais ton retour m'aide bien

Modifié par Platypus

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui, c'est sûr, je n'ai que la réception ici. Je ne comprends pas très bien comment la easymatic communique avec la chaudière dans l'autre sens.

Pour le moment, mon montage fonctionne et m'a déjà évité une douche froide !!!

Partager ce message


Lien à poster
Partager sur d’autres sites

×