Schritt 1: Telegraf liest per Modbus TCP
Telegraf hat ein Modbus-Eingabe-Plugin. Pro Zähler legen Sie einen Block mit seiner Geräteadresse an. Das Beispiel liest Bezug und Lieferung eines Elektrizitätszählers mit Geräteadresse 9:
[[inputs.modbus]]
name = "m_center"
controller = "tcp://192.168.1.50:502"
slave_id = 9
timeout = "5s"
interval = "15m"
holding_registers = [
{ name = "bezug_total", byte_order = "ABCD", data_type = "FLOAT32-IEEE", scale = 1.0, address = [999, 1000] },
{ name = "lieferung_total", byte_order = "ABCD", data_type = "FLOAT32-IEEE", scale = 1.0, address = [1149, 1150] },
]
[inputs.modbus.tags]
zaehler = "wohnung_1"
Telegraf zählt die Adressen ab 0, das Handbuch ab 1: Register 1000 wird zu 999. Byte-Reihenfolge ABCD entspricht Big Endian mit dem höheren Wort zuerst, so wie das M-Center liefert. Die Schreibweise der Optionen ändert sich zwischen Telegraf-Versionen; massgebend ist die Plugin-Dokumentation Ihrer Version.
Alternative: Telegraf liest per MQTT
Mit MQTT-Lizenz abonniert Telegraf die Topics des M-Centers mit dem Plugin inputs.mqtt_consumer:
<Präfix>/emu/mcenter/<MAC>/meterreading/+/byobis/#
Wie Telegraf die Nachrichten auswertet, legen Sie mit data_format fest. Sehen Sie sich deshalb vorher den Inhalt der Nachrichten mit einem MQTT-Client an.
Schritt 2: InfluxDB und Grafana
- In Telegraf die Ausgabe auf InfluxDB setzen (
outputs.influxdb_v2mit URL, Token, Organisation und Bucket). - In Grafana InfluxDB als Datenquelle hinzufügen.
- Ein Panel anlegen und den Messwert abfragen. Für Verbräuche pro Tag oder Monat bilden Sie die Differenz des Zählerstands über das Zeitfenster.
Zählerstände steigen nur. Ein Balkendiagramm mit dem Verbrauch pro Tag ist deshalb meist aussagekräftiger als die Kurve des Zählerstands.