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
slaveodevice_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.