Kunskap/Integration/Home Assistant

GuideM-Center

M-Bus-mätare med M-Center i Home Assistant

Home Assistant har en inbyggd Modbus-integration. Med den läser du direkt värdena från alla mätare som är anslutna till EMU M-Center och samlar el, värme och vatten i energipanelen.

Vad du behöver

  • Ett konfigurerat M-Center med licensen Modbus TCP-server (210.300.04) eller MQTT-licensen (210.300.03).
  • IP-adressen för M-Center och Modbus-enhetsadressen för varje mätare.
  • OBIS-koder angivna för de register som ska läsas.
  • Tillgång till configuration.yaml i Home Assistant.

Steg 1: ange OBIS-koder i M-Center

Ange i M-Center OBIS-koden för varje register som ska till Home Assistant. Då har värdet en fast adress, t.ex. förbrukning tariff 1 (1-0:1.8.1) i register 1030. Notera för varje mätare «Modbus TCP-server enhetsnummer». I Home Assistant är det enhetsadressen.

Kontrollera även registrets enhet i M-Center. Home Assistant tar över talvärdet, enheten anger du själv. Står det Wh i M-Center anger du Wh i Home Assistant.

Steg 2: konfigurera Modbus i Home Assistant

Komplettera configuration.yaml. Exemplet läser förbrukning i tariff 1 och 2 för en mätare med enhetsadress 9 och en vattenmätare med adress 12:

modbus:
  - name: m_center
    type: tcp
    host: 192.168.1.50      # IP för M-Center
    port: 502
    sensors:
      - name: "Lagenhet 1 forbrukning T1"
        slave: 9              # enhetsadress i M-Center
        address: 1029         # register 1030, räknat från 0
        input_type: holding
        data_type: float32
        unit_of_measurement: Wh
        device_class: energy
        state_class: total_increasing
        scan_interval: 900
      - name: "Lagenhet 1 forbrukning T2"
        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: "Lagenhet 1 kallvatten"
        slave: 12
        address: 2999         # register 3000
        input_type: holding
        data_type: float32
        unit_of_measurement: m³    # enhet som i M-Center
        device_class: water
        state_class: total_increasing
        scan_interval: 900

Tre ställen där det ofta inte fungerar:

  • Adress: manualen räknar register från 1, Home Assistant från 0. Därför står det 1029 för register 1030 i exemplet. Kontrollera en gång mot en känd mätarställning.
  • Byteordning: M-Center levererar big endian med det högre ordet först. Det motsvarar standardinställningen i Home Assistant, ingen swap behövs.
  • Nyckelnamn: beroende på Home Assistant-version heter enhetsadressen slave eller device_address. Dokumentationen för din version gäller.

scan_interval 900 sekunder motsvarar M-Centers avläsningsintervall på 15 minuter. Att fråga oftare ger inga nyare värden.

Steg 3: energipanelen

Efter en omstart visas sensorerna i Home Assistant. Eftersom de har device_class: energy eller water och state_class: total_increasing kan du välja dem under Inställningar → Kontrollpaneler → Energi som nätförbrukning, enhet eller vattenförbrukning.

Alternativ: MQTT

Om M-Center har MQTT-licensen kan den publicera värdena till Home Assistants broker, t.ex. tillägget Mosquitto. Topics följer mönstret <prefix>/emu/mcenter/<MAC>/meterreading/<serienummer>/byobis/<OBIS-kod>.

Titta på meddelandena före konfigurationen, t.ex. i MQTT Explorer eller i Home Assistants MQTT-integration under «Lyssna på ett topic». Skapa sedan en MQTT-sensor per topic och läs värdet enligt meddelandets innehåll.

Modbus är den enklare vägen om bara Home Assistant behöver värdena. MQTT lönar sig när även andra system ska läsa med.

Vanliga frågor


Vilken licens behöver jag för Home Assistant?

För Modbus licensen Modbus TCP-server 210.300.04, för MQTT MQTT-licensen 210.300.03. En av dem räcker.

Varför visar Home Assistant fel värde?

Oftast är adressen förskjuten med ett eller det är fel register. Läs som jämförelse samma värde med modpoll eller ett annat Modbus-verktyg och jämför med ställningen i M-Center.

Kan jag använda float32 eller uint64?

Båda. float32 är enklare, men avrundar mycket stora mätarställningar. För uint64 (register 1032 i stället för 1030) ställer du in data_type: uint64.

Läs mer


SEITEM-Bus till Modbus TCPRegisterkarta SEITEM-Bus till MQTTTopic-struktur SEITEIdrifttagning av M-CenterGuide SEITEFler integrationerÖversikt

Frågor om integrationen?


Skicka oss mätarlistan och din konfiguration. Vi hjälper dig med adresser och OBIS-koder.

Telefon
+41 (0)41 545 03 00

Teknisk support
helpdesk [at] emuag.ch
Supportformulär →