Compteur d'eau avec interface wireless M-Bus

Bonjour,

Il y a quelque temps, notre commune a installé des compteurs d’eau avec une interface Wireless M-Bus pour le relevé à distance. Après quelques recherches, je me suis rendu compte qu’il y aurait moyen de récupérer les valeurs de consommation pour mon propre suivit (fuite d’eau, consomation, etc).

J’arrive actuellement à recevoir ces valeurs sous la forme suivante:

MyWater 68720786 290.2 m3 290 m3 2020-03-03 07:07.37
MyWater 68720786 290.2 m3 290 m3 2020-03-03 07:07.46
MyWater 68720786 290.2 m3 290 m3 2020-03-03 07:07.56
MyWater 68720786 290.2 m3 290 m3 2020-03-03 07:08.04
MyWater 68720786 290.2 m3 290 m3 2020-03-03 07:08.13
MyWater 68720786 290.2 m3 290 m3 2020-03-03 07:08.21

La question suivante est comment je pourrais récupérer ces valeurs et afficher le suivit dans jeedom, voir déclencher une alarme?

Merci par avance de bien vouloir m’aiguiller dans la bonne direction

1 « J'aime »

Ca a l’air d’être rapide dans le temps mais 1 chiffre après la virgule des m3 ca fait des centaines de litres …

quand tu dit j’arrive a recevoir … c’est de quel façon ? une ligne http ? … ci c’est le cas tu devrait peutêtre pouvoir t’en sortir avec un script …

Salut,

Il faudrait un plus d’informations. Tu les récupères où ces lignes ? Il y a un mot de passe ou c’est juste une url avec accès direct ?

Si le but est juste d’ajouter la valeur (290.2) dans une commande Jeedom ce ne devrait pas être très compliqué.

Quelques suggestions :

Si déjà tu récupères la première ligne dans une commande de type « Autre » c’est déjà presque bon.

C’est une ligne de commande de ce style (j’ai un dongle RTL-SDR):

rtl_sdr -f 868.95M -s 1600000 - 2>/dev/null | rtl_wmbus | wmbusmeters --t1 stdin:rtlwmbus MyWater izar 68720786 NOKEY| grep -v meter

Et le résultat est écrit en continu dans un log avec une valeur toute les 8 secondes environ (https://www.aquametro.com/fr/1005/Produkt.htm?id=25572)

1 « J'aime »

Merci pour vos retours.

Je vais d’abord tester avec le plugin script, car il y a la possibilité d’utiliser le qualifier --format=json, sinon j’explorerai la variante avec un scénario.

Pour les mesures effectivement, les fractions c’est par 100 litres, il faut dire que les communes ne s’intéressent pas à avoir des chiffres plus détaillés pour leur facturation. Mais ça a l’avantage d’être gratuit, donc on ne va pas faire la fine bouche.

D’après la doc de wmbusmeters :

The readings can then be published using MQTT, curled to a REST api, inserted into a database or stored in a log file.

Je te conseille de le pousser en MQTT.
le wiki pour HASS précise comment le configurer :

Add MQTT send command to config file /etc/wmbusmeters.conf

shell=/usr/bin/mosquitto_pub -h localhost -t wmbusmeters/"$METER_ID" -m "$METER_JSON"

Sur un peu le meme principe, j’utilise rtl_433 (GitHub - merbanan/rtl_433: Program to decode radio transmissions from devices on the ISM bands (and other frequencies)) mais sur du 433 et comme le dit @tototutu76 je passe par MQTT.

J’ai donc installé :
Le plugin MQTT
Supervisor (composant linux) qui permet de gérer automatiquement le démarrage en service de rtl_433 via un script.

#!/bin/bash
rtl_433 -F "mqtt://127.0.0.1:1883,retain=0,devices=rtl_433[/model][/id]"p

Ensuite je précise au plugin MQTT ou se connecter et le tours est joué mes valeurs arrive directement
Exemple ici un capteur TPMS (pression des pneux de la voiture) :
image

Merci pour ces précieuses infos. Je ne connais pas ce plugin, je vais tester ça!

1 « J'aime »

C’est super cool avec le plugin MQTT.

J’ai pu intégrer très facilement et obtenir un historique. Pour le moment je n’ai pas pu configurer dans /etc/wmbusmeters.conf car mon type de compteur n’est encore totalement reconnu, je dois corriger les unités manuellement, donc à partir de l’OS j’ai un cronjob qui fait le boulot en attendant de faire mieux:

0 * * * * mosquitto_pub -h localhost -t wmbusmeters/eau -m rtl_sdr -f 868.95M -s 1.6e6 - 2>/dev/null | rtl_wmbus | wmbusmeters --t1 --exitafter=8s stdin:rtlwmbus MyWater izar SN NOKEY|grep -v meter|awk '{print $3*100}'

Encore merci pour vos conseils

Bonjour magifix, pourrais tu me donner le nom / marque de ton dongle RTL-SDR, mon fournisseur m’a installe un appareil Honeywell Merlin 169 wMBus qui d’après le nom et les specifs utilisent le même protocole.
J’en cherche un qui comme toi serait compatible avec Jeedom (VM sous VMware - HP Microserver Gen8).
Merci d’avance pour ton aide
Patrice

1 « J'aime »

Bonjour à tous,

Je me permet de déterrer ce sujet car je suis actuellement sur un projet similaire.
En me basant sur cette discussion j’ai acheté un dongle rtl-sdr (Nooelec NESDR SMArt v4 Bündel - Premium RTL-SDR mit Aluminiumgehäuse, – techstudio.ch)

Une fois ce dongle en ma posséssion, j’ai suivi les étapes suivantes;

  1. Installation de raspberry pi OS Lite
  2. Installation de rtl-sdr (via apt)
  3. Installation de rtl-wmbus (via sources)
  4. Installation de wmbusmeters (via snap)

Quelque chose a dû mal se dérouler lors de l’installation de wmbusmeters car lorsque je lance une commande de type « rtl_sdr -f 868.95M -s 1600000 - 2>/dev/null | rtl_wmbus | wmbusmeters --t1 stdin:rtlwmbus MyWater izar 68720786 NOKEY| grep -v meter » j’ai un message d’erreur "
-bash: wmbusmeters : commande introuvable" …

Pourtant si j’essaie de réinstaller le snap avec « sudo snap install wmbusmeters » j’ai bien le message « snap « wmbusmeters » is already installed, see ‹ snap help refresh › »

Une idée sur ce que je dois faire pour résoudre ce problème ?

D’avance je vous remercie.

Bonjour,

A vue de nez, il semble que la commande rtl_sdr est introuvable. Si vous entrez la commande:

wich rtl_sdr

Que se passe-t-il? Si la commande est introuvable, alors recherchez le binary sur votre système:

find / -name « rtl_sdr »

Si le binary existe, alors vous pouvez tester avec le chemin complet

Hello,
Perso je suis passé sur une clef « Nanocul Clé USB FTDI cc1101 868 MHz »
Ici sur Ebay : Nanocul Clé USB FTDI cc1101 868 MHz FW 1.67 Pli-Antenne iobroker cul 868 | eBay

C’est un peu plus cher qu’un simple RTL-SDR, mais coté CPU, ca n’a rien à voir…
C’est pris en charge nativement par wmbusmeters

1 « J'aime »

J’ai remarqué cela aussi pour le cpu, et surtout que la clé devenait chaude. Du coup je ne fais tourner qu’une fois par heure avec l’option --oneshot.

Je vais regarder du côté de cette clé. Tu fais comment le lancement du coup ?

1 « J'aime »

Au moment de préciser le device, au lieu de mettre rtlwmbus tu met /dev/ttyUSB0:cul:t1

De mon coté je suis en Docker et je pousse en MQTT, ca donne ça :

cat <<'EOF' > /etc/udev/rules.d/99-wmbus.rules
SUBSYSTEM=="tty", ACTION=="add", ENV{ID_VENDOR_ID}=="0403", ENV{ID_MODEL_ID}=="6001", SYMLINK+="wmbus", RUN+="/usr/bin/docker start wmbusmeters"
SUBSYSTEM=="tty", ACTION=="remove", ENV{ID_VENDOR_ID}=="0403", ENV{ID_MODEL_ID}=="6001", RUN+="/usr/bin/docker stop wmbusmeters"
EOF
udevadm control --reload-rules && udevadm trigger

docker run -d --name=wmbusmeters --restart=unless-stopped -v wmbusmeters:/wmbusmeters_data --device /dev/wmbus weetmuts/wmbusmeters  /wmbusmeters/wmbusmeters --addconversions=L --shell='/usr/bin/mosquitto_pub -h 192.168.1.XXMQTTXX -t wmbusmeters/$METER_ID -m "$METER_TOTAL_L"' /dev/wmbus:cul:t1 CompteurEau izar XXIDCOMPTEURXX NOKEY
# test
# docker run -d --name=wmbusmeters --restart=unless-stopped --device /dev/wmbus weetmuts/wmbusmeters  /wmbusmeters/wmbusmeters --debug --logtelegrams --verbose /dev/wmbus:cul:t1

En remplaçant ce qu’il y a entre les XX

1 « J'aime »

Bonjour,
@Domochip aujourd’hui on vient de me changer mon compteur d’eau et on m’a installé le module radio Izar DIEHL comme le tiens de ce que je lis dans ton code, ci dessus.
Peux tu stp partager un imprim écran des données que tu récupéres sur ton widget.

Je viens de faire l’acquisition de cette clé nano cul et compte installer wmbusmeters.

J’ai actuellement mon Jeedom principal d’installer sur une machine virtuelle esxi sur lequel j’ai un serveur MQTT et un jeedom secondaire d’installer sur un Raspberry4.

Sur quoi, serait il judicieux d’installer wmbusmeters à votre avis, sur le esxi, le Raspberry, ou un Raspberry dédié?
je n’ai pas de notion avec Docker, je n’arrive pas à me représenter ce que c’est, je vais aller voir ça sur Google.

Merci d’avance

La plateforme importe peu, elles sont toutes supportées semble-t-il.
Le vrai problème est de réussir à capter le signal (compteur un peu éloigné dans mon cas).

Bonjour à tous,

Merci pour ce partage autour du wireless M-Bus
Je suis très intéressé pour récupérer les infos de consommation d’eau ; et mon habitation vient aussi d’être équipée d’un compteur eau Diehl, avec un dispositif RF " IZAR RC I G4" ; c’est à priori un dispositif reconnu par wmbusmeters.

J’ai lu vos messages, et pas mal d’infos sur le nanoCUL et le logiciel wmbusmeters

Je viens de commander, et recevoir un nanoCUL : Clé USB nanoCUL FTDI CC1101 868 MHz FW 1,67 antenne pliante FHEM CUL 868 + adaptateur | eBay
Il est commercialisé par https://www.smart-home-komponente.de/

Et j’ai fait mes premiers essais … pas fructueux.

En fait, j’ai l’impression que mon dongle nanoCUL ne fonctionne pas comme celui de @Domochip

Voici le constat :

  • le nanoCUL est bien reconnu par wmbusmeters
  • il ne fonctionne pas correctement. En fait, il ne semble par interpreter la commande ‹ b ›, comme décrite dans culfw reference

Si je lance un ‹ wmbusmeters --debug auto:t1 › ou ‹ –debug /dev/ttyUSB0:cul:t1 › ou ‹ –debug cul:t1 ›, le nanoCUB est bien détecté, mais j’ai à la fin le message :
(cul) received ""(cul) setting link mode(s) t1 is not supported for this cul device!

Si on suit le mode debug, on voit que wmbusmeters envoie d’abord la commande « V », le nanoCUL répond « V 1.67 nanoCUL868 » ; puis, il envoie la commande « brt » (read data mode t), et le nanoCUL répond qu’il ne connait pas la commande « b » :
"? (brt is unknown) Use one of A B C E e F f G h i K k l M m R T t U V W X x Y Z z<0D><0A>"

Si j’interroge directement le nanoCUL avec un client série (pour ma part, putty sous windows), ca donne ceci

> V
< V 1.67 nanoCUL868

>brt
< ? (brt@ is unknown) Use one of A B C E e F f G h i K k l M m R T t U V W X x Y Z z

C’est conforme à la log debug de wmbusmeters

Avez-vous une piste de recherche ?

@Domochip ; peux-tu interroger directement (en mode série) ton nanoCUL, et vérifier le retour des commandes « V » et « brt » ?

Merci

Voici le dialogue complet du wmbusmeters

# wmbusmeters --debug /dev/ttyUSB0:cul:t1
(wmbusmeters) version: _
(config) using device: /dev/ttyUSB0:cul:t1 
(config) number of meters: 0
(lookup) with file/hex "/dev/ttyUSB0" cul
(serial) check if /dev/ttyUSB0 can be accessed
(serial) tty /dev/ttyUSB0 can be accessed
(serial) EVENT thread interrupted
(serial) before config: /dev/ttyUSB0 speed(B38400) input() output() control(CLOCAL|CREAD|CSIZE) local() special_chars() modem(DTR|RTS)
(serial) after config:  /dev/ttyUSB0 speed(B38400) input() output() control(CLOCAL|CREAD|CSIZE) local() special_chars() modem(DTR|RTS)
(serialtty) opened /dev/ttyUSB0 fd 3 (detect cul)
(serial /dev/ttyUSB0) sent "560D0A"
(serial) EVENT thread interrupted
(serial) received binary "5620312E3637206E616E6F43554C3836380D0A"
(cul) probe response "V 1.67 nanoCUL868<0D><0A>"
(serialtty) closed /dev/ttyUSB0 (detect cul)
(cul) are you there? yes
(main) opening /dev/ttyUSB0:cul:t1
Started config cul on /dev/ttyUSB0 listening on t1
(cul) on /dev/ttyUSB0
(serial) EVENT thread interrupted
(serial) before config: /dev/ttyUSB0 speed(B38400) input() output() control(CLOCAL|CREAD|CSIZE) local() special_chars() modem(DTR|RTS)
(serial) after config:  /dev/ttyUSB0 speed(B38400) input() output() control(CLOCAL|CREAD|CSIZE) local() special_chars() modem(DTR|RTS)
(serialtty) opened /dev/ttyUSB0 fd 3 (cul)
(main) regular reset of cul  on /dev/ttyUSB0 will happen every 82800 seconds
(cul) set link mode t
(serial /dev/ttyUSB0) sent "6272740D0A"
(serial) EVENT thread interrupted
(serial) received binary "3F202862727420697320756E6B6E6F776E2920557365206F6E65206F662041204220432045206520462066204720682069204B206B206C204D20"
(cul) checkCULFrame "? (brt is unknown) Use one of A B C E e F f G h i K k l M "
(cul) no eol found yet, partial frame
(serial) received binary "6D205220542074205520562057205820782059205A207A0D0A"
(cul) checkCULFrame "? (brt is unknown) Use one of A B C E e F f G h i K k l M m R T t U V W X x Y Z z<0D><0A>"
(cul) no leading 'b' so it is text and no frame
(wmbus device) timeout request id 1
(cul) received ""(cul) setting link mode(s) t1 is not supported for this cul device!
(serial) stopping manager

Bonjour,

Je ne connais pas cette clé, mais est-ce qu’il faut utiliser des majuscules? (BRT)

Bonjour,

Merci de la réponse.
En fait, j’ai avancé : en lisant les sources, ne me suis aperçu que le firmware de la clé a été compilé sans le support du MBUS ; à cause de limitation de taille mémoire.
C’est pour cela qu’il ne reconnaissait pas la commande brt (en fait, toute commande commancant par ‹ b ›).

Pour installer un firmware compatible, j’ai suivi cette doc :

Et j’ai installé le nouveau firmware avec les bonnes options comme ceci, depuis un linux :
# avrdude -D -p atmega328p -P /dev/ttyUSB1 -b 115200 -c arduino -U flash:w:nanoCUL_r568_mbus_c1t1_bufsize300.hex

Mon nanoCUL est maintenant capable de décoder des trames mbus.

Je continue l’exploration, je vous tiendrais au courant de la suite