Savoir/Intégration/Home Assistant

GuideM-Center

Compteurs M-Bus avec le M-Center dans Home Assistant

Home Assistant dispose d’une intégration Modbus intégrée. Elle vous permet de lire directement les valeurs de tous les compteurs raccordés à l’EMU M-Center et de réunir électricité, chaleur et eau dans le tableau de bord énergie.

Ce qu’il vous faut

  • Un M-Center configuré avec licence serveur Modbus TCP (210.300.04) ou licence MQTT (210.300.03).
  • L’adresse IP du M-Center et l’adresse d’appareil Modbus de chaque compteur.
  • Des codes OBIS saisis pour les registres à interroger.
  • L’accès au fichier configuration.yaml de Home Assistant.

Étape 1 : saisir les codes OBIS dans le M-Center

Dans le M-Center, saisissez le code OBIS pour chaque registre que Home Assistant doit recevoir. La valeur se trouve alors à une adresse fixe, par exemple l’index de soutirage tarif 1 (1-0:1.8.1) au registre 1030. Notez le « numéro d’appareil serveur Modbus TCP » de chaque compteur. Dans Home Assistant, c’est l’adresse d’appareil.

Vérifiez aussi l’unité du registre dans le M-Center. Home Assistant reprend la valeur numérique, l’unité, c’est vous qui la définissez. Si le M-Center indique Wh, saisissez Wh dans Home Assistant.

Étape 2 : configurer Modbus dans Home Assistant

Complétez le fichier configuration.yaml. L’exemple lit le soutirage tarif 1 et tarif 2 d’un compteur à l’adresse d’appareil 9 et le compteur d’eau à l’adresse 12 :

modbus:
  - name: m_center
    type: tcp
    host: 192.168.1.50      # IP du M-Center
    port: 502
    sensors:
      - name: "Logement 1 soutirage tarif 1"
        slave: 9              # adresse d'appareil dans le M-Center
        address: 1029         # registre 1030, compté dès 0
        input_type: holding
        data_type: float32
        unit_of_measurement: Wh
        device_class: energy
        state_class: total_increasing
        scan_interval: 900
      - name: "Logement 1 soutirage tarif 2"
        slave: 9
        address: 1059         # registre 1060
        input_type: holding
        data_type: float32
        unit_of_measurement: Wh
        device_class: energy
        state_class: total_increasing
        scan_interval: 900
      - name: "Logement 1 eau froide"
        slave: 12
        address: 2999         # registre 3000
        input_type: holding
        data_type: float32
        unit_of_measurement: m³    # unité comme dans le M-Center
        device_class: water
        state_class: total_increasing
        scan_interval: 900

Trois points qui posent souvent problème :

  • Adresse : le manuel compte les registres à partir de 1, Home Assistant à partir de 0. C’est pourquoi l’exemple indique 1029 pour le registre 1030. Vérifiez-le une fois avec un index connu.
  • Ordre des octets : le M-Center fournit du big endian avec le mot de poids fort en premier. Cela correspond au réglage par défaut de Home Assistant, aucun swap n’est nécessaire.
  • Nom de clé : selon la version de Home Assistant, l’adresse d’appareil s’appelle slave ou device_address. La documentation de votre version fait foi.

Le scan_interval de 900 secondes correspond à l’intervalle de relève de 15 minutes du M-Center. Interroger plus souvent n’apporte pas de valeurs plus récentes.

Étape 3 : tableau de bord énergie

Après le redémarrage, les capteurs apparaissent dans Home Assistant. Comme ils portent device_class: energy ou water et state_class: total_increasing, on peut les sélectionner sous Paramètres → Tableaux de bord → Énergie comme consommation du réseau, appareil ou consommation d’eau.

Alternative : MQTT

Si le M-Center dispose de la licence MQTT, il peut publier ses valeurs sur le broker de Home Assistant, par exemple sur le module complémentaire Mosquitto. Les topics suivent le schéma <préfixe>/emu/mcenter/<MAC>/meterreading/<numéro de série>/byobis/<code OBIS>.

Regardez les messages avant la configuration, par exemple avec MQTT Explorer ou dans l’intégration MQTT de Home Assistant sous « Écouter un topic ». Créez ensuite un capteur MQTT par topic et lisez la valeur selon le contenu du message.

Modbus est la voie la plus simple si seul Home Assistant a besoin des valeurs. MQTT vaut la peine si d’autres systèmes doivent lire en parallèle.

Questions fréquentes


De quelle licence ai-je besoin pour Home Assistant ?

Pour Modbus, la licence serveur Modbus TCP 210.300.04, pour MQTT la licence MQTT 210.300.03. Une seule suffit.

Pourquoi Home Assistant affiche-t-il une valeur erronée ?

Le plus souvent, l’adresse est décalée de un ou il s’agit du mauvais registre. Pour comparer, lisez la même valeur avec modpoll ou un autre outil Modbus et comparez-la à l’index dans le M-Center.

Puis-je utiliser float32 ou uint64 ?

Les deux. float32 est plus simple mais arrondit les très grands index. Pour uint64 (registre 1032 au lieu de 1030), réglez data_type: uint64.

À lire aussi


SEITEM-Bus vers Modbus TCPTable des registres SEITEM-Bus vers MQTTStructure des topics SEITEMise en service du M-CenterGuide SEITEAutres intégrationsVue d’ensemble

Des questions sur l’intégration ?


Envoyez-nous votre liste de compteurs et la configuration. Nous vous aidons pour les adresses et les codes OBIS.

Téléphone
+41 (0)41 545 03 00

Support technique
helpdesk [at] emuag.ch
Formulaire de support →