Décoder des trames wmbus d'un compteur d'eau extérieur Izar

Bonjour a tous,

J’ai enfin réussi a faire fonctionner le combo esp32/CC1101 qui remplace avantageusement raspberry/clé RTL-SDR
le trame est envoyée vers le plugin wmbusmeters HA addon qui renvoie les infos décodées sur le serveur MQTT.
Je souhaite monitorer un compteur extérieur a ma maison et je ne veux pas ouvrir des ports vers l’addon wmbusmeters.
Mes capteurs extérieurs communiquent avec HA par un broker MQTT Externe pour lequel j’ai configuré un bridge avec le broker local.

Comment puis-je décoder une trame qui arrive par le canal MQTT du coup?
Ou directement la décoder dans l’ESP32 afin d’envoyer les valeurs dans le MQTT

Merci pour vos idées :slight_smile:

Ma configuration


version | core-2024.12.3

– | –
installation_type | Home Assistant OS
dev | false
hassio | true
docker | true
user | root
virtualenv | false
python_version | 3.13.0
os_name | Linux
os_version | 6.6.63-haos
arch | x86_64
timezone | Europe/Paris
config_dir | /config

Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
HACS Data ok
GitHub API Calls Remaining 5000
Installed Version 2.0.1
Stage running
Available Repositories 1492
Downloaded Repositories 2
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 14.0
update_channel stable
supervisor_version supervisor-2024.12.0
agent_version 1.6.0
docker_version 27.2.0
disk_total 30.8 GB
disk_used 16.5 GB
healthy true
supported true
host_connectivity true
supervisor_connectivity true
ntp_synchronized true
virtualization kvm
board ova
supervisor_api ok
version_api ok
installed_addons Studio Code Server (5.17.3), eWeLink Smart Home (1.4.3), ESPHome Device Compiler (2024.11.3), Tailscale (0.24.0), SQLite Web (4.3.0), Terminal & SSH (9.16.0), Duck DNS (1.18.0), Node-RED (18.1.1), Home Assistant Google Drive Backup (0.112.1), Get HACS (1.3.1), Wmbusmeters (W-MBus to MQTT) (1.18.0-RC1)
Dashboards
dashboards 5
resources 0
views 4
mode storage
Recorder
oldest_recorder_run 5 décembre 2024 à 16:07
current_recorder_run 14 décembre 2024 à 16:07
estimated_db_size 320.96 MiB
database_engine sqlite
database_version 3.45.3
___

Bon, je me réponds :slight_smile:
J’ai réussi a décoder les trames sans l’addon juste avec ce morceau de code
Ca pars donc sur le MQTT sans problème
Je galère encore avec le timestamp que je voudrai avoir également
« timestamp »:« 2024-12-19T10:41:27Z »
Il me demande une unité et je ne trouve pas quoi mettre

sensor:
  - platform: wmbus
    meter_id: 0x11111111
    type: izar
    key: ""
    sensors:
      - name: "Water_Meter RSSi"
        field: "rssi"
        accuracy_decimals: 0
        unit_of_measurement: "dBm"
        device_class: "signal_strength"
        state_class: "measurement"
        entity_category: "diagnostic"
      - name: "Water_Meter Total"
        field: "total"
        accuracy_decimals: 3
        unit_of_measurement: "m³"
        device_class: "water"
        state_class: "total_increasing"
        icon: "mdi:water"

Bonjour,

Je suis très intéressé.

Je viens d’approvisionner un circuit avec un CC1101 et un connecteur pour une antenne.

Je souhaite recevoir les trames et les trier (je reçois les infos d’un certain nombre de compteurs du quartier) avec un ESP32 puis transmettre le « télégramme » qui me concerne vers le mini PC sur lequel est installé HA pour décodage.

Il existe 3 formats de « télégrammes » envoyés par le compteur :

telegram=|3E44A511626950137B077A0D0030052F2F_0413ACF101000FA5110100010100000000000031A11B1E3B2E072B0C710C760BE40BF40E1C0D730C3A0C020C330B|
telegram=|2E44A511626950137B077A0E0020252F2F_0413ACF101000FA5110100010100000000000031A1131E3B2E072B0C710C|
telegram=|1E44A511626950137B077A0E0010052F2F_0413ACF1010002FD1700002F2F2F|

Je crois que seul le plus court est décoder par WMbusMeter. Je vais essayer de récupérer les autres informations contenues dans les « télégrammes » plus long.

En quel langage as tu codé la partie réception ? Le code est t’il disponible ?

Bonjour,

Je suis parti de ce message pour y arriver.

Le partie la plus importante du code est

captive_portal:
    
time:
  platform: sntp
  id: time_sntp

external_components:
  - source: github://SzczepanLeon/esphome-components@main
    refresh: 0d
    components: [ wmbus ]

## ------------------------------------------------------------------
##           WMBUS CC1101 --> ESP32 az-delivery-devkit-v4
## ------------------------------------------------------------------
##
##
##                                                               o 1 (3.3V)
##                                                               |
##   ╭――x――x――x――x――x――x――x――x――x――x――x――x――x――x――x――x――x――x――x――o―╮
##   |                                                             |
##   |                          EP32                               |
## - | 5v               az-delivery-devkit-v4                      | -- ANT
##   |                                                             |
##   |                          16 17 5  18 19               23    |
##   ╰――x――x――x――x――x――x――x――x――o――x――o――o――o――o――o――o――o――o――o――o―╯
##                              |  |  |  |  |                 |   |
##                              o  |  |  o  |                 |   ╰-o - 2 (GND)
##                              7  o  |  4  o                 o
##                            GDO0 6  | CLK 5                 3
##                               GD02 o    MISO              M0SI
##                                    8
##                                   CSN
##
## ------------------------------------------------------------------
wmbus:
  mosi_pin: GPIO23  ## SI:   braun   3: MOSI Attached to Hardware SPI controller MOSI SPI Interface
  miso_pin: GPIO19  ## SO:   grün    5: MISO Attached to Hardware SPI controller MISO SPI Interface
  clk_pin: GPIO18   ## SCLK: violett 4: SCK  Attached to Hardware SPI controller CLK
  cs_pin: GPIO05    ## CSN:  orange  8: CSN  Attached to Hardware SPI controller
  gdo0_pin: GPIO16  ## GD00: gelb    7: RX Clock output. High Impedance !
  gdo2_pin: GPIO17  ## GD02: weiss   6: TX FIFO status signals. High Impedance !
  
  all_drivers: True
  log_all: True



switch:
  - platform: restart
    name: "esp_water_reboot"

sensor:
  - platform: wmbus
    meter_id: 0x######## # a remplacer par votre compteur
    type: izar
    key: ""

OK merci, c’est de l’EspHome.

Je pensais à du code écrit par toi.

Bon, pour finir j’ai simplement laissé

sensor:
  - platform: wmbus
    meter_id: 0x11111111
    type: izar
    key: ""

Je récupère ensuite dans le topic wmbus les valeurs json qui m’intéressent en les définissant dans le configuration.yaml