Wiedza/Integracja/Home Assistant

InstrukcjaM-Center

Liczniki M-Bus z M-Center w Home Assistant

Home Assistant ma wbudowaną integrację Modbus. Dzięki niej odczytuje się bezpośrednio wartości wszystkich liczników podłączonych do EMU M-Center i łączy energię elektryczną, ciepło i wodę w panelu energii.

Co jest potrzebne

  • Skonfigurowany M-Center z licencją serwera Modbus TCP (210.300.04) lub licencją MQTT (210.300.03).
  • Adres IP M-Center i adres urządzenia Modbus każdego licznika.
  • Kody OBIS wpisane przy rejestrach, które mają być odczytywane.
  • Dostęp do configuration.yaml Home Assistant.

Krok 1: wpisać kody OBIS w M-Center

W M-Center proszę wpisać kod OBIS przy każdym rejestrze, który ma trafić do Home Assistant. Wtedy wartość ma stały adres, np. stan poboru w taryfie 1 (1-0:1.8.1) w rejestrze 1030. Dla każdego licznika proszę zanotować «numer urządzenia serwera Modbus TCP». W Home Assistant jest to adres urządzenia.

Proszę sprawdzić także jednostkę rejestru w M-Center. Home Assistant przejmuje wartość liczbową, jednostkę ustala się samodzielnie. Jeśli w M-Center jest Wh, w Home Assistant należy wpisać Wh.

Krok 2: skonfigurować Modbus w Home Assistant

Proszę uzupełnić configuration.yaml. Przykład odczytuje pobór w taryfie 1 i 2 licznika o adresie urządzenia 9 oraz wodomierz o adresie 12:

modbus:
  - name: m_center
    type: tcp
    host: 192.168.1.50      # IP M-Center
    port: 502
    sensors:
      - name: "Mieszkanie 1 pobor taryfa 1"
        slave: 9              # adres urządzenia w M-Center
        address: 1029         # rejestr 1030, liczony od 0
        input_type: holding
        data_type: float32
        unit_of_measurement: Wh
        device_class: energy
        state_class: total_increasing
        scan_interval: 900
      - name: "Mieszkanie 1 pobor taryfa 2"
        slave: 9
        address: 1059         # rejestr 1060
        input_type: holding
        data_type: float32
        unit_of_measurement: Wh
        device_class: energy
        state_class: total_increasing
        scan_interval: 900
      - name: "Mieszkanie 1 woda zimna"
        slave: 12
        address: 2999         # rejestr 3000
        input_type: holding
        data_type: float32
        unit_of_measurement: m³    # jednostka jak w M-Center
        device_class: water
        state_class: total_increasing
        scan_interval: 900

Trzy miejsca, w których często coś nie działa:

  • Adres: instrukcja liczy rejestry od 1, Home Assistant od 0. Dlatego w przykładzie jest 1029 dla rejestru 1030. Proszę raz sprawdzić na znanym stanie licznika.
  • Kolejność bajtów: M-Center dostarcza big endian ze starszym słowem na początku. Odpowiada to ustawieniu domyślnemu Home Assistant, swap nie jest potrzebny.
  • Nazwa klucza: zależnie od wersji Home Assistant adres urządzenia nazywa się slave lub device_address. Decyduje dokumentacja posiadanej wersji.

scan_interval 900 sekund odpowiada interwałowi odczytu M-Center wynoszącemu 15 minut. Częstsze odpytywanie nie daje nowszych wartości.

Krok 3: panel energii

Po ponownym uruchomieniu czujniki pojawiają się w Home Assistant. Ponieważ mają device_class: energy lub water i state_class: total_increasing, można je wybrać w Ustawienia → Pulpity → Energia jako pobór z sieci, urządzenie lub zużycie wody.

Alternatywa: MQTT

Jeśli M-Center ma licencję MQTT, może publikować wartości w brokerze Home Assistant, np. w dodatku Mosquitto. Tematy mają schemat <prefiks>/emu/mcenter/<MAC>/meterreading/<numer seryjny>/byobis/<kod OBIS>.

Przed konfiguracją proszę obejrzeć wiadomości, np. w MQTT Explorer lub w integracji MQTT Home Assistant pod «Nasłuchuj tematu». Następnie dla każdego tematu tworzy się czujnik MQTT i odczytuje wartość zgodnie z treścią wiadomości.

Modbus jest prostszą drogą, jeśli wartości potrzebuje tylko Home Assistant. MQTT opłaca się, gdy mają je odczytywać także inne systemy.

Najczęstsze pytania


Jakiej licencji potrzebuję dla Home Assistant?

Dla Modbus licencji serwera Modbus TCP 210.300.04, dla MQTT licencji MQTT 210.300.03. Wystarczy jedna.

Dlaczego Home Assistant pokazuje błędną wartość?

Najczęściej adres jest przesunięty o jeden lub to niewłaściwy rejestr. Dla porównania proszę odczytać tę samą wartość narzędziem modpoll lub innym narzędziem Modbus i porównać ze stanem w M-Center.

Czy mogę użyć float32 lub uint64?

Obu. float32 jest prostszy, ale zaokrągla bardzo duże stany liczników. Dla uint64 (rejestr 1032 zamiast 1030) proszę ustawić data_type: uint64.

Czytaj dalej


SEITEM-Bus do Modbus TCPMapa rejestrów SEITEM-Bus do MQTTStruktura tematów SEITEUruchomienie M-CenterInstrukcja SEITEWięcej integracjiPrzegląd

Pytania dotyczące integracji?


Proszę przesłać listę liczników i konfigurację. Pomożemy z adresami i kodami OBIS.

Telefon
+41 (0)41 545 03 00

Wsparcie techniczne
helpdesk [at] emuag.ch
Formularz wsparcia →