Conoscenza/Integrazione/Home Assistant

GuidaM-Center

Contatori M-Bus con l’M-Center in Home Assistant

Home Assistant dispone di un’integrazione Modbus incorporata. Con essa leggete direttamente i valori di tutti i contatori collegati all’EMU M-Center e riunite elettricità, calore e acqua nella dashboard energia.

Cosa serve

  • Un M-Center configurato con licenza server Modbus TCP (210.300.04) o licenza MQTT (210.300.03).
  • L’indirizzo IP dell’M-Center e l’indirizzo di dispositivo Modbus di ogni contatore.
  • Codici OBIS inseriti per i registri da interrogare.
  • Accesso al file configuration.yaml di Home Assistant.

Passo 1: inserire i codici OBIS nell’M-Center

Nell’M-Center inserite il codice OBIS per ogni registro che Home Assistant deve ricevere. Il valore si trova allora a un indirizzo fisso, ad esempio la lettura del prelievo tariffa 1 (1-0:1.8.1) al registro 1030. Annotate per ogni contatore il «numero di dispositivo server Modbus TCP». In Home Assistant è l’indirizzo del dispositivo.

Verificate anche l’unità del registro nell’M-Center. Home Assistant riprende il valore numerico, l’unità la definite voi. Se nell’M-Center c’è Wh, inserite Wh in Home Assistant.

Passo 2: configurare Modbus in Home Assistant

Completate il file configuration.yaml. L’esempio legge prelievo tariffa 1 e tariffa 2 di un contatore con indirizzo di dispositivo 9 e il contatore d’acqua con indirizzo 12:

modbus:
  - name: m_center
    type: tcp
    host: 192.168.1.50      # IP dell'M-Center
    port: 502
    sensors:
      - name: "Appartamento 1 prelievo tariffa 1"
        slave: 9              # indirizzo di dispositivo nell'M-Center
        address: 1029         # registro 1030, contato da 0
        input_type: holding
        data_type: float32
        unit_of_measurement: Wh
        device_class: energy
        state_class: total_increasing
        scan_interval: 900
      - name: "Appartamento 1 prelievo tariffa 2"
        slave: 9
        address: 1059         # registro 1060
        input_type: holding
        data_type: float32
        unit_of_measurement: Wh
        device_class: energy
        state_class: total_increasing
        scan_interval: 900
      - name: "Appartamento 1 acqua fredda"
        slave: 12
        address: 2999         # registro 3000
        input_type: holding
        data_type: float32
        unit_of_measurement: m³    # unità come nell'M-Center
        device_class: water
        state_class: total_increasing
        scan_interval: 900

Tre punti in cui spesso qualcosa non funziona:

  • Indirizzo: il manuale conta i registri da 1, Home Assistant da 0. Per questo nell’esempio c’è 1029 per il registro 1030. Verificatelo una volta con una lettura nota.
  • Ordine dei byte: l’M-Center fornisce big endian con la parola più significativa per prima. Corrisponde all’impostazione predefinita di Home Assistant, non serve swap.
  • Nome della chiave: a seconda della versione di Home Assistant l’indirizzo del dispositivo si chiama slave o device_address. Fa fede la documentazione della vostra versione.

Lo scan_interval di 900 secondi corrisponde all’intervallo di lettura dell’M-Center di 15 minuti. Interrogare più spesso non porta valori più recenti.

Passo 3: dashboard energia

Dopo il riavvio i sensori compaiono in Home Assistant. Poiché portano device_class: energy o water e state_class: total_increasing, si possono selezionare in Impostazioni → Plance → Energia come consumo dalla rete, dispositivo o consumo d’acqua.

Alternativa: MQTT

Se l’M-Center ha la licenza MQTT, può pubblicare i suoi valori sul broker di Home Assistant, ad esempio sul componente aggiuntivo Mosquitto. I topic seguono lo schema <prefisso>/emu/mcenter/<MAC>/meterreading/<numero di serie>/byobis/<codice OBIS>.

Osservate i messaggi prima della configurazione, ad esempio con MQTT Explorer o nell’integrazione MQTT di Home Assistant alla voce «Ascolta un topic». Poi create un sensore MQTT per ogni topic e leggete il valore in base al contenuto del messaggio.

Modbus è la via più semplice se solo Home Assistant ha bisogno dei valori. MQTT conviene se devono leggere anche altri sistemi.

Domande frequenti


Quale licenza serve per Home Assistant?

Per Modbus la licenza server Modbus TCP 210.300.04, per MQTT la licenza MQTT 210.300.03. Ne basta una.

Perché Home Assistant mostra un valore sbagliato?

Di solito l’indirizzo è sfasato di uno o si tratta del registro sbagliato. Per confronto leggete lo stesso valore con modpoll o un altro strumento Modbus e confrontatelo con la lettura nell’M-Center.

Posso usare float32 o uint64?

Entrambi. float32 è più semplice ma arrotonda le letture molto grandi. Per uint64 (registro 1032 invece di 1030) impostate data_type: uint64.

Per approfondire


SEITEM-Bus su Modbus TCPTabella dei registri SEITEM-Bus su MQTTStruttura dei topic SEITEMessa in servizio dell’M-CenterGuida SEITEAltre integrazioniPanoramica

Domande sull’integrazione?


Inviateci l’elenco dei contatori e la configurazione. Vi aiutiamo con indirizzi e codici OBIS.

Telefono
+41 (0)41 545 03 00

Supporto tecnico
helpdesk [at] emuag.ch
Modulo di supporto →