Passo 1: Telegraf legge via Modbus TCP
Telegraf ha un plugin di input Modbus. Per ogni contatore create un blocco con il suo indirizzo di dispositivo. L’esempio legge prelievo e immissione di un contatore di elettricità con indirizzo di dispositivo 9:
[[inputs.modbus]]
name = "m_center"
controller = "tcp://192.168.1.50:502"
slave_id = 9
timeout = "5s"
interval = "15m"
holding_registers = [
{ name = "prelievo_totale", byte_order = "ABCD", data_type = "FLOAT32-IEEE", scale = 1.0, address = [999, 1000] },
{ name = "immissione_totale", byte_order = "ABCD", data_type = "FLOAT32-IEEE", scale = 1.0, address = [1149, 1150] },
]
[inputs.modbus.tags]
contatore = "appartamento_1"
Telegraf conta gli indirizzi da 0, il manuale da 1: il registro 1000 diventa 999. L’ordine dei byte ABCD corrisponde a big endian con la parola alta per prima, come la fornisce l’M-Center. La sintassi delle opzioni cambia tra le versioni di Telegraf; fa fede la documentazione del plugin della vostra versione.
Alternativa: Telegraf legge via MQTT
Con la licenza MQTT Telegraf si abbona ai topic dell’M-Center con il plugin inputs.mqtt_consumer:
<prefisso>/emu/mcenter/<MAC>/meterreading/+/byobis/#
Come Telegraf interpreta i messaggi si stabilisce con data_format. Osservate quindi prima il contenuto dei messaggi con un client MQTT.
Passo 2: InfluxDB e Grafana
- In Telegraf impostare l’output su InfluxDB (
outputs.influxdb_v2con URL, token, organizzazione e bucket). - In Grafana aggiungere InfluxDB come sorgente dati.
- Creare un pannello e interrogare la misura. Per i consumi giornalieri o mensili calcolate la differenza della lettura nella finestra temporale.
Le letture salgono sempre. Un istogramma con il consumo giornaliero è quindi di solito più eloquente della curva della lettura.