Télé relevé de compteur d’eau avec ajout dans domoticz

Compteur d’eau et Domoticz

Bonjour à tous,

j’ai passé un peu de temps à contruire un module permettant de relever moi même mon compteur d’eau EverBlue Cyble (marque Itron ) et je voulais vous partager le mode opératoire en details.

Premièrement je dois dire que tout est déjà très bien expliqué sur ce cite : www.lamaisonsimon.fr et donc un grand merci à tous les contributeurs pour leur precieuses recherches.

Dans le passé j’habitais une maison ou le compteur était relevé 1 fois par jour automatiquement par Suez et les informations partagées sur leur site. J’avais à l’époque créé un script permettant de collecter ces information et les ajouter directement dans domoticz. Il semble que suez et mis a jour son portail et que la connexion via script ne soit plus possible… Quand à une eventuelle API il faut pas trop y compter je pense…
Où j’habites actuelemnt le service des eaux a mis en place des compteurs de même type (permettant le télé-relevé) mais le relevé ne se fait que 2 fois pas an par un technicien.

En cherchant sur internet je suis tombé sur le site lamaisonsimon.fr qui detaille comment avec un petit recepteur compteur d’eau 433Mhz (~10€) et un Raspberry PI Zero (~9€). Donc pour moins de 20€ et un peu de temps vous allez pouvoir ajouter dans domoticz la valeur journaliere de votre compteur d’eau.

ecran cdomoticz relevé d'eau

Affichage dans domoticz

Composants :

  • Un recepteur Sans Fil Module CC1101 par exemple (ex lien 1)
  • Un Raspberry PI Zero ou autre modèle

Cablage :

Il faut connecter le CC1101 sur la Raspberry comme suit : 

CC1101 Pin Raspberry

 

Configuration du Raspberry :

Sur votre Raspberry vous devez avoir installé ksh, si ce n’est pas le cas : :

sudo apt-get update
sudo apt-get install ksh

Puis :

cd /home/pi/
git clone https://github.com/Sirus10/consoEAU.git
cd consoEAU
chmod +x get_water.sh

Il faut ensuite modifier le fichier cc1101.c ligne 672 modifier les XXXXX comme indiqué par le numéro de compteur :

// replace XXXXXXX with the servia of our device YY-XXXXXXX-ZZZ
// If the serial XXXXXXX start with a 0 remove it. 
// Ex 20-0123456-987 -> replace XXXXXXX below with 123456 
TS_len_u8=Make_Radian_Master_req(txbuffer, 17  , XXXXXXX ); 

Compilez le code :

gcc radian_trx.c -o radian_trx -lwiringPi -lpthread -Wall

Vouc pouvez ignorer les waring suivant lors de la compilation:warning compilation

Tester et verifiez que vous collectez bien les données (tester au plus près du compteur pour commencer) :

/home/pi/conoEAU/radian_trx
raspian radian trx builded:Sep  2 2022 18:02:38

command list :
exit:x ;cc1101 version:v; read config : c
m:MARCSTATE a:MCSM1_val s:full_status
H:scenario de l'outil de releve !
S:scan
R:Reset CC1101

puis tapez H
radian_trx putty
radian_trx collecte donnée

Si la collecte se passe correctement vous deviez avoir un retour dece type :

command list :
exit:x ;cc1101 version:v; read config : c
m:MARCSTATE a:MCSM1_val s:full_status
H:scenario de l'outil de releve !
S:scan
R:Reset CC1101

HMARCSTATE : raw:0x13 0x13 free_byte:0x0F sts:0x02 sending 2s WUP...

50 00 00 00 03 FF FF FF FF 64 70 47 00 75 17 44
76 07 71 71 11 00 75 17 02 72 87 05 71 47 00 72
87 01 72 77 3F FF FF
186free_byte:0x0D sts:0x07
MARCSTATE : raw:0x0D 0x0D(RX RX)
GDO0! 00 1st synch received rssi=171 lqi=128 F_est=255
MARCSTATE : raw:0x0D 0x0D(RX RX)
GDO0! frame received
MARCSTATE : raw:0x0D 0x0D(RX RX)
GDO0! 00 1st synch received rssi=171 lqi=128 F_est=255
MARCSTATE : raw:0x0D 0x0D(RX RX)
GDO0! frame received

0x00,0xFF [puis un long message en hexa]

Pour finir par la ligne qui affiche les infos :
2/9/2022 15:6:25 264903litres Num189 113Mois 6h-18h serial:<serial de mon compteur>

Si vous rencontrez des soucis pour collecter des données il faudra peut être ajuster la fréquence du transmeteur. Je vous ferai un arctile sur ce point mais plus tards. Vous avez aussi ces détail sur le wiki de lamaisonsimon.fr. A noter que radian_trx que je vous propose dispode d’une fonction scan (option S voir détail plus tard)…

Une fois que vous obtenez les données de votre compteru, vous pouvez modifier le fichier  get_water.sh :

Ajouter l’IP de domoticz (127.0.0.1 ) et remplacer idx=22 par la valeur du compteur dans domoticz :

curl "http://<ip domotique>:8080/json.htm?type=command&param=udevice&idx=22&svalue=$value"

Enfin ligne 25 remplacer put@your.email par votre adresse email. Vous serez alerté si la collecte n’a pas pu avoir lieu.

echo "Compteur d'eau pas de valeur relevée" | mail -s "Compteur d'eau" put@your.email 

Executer en mode test :

./radian_trx puis tapper H

Executer avec ajout de l’information dans Domoticz :

./get_water.sh

Planifier en Crontab :

0 8-17 * * 1-5 /home/pi/consoEAU/get_water.sh >> /tmp/get_water.sh.log

Plus de detail viendrons dans un second tesmp, je voulais juste vous donner quelques piste et ma procedure pas à pas pour permettre de reciuperer dans domoticz les données de votre compteur d’eau.

 

 

7 réflexions sur « Télé relevé de compteur d’eau avec ajout dans domoticz »

  1. SOAD08

    Bonjour

    J’ai un compteur d’eau identique à celui que vous décrivez.
    Il est situé au fond d’un regard profond de 2m donc pas de lecture directe et régulière possible.
    J’ai découvert deux importantes surconsommations d’eau lors du télé relevé qui a lieu tous les 6 mois et suis depuis longtemps en besoin de trouver un moyen de télé relever moi-même ce compteur.
    J’ai lu votre mode opératoire et envisage de le suivre.
    Je ne sais pas programmer en Python mais je ne part pas totalement de 0 dans le domaine de la programmation, donc je vais essayer de me lancer.

    Ma question porte sur le matériel nécessaire, préalable à cette démarche.
    Le Raspberry PI Zero (w ou 2w) est introuvable en stock, sinon à des prix délirants proche de 100€.

    Par contre, on trouve encore le Raspberry Pi Nano

    https://all3dp.com/2/raspberry-pi-pico-vs-zero-compared/

    Répondre
  2. Phil

    Bonjour, tout d’abord merci pour le partage de vos travaux. J’ai suivi vos instruction mais j’ai une erreur de compilation. qu’en pensez vous ?

     »
    pi@raspberrypi:~/consoEAU $ gcc radian_trx.c -o radian_trx -lwiringPi -lpthread -Wall
    In file included from radian_trx.h:97,
    from radian_trx.c:5:
    cc1101.c: In function ‘scenario_releve’:
    cc1101.c:729:8: warning: implicit declaration of function ‘display_meter_cron’; did you mean ‘display_meter_report’? [-Wimplicit-function-declaration]
    else display_meter_cron(meter_data,meter_data_size);
    ^~~~~~~~~~~~~~~~~~
    display_meter_report
    cc1101.c:668:13: warning: variable ‘TS_len_u8’ set but not used [-Wunused-but-se t-variable]
    uint8_t TS_len_u8;
    ^~~~~~~~~
    cc1101.c: At top level:
    cc1101.c:756:6: warning: conflicting types for ‘display_meter_cron’
    void display_meter_cron (uint8_t *decoded_buffer , uint8_t size)
    ^~~~~~~~~~~~~~~~~~
    cc1101.c:729:8: note: previous implicit declaration of ‘display_meter_cron’ was here
    else display_meter_cron(meter_data,meter_data_size);
    ^~~~~~~~~~~~~~~~~~
    pi@raspberrypi:~/consoEAU $
    « 

    Répondre
    1. Manu Auteur de l’article

      Bonjour et desolé de la reponse si tardive vous avez sans doute trouve la solution entre temps…
      ce ne sont que des warning. le code devrait fonctionner malgré tout
      Manu

      Répondre
  3. Julien

    Bonjour,

    Suite a un scan, je pense avoir trouvé la bonne fréquence (Freq0=71).
    Que faut-il modifier exactement dans le fichier cc1101.c pour modifier la bonne fréquence?

    En vous remerciant d’avance.
    Julien

    Répondre
    1. Julien

      Je me répond,

      La fréquence de base est OK

      Par contre, il faut changer aussi l’année du compteur :

      // replace XXXXXXX with the servia of our device YY-XXXXXXX-ZZZ
      // If the serial XXXXXXX start with a 0 remove it.
      // Ex 20-0123456-987 -> replace XXXXXXX below with 123456
      TS_len_u8=Make_Radian_Master_req(txbuffer, 17 , XXXXXXX ); // le 17 est a replacer par l’année du compteur (représenté par YY sur la 1er ligne)

      Répondre

Répondre à Manu Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

 

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