Page 1 sur 1

[Tuto] Lire à distance la température d'un liquide (ZigBee)

Publié : 21 avr. 2021, 15:08
par Diab
L'objectif est de lire la température d'un liquide distant (chauffage, piscine, …), là ou il est impossible d'utiliser une sonde à l'air libre ou un thermomètre connecté en Zigbee. Compte tenu de la très faible conso des composants utilisés, un fonctionnement sur petite batterie est possible.

Le matériel nécessaire se compose d'une carte Zigbee CC2531 (au format USB si besoin d'alim) développé à l'origine par Texas Instrument.
(https://www.ti.com/lit/ug/swru221a/swru ... 252FCC2531)

CC2531.png
CC2531.png (415.32 Kio) Consulté 4613 fois

On en trouve partout sur le net (avec antenne, prise USB, émetteur RF associé), parfois accompagné d'une nappe de câblage.
https://www.amazon.fr/ARCELI-d%C3%A9val ... MJB4&psc=1

Les sondes de température sont des DS18B20 et fonctionnent en bus 1_Wire. Il y en a également partout sur le net (éviter les bas de gamme chinoises qui n'ont pas une adresse unique et posent parfois des PB d'adressage)
https://www.amazon.fr/Busirde-DS18B20-E ... 93&sr=1-11

La configuration du prog à flasher se fait avec PTVO qui permet de choisir les ports et accessoires connectés au CC2531 ainsi que le comportement de cette carte Zigbee une fois flashée. Globalement, PTVO va créer le fichier .Hex à injecter dans la CC2531.

On peu le télécharger là :
https://ptvo.info/zigbee-switch-configu ... /#download

Et avoir des infos sur les nombreuses configurations et utilisations là :
https://ptvo.info/zigbee-configurable-f ... -features/

Dans mon cas, la config dans l'onglet "Settings" est : CC2330 de type 2531, en mode "Router", ports de connexion des sondes P02 et P15 (correspondent au ports physique 01 et 07 de l'IO Connector du CC2531 (Voir fiche technique Texas Instrument ci-dessus), connectés à deux sondes DS18B20. Il n'y a pas besoin de saisir les identifiants des sondes, la clé Zigbee les retrouvera. J'ai choisi une résistance de Pull-Up externe car en fonction de la longueur de mes câbles il me faudra sans doute ajuster la valeur de la résistance. Pour l'instant j'ai inséré une résistance de 4,7 kΩ comme préconisé par le constructeur, entre l'alim (rouge) et la Data (jaune) de chaque sonde.

PTVO_1.png
PTVO_1.png (82.19 Kio) Consulté 4613 fois

Dans l'onglet "Expert", il n'est pas nécessaire de changer les paramètres sauf à augmenter le "Reporting interval" si on ne veut pas saturer les logs de DMZ.
Il est important de noter les "Manufacturer Name" et "Model ID" qui seront utilisés par le plugin Zigate.


PTVO_2.png
PTVO_2.png (56.69 Kio) Consulté 4613 fois

En sauvant cette config, le fichier .Hex est créé, il faudra ensuite le transférer dans le répertoire correspondant sur le Raspberry qui va flasher (FileZilla fait très bien l'affaire en SFTP).

On utilise alors les ports GPIO du Raspberry pour dialoguer avec le CC2531 par l'intermédiaire de son port Debug. Le Raspberry sert également à alimenter la clé Zigbee sur un port USB. Tout est très bien expliqué là :
https://www.youtube.com/watch?v=RguRQUXWLCY

Du coté du CC2531, on câble le Ground, le reset, le Debug Clock (DC) et le Debug Data (DD), comme ça, vers les ports correspondants du Raspberry :

Prise Debug CC2531.png
Prise Debug CC2531.png (454.36 Kio) Consulté 4613 fois
Cable Raspi vers CC2531.png
Cable Raspi vers CC2531.png (27.91 Kio) Consulté 4613 fois

L'injection du code se fait en ligne de commande à partir de la console du Raspberry et de l'outil "Flash_CC2531". Il faut donc au préalable disposer de WiringPi (gestion des GPIO) et Git sur le Raspberry.

https://github.com/jmichault/flash_cc2531.git

Une fois installé, il suffit de déposer le .Hex dans le même répertoire (qui contient les exécutables) et de lancer CC_erase pour nettoyer le contenu de la clé puis CC_write pour écrire (ex : CC_write le_nom_de_mon_fichier.hex)

Tout est expliqué là, si l'on ne tient pas compte de la partie MQTT :
https://www.zigbee2mqtt.io/information/ ... ry-pi-3min

Du coté Zigate, le fonctionnement du CC2531 avec des sondes DS18B20 est pris en compte dans la branche Stable5. Cela nécessite également de gérer les nouvelles trames émises par le CC2531. Un fichier décrivant la structure et les paramètres reçus doit être créé dans l'arborescence du plugin Zigate. Ce fichier doit également correspondre au "Manufacturer Name" et "Model ID" utilisés dans PTVO.

Il faut donc créer le répertoire nécessaire dans l'arborescence du plugin, sur la machine qui héberge la Zigate (Raspberry chez moi) :
/home/pi/domoticz/plugins/Domoticz-Zigate/Conf/Certified/MyCustomSensor

Puis créer le fichier de traitement des trames reçues "ptvo.switch.json" (on retrouve ici les paramètres générés par PTVO) avec comme contenu :

{ "Ep":{ "01":{ "0000":"", "000c":"", "0b05":"", "Type":"Analog" }, "02":{ "0000":"", "000c":"", "0b05":"", "Type":"Analog" } }, "Type":"", "ClusterToBind": [], "ConfigureReporting":{}, "ReadAttributes": { "0000": [ ] , "0012": [], "000c": [] } }

En mode joli, ça donne ça :

Json.png
Json.png (27.86 Kio) Consulté 4613 fois

Au lancement de la Zigate et du CC2531, deux nouveaux widgets sont créés dans la rubrique "Mesures" (après activation dans la gestion des dispositifs) et correspondent aux valeurs de température des deux sondes DS18B20.

Sondes dans DMZ.png
Sondes dans DMZ.png (37.06 Kio) Consulté 4613 fois

On peut se demander à quoi sert tout ce bor….. mais j'avais besoin de connaître la température de l'eau d'une piscine ainsi que celle d'un circuit de chauffage solaire afin de gérer la filtration et le réchauffage. Tout ça enterré dans un local au fond du jardin. Ne reste plus qu'à faire un câblage définitif et à cacher tout ça dans une boite de dérivation.

IMG_20210420_184600.jpg
IMG_20210420_184600.jpg (685.94 Kio) Consulté 4613 fois

:mrgreen: :mrgreen: :mrgreen: Tout cela n'aurait bien sûr pas été possible sans les compétences et la disponibilité de Pipiche que je remercie chaleureusement. :mrgreen: :mrgreen: :mrgreen:

Re: Lire à distance la température d'un liquide (Zigbee)

Publié : 21 avr. 2021, 17:35
par Gilles BILLARD
Pour info, j'ai fait un truc similaire avec MySensors; Si ca intéresse quelqu'un, je peux partager...
++

Re: Lire à distance la température d'un liquide (Zigbee)

Publié : 21 avr. 2021, 20:14
par Neutrino
Magnifique tuto ! Bravo et merci !
Le bus 1-wire permet de mettre les ds18b20 sur le même bus et donc d'utiliser la borne data des sondes sur le même port.
C'est pas possible avec ptvo ?
[EDIT] J'ai trouvé ma réponse : https://ptvo.info/zigbee-configurable-f ... s/ds18b20/
Oui, c'est possible jusqu'à 4 sondes par port.

@Gilles, avec plaisir !

Re: Lire à distance la température d'un liquide (Zigbee)

Publié : 21 avr. 2021, 21:11
par Keros
Merci pour ce partage très bien documenté ;)

Très content que Pipiche ait pu adapter le plugin pour accueillir des réalisations DIY.

Re: Lire à distance la température d'un liquide (Zigbee)

Publié : 21 avr. 2021, 21:16
par Diab
Oups, je ne me suis même pas posé la question, il y a 8 ports et j'avais 2 sondes à connecter ... 8-)

Re: [Tuto] Lire à distance la température d'un liquide (Zigbee)

Publié : 09 nov. 2021, 10:30
par Sherco49
Toujours dans le décryptage, est-il possible de savoir à quoi correspondent les paramètres dans le fichier Json, ou un lien vers de la documentation qui l'explique?

Re: [Tuto] Lire à distance la température d'un liquide (Zigbee)

Publié : 09 nov. 2021, 10:40
par Diab
Il vaut mieux poser les questions dans le message initial plutôt que dans le tuto. D'ailleurs en page 6 de ce message il y a quelques réponses.

Re: [Tuto] Lire à distance la température d'un liquide (Zigbee)

Publié : 09 nov. 2021, 12:12
par Sherco49
Oui, désolé j'avais les deux fils d'ouvert et j'ai posté dans le mauvais...