Krok 1: Telegraf czyta przez Modbus TCP
Telegraf ma wtyczkę wejściową Modbus. Dla każdego licznika tworzy się blok z jego adresem urządzenia. Przykład odczytuje pobór i oddawanie licznika energii elektrycznej o adresie urządzenia 9:
[[inputs.modbus]]
name = "m_center"
controller = "tcp://192.168.1.50:502"
slave_id = 9
timeout = "5s"
interval = "15m"
holding_registers = [
{ name = "pobor_lacznie", byte_order = "ABCD", data_type = "FLOAT32-IEEE", scale = 1.0, address = [999, 1000] },
{ name = "oddawanie_lacznie", byte_order = "ABCD", data_type = "FLOAT32-IEEE", scale = 1.0, address = [1149, 1150] },
]
[inputs.modbus.tags]
licznik = "mieszkanie_1"
Telegraf liczy adresy od 0, instrukcja od 1: rejestr 1000 staje się 999. Kolejność bajtów ABCD odpowiada big endian ze starszym słowem na początku, tak jak dostarcza M-Center. Zapis opcji zmienia się między wersjami Telegraf; decyduje dokumentacja wtyczki posiadanej wersji.
Alternatywa: Telegraf czyta przez MQTT
Z licencją MQTT Telegraf subskrybuje tematy M-Center za pomocą wtyczki inputs.mqtt_consumer:
<prefiks>/emu/mcenter/<MAC>/meterreading/+/byobis/#
To, jak Telegraf przetwarza wiadomości, ustala się parametrem data_format. Dlatego warto najpierw obejrzeć treść wiadomości klientem MQTT.
Krok 2: InfluxDB i Grafana
- W Telegraf ustawić wyjście na InfluxDB (
outputs.influxdb_v2z URL, tokenem, organizacją i bucketem). - W Grafana dodać InfluxDB jako źródło danych.
- Utworzyć panel i odpytać wartość pomiarową. Dla zużycia na dzień lub miesiąc oblicza się różnicę stanu licznika w oknie czasowym.
Stany liczników tylko rosną. Wykres słupkowy ze zużyciem dziennym jest więc zwykle bardziej wymowny niż krzywa stanu licznika.