Viden/Integration/Home Assistant

VejledningM-Center

M-Bus-målere med M-Center i Home Assistant

Home Assistant har en indbygget Modbus-integration. Med den læser du direkte værdierne fra alle målere, der er tilsluttet EMU M-Center, og samler el, varme og vand i energipanelet.

Det skal du bruge

  • Et konfigureret M-Center med licensen Modbus TCP-server (210.300.04) eller MQTT-licensen (210.300.03).
  • IP-adressen for M-Center og Modbus-enhedsadressen for hver måler.
  • OBIS-koder angivet for de registre, der skal læses.
  • Adgang til configuration.yaml i Home Assistant.

Trin 1: angiv OBIS-koder i M-Center

Angiv i M-Center OBIS-koden for hvert register, der skal til Home Assistant. Så har værdien en fast adresse, f.eks. forbrug tarif 1 (1-0:1.8.1) i register 1030. Noter for hver måler «Modbus TCP-server enhedsnummer». I Home Assistant er det enhedsadressen.

Kontroller også registrets enhed i M-Center. Home Assistant overtager talværdien, enheden angiver du selv. Står der Wh i M-Center, angiver du Wh i Home Assistant.

Trin 2: konfigurer Modbus i Home Assistant

Udvid configuration.yaml. Eksemplet læser forbrug i tarif 1 og 2 for en måler med enhedsadresse 9 og en vandmåler med adresse 12:

modbus:
  - name: m_center
    type: tcp
    host: 192.168.1.50      # IP for M-Center
    port: 502
    sensors:
      - name: "Lejlighed 1 forbrug T1"
        slave: 9              # enhedsadresse i M-Center
        address: 1029         # register 1030, talt fra 0
        input_type: holding
        data_type: float32
        unit_of_measurement: Wh
        device_class: energy
        state_class: total_increasing
        scan_interval: 900
      - name: "Lejlighed 1 forbrug 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: "Lejlighed 1 koldt vand"
        slave: 12
        address: 2999         # register 3000
        input_type: holding
        data_type: float32
        unit_of_measurement: m³    # enhed som i M-Center
        device_class: water
        state_class: total_increasing
        scan_interval: 900

Tre steder, hvor det ofte ikke virker:

  • Adresse: manualen tæller registre fra 1, Home Assistant fra 0. Derfor står der 1029 for register 1030 i eksemplet. Kontroller én gang mod en kendt målerstand.
  • Byterækkefølge: M-Center leverer big endian med det høje ord først. Det svarer til standardindstillingen i Home Assistant, der skal ikke bruges swap.
  • Nøglenavn: afhængigt af Home Assistant-version hedder enhedsadressen slave eller device_address. Dokumentationen for din version gælder.

scan_interval 900 sekunder svarer til M-Centers aflæsningsinterval på 15 minutter. At spørge oftere giver ikke nyere værdier.

Trin 3: energipanelet

Efter en genstart vises sensorerne i Home Assistant. Da de har device_class: energy eller water og state_class: total_increasing, kan du vælge dem under Indstillinger → Dashboards → Energi som netforbrug, enhed eller vandforbrug.

Alternativ: MQTT

Har M-Center MQTT-licensen, kan den publicere værdierne til Home Assistants broker, f.eks. tilføjelsen Mosquitto. Topics følger mønstret <præfiks>/emu/mcenter/<MAC>/meterreading/<serienummer>/byobis/<OBIS-kode>.

Se beskederne igennem før konfigurationen, f.eks. i MQTT Explorer eller i Home Assistants MQTT-integration under «Lyt til et topic». Opret derefter én MQTT-sensor pr. topic, og læs værdien efter beskedens indhold.

Modbus er den enklere vej, hvis kun Home Assistant skal bruge værdierne. MQTT betaler sig, når også andre systemer skal læse med.

Ofte stillede spørgsmål


Hvilken licens skal jeg bruge til Home Assistant?

Til Modbus licensen Modbus TCP-server 210.300.04, til MQTT MQTT-licensen 210.300.03. Én af dem er nok.

Hvorfor viser Home Assistant en forkert værdi?

Oftest er adressen forskudt med én, eller det er det forkerte register. Læs til sammenligning den samme værdi med modpoll eller et andet Modbus-værktøj, og sammenlign med standen i M-Center.

Kan jeg bruge float32 eller uint64?

Begge. float32 er enklere, men afrunder meget store målerstande. Til uint64 (register 1032 i stedet for 1030) indstiller du data_type: uint64.

Læs mere


SEITEM-Bus til Modbus TCPRegisteroversigt SEITEM-Bus til MQTTTopic-struktur SEITEIdriftsættelse af M-CenterVejledning SEITEFlere integrationerOversigt

Spørgsmål om integrationen?


Send os målerlisten og din konfiguration. Vi hjælper med adresser og OBIS-koder.

Telefon
+41 (0)41 545 03 00

Teknisk support
helpdesk [at] emuag.ch
Supportformular →