Wissen/Integration/Home Assistant

AnleitungM-Center

M-Bus-Zähler mit dem M-Center in Home Assistant

Home Assistant hat eine eingebaute Modbus-Integration. Damit lesen Sie die Werte aller Zähler am EMU M-Center direkt aus und führen Elektrizität, Wärme und Wasser im Energie-Dashboard zusammen.

Das brauchen Sie

  • Ein eingerichtetes M-Center mit Modbus-TCP-Server-Lizenz (210.300.04) oder MQTT-Lizenz (210.300.03).
  • Die IP-Adresse des M-Centers und die Modbus-Geräteadresse jedes Zählers.
  • Hinterlegte OBIS-Codes bei den Registern, die Sie abfragen wollen.
  • Zugriff auf die configuration.yaml von Home Assistant.

Schritt 1: OBIS-Codes im M-Center hinterlegen

Hinterlegen Sie im M-Center bei jedem Register, das Home Assistant bekommen soll, den OBIS-Code. Dann liegt der Wert an einer festen Adresse, zum Beispiel der Zählerstand Bezug Tarif 1 (1-0:1.8.1) an Register 1030. Notieren Sie für jeden Zähler die «Modbus TCP Server Gerätenummer». Sie ist in Home Assistant die Geräteadresse.

Prüfen Sie auch die Einheit des Registers im M-Center. Home Assistant übernimmt den Zahlenwert, die Einheit legen Sie selbst fest. Steht im M-Center Wh, tragen Sie in Home Assistant Wh ein.

Schritt 2: Modbus in Home Assistant einrichten

Ergänzen Sie die configuration.yaml. Das Beispiel liest Bezug Tarif 1 und Tarif 2 eines Zählers mit Geräteadresse 9 und den Wasserzähler mit Adresse 12:

modbus:
  - name: m_center
    type: tcp
    host: 192.168.1.50      # IP des M-Centers
    port: 502
    sensors:
      - name: "Wohnung 1 Bezug Tarif 1"
        slave: 9              # Geräteadresse im M-Center
        address: 1029         # Register 1030, ab 0 gezählt
        input_type: holding
        data_type: float32
        unit_of_measurement: Wh
        device_class: energy
        state_class: total_increasing
        scan_interval: 900
      - name: "Wohnung 1 Bezug Tarif 2"
        slave: 9
        address: 1059         # Register 1060
        input_type: holding
        data_type: float32
        unit_of_measurement: Wh
        device_class: energy
        state_class: total_increasing
        scan_interval: 900
      - name: "Wohnung 1 Kaltwasser"
        slave: 12
        address: 2999         # Register 3000
        input_type: holding
        data_type: float32
        unit_of_measurement: m³    # Einheit wie im M-Center
        device_class: water
        state_class: total_increasing
        scan_interval: 900

Drei Punkte, an denen es oft hakt:

  • Adresse: Das Handbuch zählt die Register ab 1, Home Assistant ab 0. Deshalb steht im Beispiel 1029 für Register 1030. Prüfen Sie das einmal mit einem bekannten Zählerstand.
  • Byte-Reihenfolge: Das M-Center liefert Big Endian mit dem höherwertigen Wort zuerst. Das entspricht der Grundeinstellung von Home Assistant, ein swap ist nicht nötig.
  • Schlüsselname: Je nach Home-Assistant-Version heisst die Geräteadresse slave oder device_address. Massgebend ist die Dokumentation Ihrer Version.

Das scan_interval von 900 Sekunden entspricht dem Ausleseintervall des M-Centers von 15 Minuten. Häufiger abzufragen bringt keine neueren Werte.

Schritt 3: Energie-Dashboard

Nach dem Neustart erscheinen die Sensoren in Home Assistant. Weil sie device_class: energy bzw. water und state_class: total_increasing tragen, lassen sie sich unter Einstellungen → Dashboards → Energie als Netzbezug, Gerät oder Wasserverbrauch auswählen.

Alternative: MQTT

Hat das M-Center die MQTT-Lizenz, kann es seine Werte an den Broker von Home Assistant publizieren, zum Beispiel an das Mosquitto-Add-on. Die Topics folgen dem Schema <Präfix>/emu/mcenter/<MAC>/meterreading/<Seriennummer>/byobis/<OBIS-Code>.

Sehen Sie sich die Nachrichten vor dem Einrichten an, etwa mit MQTT Explorer oder in der MQTT-Integration von Home Assistant unter «Auf ein Topic hören». Danach legen Sie für jedes Topic einen MQTT-Sensor an und lesen den Wert passend zum Nachrichteninhalt aus.

Modbus ist der einfachere Weg, wenn nur Home Assistant die Werte braucht. MQTT lohnt sich, wenn weitere Systeme mitlesen sollen.

Häufige Fragen


Welche Lizenz brauche ich für Home Assistant?

Für Modbus die Modbus-TCP-Server-Lizenz 210.300.04, für MQTT die MQTT-Lizenz 210.300.03. Eine reicht.

Warum zeigt Home Assistant einen falschen Wert?

Meist stimmt die Adresse um eins nicht oder es ist das falsche Register. Lesen Sie zum Vergleich mit modpoll oder einem anderen Modbus-Werkzeug denselben Wert und vergleichen Sie mit dem Zählerstand im M-Center.

Kann ich float32 oder uint64 nehmen?

Beides. float32 ist einfacher, rundet aber sehr grosse Zählerstände. Für uint64 (Register 1032 statt 1030) setzen Sie data_type: uint64.

Weiterlesen


SEITEM-Bus zu Modbus TCPRegistertabelle SEITEM-Bus zu MQTTTopic-Struktur SEITEM-Center in Betrieb nehmenAnleitung SEITEWeitere IntegrationenÜbersicht

Fragen zur Einbindung?


Schicken Sie uns Ihre Zählerliste und die Konfiguration. Wir helfen bei Adressen und OBIS-Codes.

Telefon
+41 (0)41 545 03 00

Technischer Support
helpdesk [at] emuag.ch
Supportformular →