Motivation
Nachdem immer mehr Geräte im häuslichen Umfeld Daten sammeln, diese jedoch selbst nicht (ausreichend) aufbereiten und für andere Geräte zum konsumieren bereitstellen war ich auf der Suche nach einer (oder mehrerer) Lösungen um diese Daten abzugreifen und selbst mittels Scripte, Grafana, … auszuwerten und auf spezielle Betriebsbedingungen zu reagiern. Einige Geräte sind heute schon soweit, dass sie eine entsprechende Schnittstelle anbieten auf welcher die entsprechenden Betreibsdaten abgefragt werden können. Dies ist meist eine Modbus-Schnittstelle (TCP und/oder RTU) oder eine REST-API.
Unterstützte Geräte
Zunächst wurde identifiziert, welche Geräte ohne großen Aufwand nur durch anlegen der richtigen Konfiguration und ggf. Verwendung von exterenen Schnitstellen (z.B. für Modbus RTU) mit Telegraf angesprochen werden können:
- Kostal Smart Energy Meter
- Zugriff via Modbus TCP, ggf. im Webinterface des KSEM aktivieren
- Dokumentation der Register vom Hersteller verfügbar
- Kostal Plenticore Plus 10
- Zugriff via Modbus TCP, im Webinterface aktivieren, BigEndian??? auswählen
- Dokumentation der Register vom Hersteller verfügbar
- SDM630 Modbus V2 Energiezähler (3 Phasen MID-geeichter Stromzähler)
- Zugriff via Modbus RTU, ggf. Kommunikationsprameter im Zähler einstellen
- Dokumentation der Register vom Hersteller verfügbar
- Ich verwende einen Modbus RTU <=> Modbus TCP wandler
- Solvis Heizungsregelung SC3
-
Zugriff via Modbus TCP, im Webinterface aktivieren
-
Dokumentation der Register (vermutlich unvollständig) vom Hersteller verfügbar
-
Anmerkung: Die Implementierung der Modbus TCP - Schnitstelle hat (Stand: Dezember 2022) zahlreiche Fehler und der Modbus-TCP Stack hängt sich reproduzierbar auf. Wenn dies geschieht hilft nur ein Neustart der SC3 um die Kommunikation wiederherzustellen.
-
-
Und wo sollen die Daten jetzt hin?
Diese Frage habe ich für mich zweigleisig beantwortet. Zum einen verwende ich das InfluxDB Output Plugin für Telegraf um die Daten wie eigentlich vorgesehen in eine InflusDB zu speichern. Von dieser aus versorge ich auch eine Grafana-Instanz mit ihren Daten. Als zweiten Weg habe ich das MQTT-Output-Plugin eingebunden, um die entsprechenden Betriebsdaten auch anderen Geräten oder Logiken zur Verfügung zu stellen. So läuft bei mir z.B. ein NodeRED welches anhand der PV-Leistungsdaten vom Plenticore entscheidet, in welcher der “Leistungsstufen” die Wärmepumpe laufen darf bzw. ob genügend Überschuss vorhanden ist den Heizungspufferspeicher durchzuladen.
Die Konfiguration
Die Konfiguration von Telegraf ist weitgehend selbsterklärend. Der Übersichtlichkeitshalber habe ich die Konfigurationsdaten (als Template) in einem git-Repository abgelegt, welches ihr unter https://github.com/oldies/telegraf-config findet. Anzupassen sind i.d.R. folgende Zeilen:
- Slave-ID des Modbus-Slave (Standardwerte Kostal: 71, SC3: 101)
## Slave ID - addresses a MODBUS device on the bus
## Range: 0 - 255 [0 = broadcast; 248 - 255 = reserved]
slave_id = 71
- IP-Adresse und Port des Modbus-TCP Gerätes
# TCP - connect via Modbus/TCP
controller = "tcp://<<device-ip>>:502"
oder Modbus RTU Kommunikations-Parameter
## Serial (RS485; RS232)
# controller = "file:///dev/ttyUSB0"
# baud_rate = 9600
# data_bits = 8
# parity = "N"
# stop_bits = 1
# transmission_mode = "RTU"
Falls MQTT als Output verwendet werden soll, so sind folgende Zeilen anzupassen:
- IP-Adresse und Port des MQTT-Brokers
## MQTT Brokers
## The list of brokers should only include the hostname or IP address and the
## port to the broker. This should follow the format '{host}:{port}'. For
## example, "localhost:1883" or "127.0.0.1:8883".
servers = ["<<mqtt-server>>:1883"]
- Benutzerdaten für die Anmeldung am MQTT-Broker
## username and password to connect MQTT server.
username = "telegraf"
password = "<<supergeheimesmqttpasswort>>"
- ClientID für die Anmeldung am MQTT-Broker
## client ID
## The unique client id to connect MQTT server. If this parameter is not set
## then a random ID is generated.
client_id = "telegrafnas"
Ausblick
Ich wünsche viel Spaß beim adaptieren der Konfiguration auf die eigenen Bedürfnisse.
- älter DJ-Tisch individuell im Eigenbau 16.September 2019
- neuer PA-Lautsprecher: HiFi-PA 10/2 5.August 2022