Statistiken extern speichern und visualisieren
In einem komplexen Regelsystem, wie z.B. für die zentrale Technik eines Einfamilienhaus mit verschiedensten Energieträgern wie einer reversibler Luft-Wärmepumpe (Heizen und Kühlen), Solar-Thermie, wasserführendem Kachelofen, kontrollierter Wohnraumlüftung, Beschattung, Fenster, Frischwasserstation für Warmwasser und zwei Energiepuffern, als auch Photovoltaik, Wärmestrom mit HT und NT und EVU-Sperre, gestaltet sich die Optimierung selbst mit dem so vielfältigen und funktionellen Loxone Miniserver sehr schwierig. Eine wesentlich umfangreichere Möglichkeit zur statistischen Auswertung von Mess-Reihen beschreibt der folgenden Artikel.
Komponenten
PC, VM, Raspberry PI oder ähnliches
InfluxDB - die Datenbank, In die Statistik-Daten in Form von Messreihen gespeichert werden
Telegraf - dieser Service empfängt die Daten vom Loxone Miniserver und speichert sie in der InfluxDB
Grafana - damit werden die Dashboards auf Basis der Daten aus der InfluxDB erstellt
Alle Komponenten sind für verschiedenste Plattformen verfügbar.
Vom Loxone Miniserver aus werden die Daten per virtuelle Ausgang mit einem HTTP Post Request gesendet.
Die folgende Anleitung beschreibt die Installation auf einem Windows Server. Für Linux und Raspberry Pi unterscheiden sich die Schritte für die Installation, aber nicht die Konfiguration.
Installation auf einem Raspberry Pi
Die Installation auf einem Raspberry Pi ist in diesem Blog gut beschrieben https://simonhearne.com/2020/pi-influx-grafana/ .
Installation unter Windows
Download: https://portal.influxdata.com/downloads/ und für diese Anleitung bitte nach unten blättern und die Version 1.8.4 verwenden. Für Windows geht man wie folgt vor:
Powershell öffnen
Folgenden Befehl eingeben, um die InfluxDB herunterzuladen:
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.8.4_windows_amd64.zip -UseBasicParsing -OutFile influxdb-1.8.4_windows_amd64.zip
Die heruntergeladene Datei befindet sich nun im aktuellen Verzeichnis der Powershell.
Falls diese Fehlermeldung erscheint: "wget : Die Anfrage wurde abgebrochen: Es konnte kein geschützter SSL/TLS-Kanal erstellt werden..", dann eingeben
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]'Tls11,Tls12'
und anschließend 2. wiederholen.
Telegraf herunterladen:
wget https://dl.influxdata.com/telegraf/releases/telegraf-1.18.1_windows_amd64.zip -UseBasicParsing -OutFile telegraf-1.18.1_windows_amd64.zip
Im Verzeichnis C:\Program Files (bzw. C:\Programme) den Ordner
erstellen.
Die .exe Dateien aus der InfluxDB ZIP und die .exe Datei aus der Telegraf ZIP in den neuen Telegraf Ordner kopieren.
Im Verzeichnis C:\Programdata (ggf. im Explorer die Anzeige von versteckten Dateien/Verzeichnissen aktivieren) den Ordner
erstellen.
Die .conf Dateien aus der InfluxDB ZIP und die .conf Datei aus der Telegraf ZIP in den neuen Telegraf Ordner kopieren.
In der Windows Firewall den Port 8080 freischalten, da in dieser Beschreibung der MiniServer seine Daten per HTTP über diesen Port schicken wird.
Download https://grafana.com/grafana/download?pg=get&plcmt=selfmanaged-box1-cta1
Die MSI Setup-Datei starten und ausführen.
Für die Einrichtung von InfluxDB und Telegraf als Windows Service kann NSSM https://nssm.cc verwendet werden, denn die Statistik-Erfassung soll ja auch ohne manuelles Starten oder vorheriger Anmeldung an und in Windows funktionieren.
Konfiguration
InfluxDB
In der C:\ProgramData\InfluxDB/InfluxDB.conf in den entsprechenden Abschnitten eintragen bzw. einkommentieren:
In den Systemeigenschaften das Verzeichnis "C:\Program Files\InfluxDB" zur Systemvariable PATH hinzufügen.
Eine Eingabeaufforderung öffnen und InfluxDB starten:
Nun in einer neuen Eingabeaufforderung das Influx CLI starten:
Jetzt mit folgenden Befehlen die Datenbank und den Admin-Benutzer erstellen:
Telegraf
In der C:\programdata\influxdb/telegraf.conf die entsprechenden Abschnitte einkommentieren und Optionen einfügen. Mit der original installierten Telegraf.conf sind einige Systemparameter wie CPU oder Memory vorkonfiguriert. Diese kann man auskommentieren.
Eine zweite Eingabeaufforderung öffnen und Telegraf starten:
Achtung: Wenn man mit der Maus in die Eingabeaufforderung klickt, wird die Konsolenausgabe blockiert und InfluxDB oder Telegraf stoppen.
Grafana
Die Web-Oberfläche öffnen, z.B. mit: http://192.168.1.100:3000
Anmelden mit admin ohne Kennwort
Unter "Configuration - Datasources" die InfluxDB hinzufügen.
Programmierung Loxone Miniserver
Virtueller Ausgang
Einen "virtuellen Ausgang" erstellen (HTTP):
Adresse z.B.: http://192.168.1.100:8080
Verbindung nach dem Senden schließen: Ja
Trennzeichen: ;
Befehl bei Verbindungsaufbau: <leer>
Oder alternativ (UDP):
Adresse z.B.: /dev/udp/192.168.1.100/8094
Verbindung nach dem Senden schließen: Ja
Trennzeichen: ;
Befehl bei Verbindungsaufbau: <leer>
Virtueller Ausgang Befehl (HTTP)
Die jetzt folgenden Schritte müssen für jeden Wert, bzw. jede Mess-Reihe, durchgeführt werden.
Ersten "virtuellen Ausgang Befehl" erstellen:
Bezeichnung: Aussentemperatur
Befehl bei EIN: /telegraf
HTTP-Post Befehl bei EIN: Aussentemperatur value=<v.1>
Die Syntax lautet (Achtung, die Bezeichnung ist Case-Sensitiv): [Bezeichnung der Mess-Reihe] value=[Wert]
Die Bezeichnung der Mess-Reihe darf keine Leerzeichen enthalten. Statt dessen z.B. "_" verwenden.HTTP-Methode bei EIN: POST
Befehl bei AUS: <leer>
HTTP-Post Befehl bei AUS: <leer>
HTTP-Methode bei AUS: GET
Erste Wiederholung: 5
Abstand Wiederholung: 5
Als Digitalausgang verwenden: Nein
Nun kann der Befehl in die Konfiguration eingefügt werden und mit dem analogen Ausgang des Bausteins, z.B. der Systemvariable oder einem anderen Temperatureingang verbunden werden.
Zweiten "virtuellen Ausgang Befehl" für "0" erstellen:
Bezeichnung: Aussentemperatur0
Befehl bei EIN: /telegraf
HTTP-Post Befehl bei EIN: Aussentemperatur value=0
HTTP-Methode bei EIN: POST
Befehl bei AUS: <leer>
HTTP-Post Befehl bei AUS: <leer>
HTTP-Methode bei AUS: GET
Erste Wiederholung: 5
Abstand Wiederholung: 5
Als Digitalausgang verwenden: Nein
Dieser Ausgangsbefehl wird über einen NOT-Logikbaustein mit dem analogen Ausgang der Quelle für die Außentemperatur verbunden.
Die Bildschirmkopien zeigen das Beispiel für den Wetter-Wert "Wind".
Der zweite Ausgangsbefehl ist ein Hilfskonstrukt, um auch eine Außentemperatur 0°C mit der gewünschten Wiederholung von z.B. 5 Sekunden in die Times-Series schreiben zu lassen. Der erste Ausgangsbefehl wiederholt den HTTP-POST Befehl nicht, sobald an VQ der Wert 0 anliegt.
Dies ist ein gravierender Nachteil dieser Lösung, da das Hilfskonstrukt zu einem erheblichen Mehraufwand bei der Konfiguration führt. Eine Anfrage beim Loxone Support hat diesen Weg leider auch bestätigt. In Anbetracht der sich ergebenden Möglichkeiten zur Visualisierung von untereinander abhängigen Mess-Reihen dürfte der Aufwand in dem einen oder anderen Projekt aber sehr wohl gerechtfertigt sein.
Alternative per UDP
Bezeichnung: Aussentemperatur
Befehl bei EIN: Aussentemperatur value=<v.1>
Die Syntax lautet (Achtung, die Bezeichnung ist Case-Sensitiv): [Bezeichnung der Mess-Reihe] value=[Wert]
Die Bezeichnung der Mess-Reihe darf keine Leerzeichen enthalten. Statt dessen z.B. "_" verwenden.HTTP-Post Befehl bei EIN: <leer>
HTTP-Methode bei EIN: GET
Befehl bei AUS: <leer>
HTTP-Post Befehl bei AUS: <leer>
HTTP-Methode bei AUS: GET
Erste Wiederholung: 5
Abstand Wiederholung: 5
Als Digitalausgang verwenden: Nein bzw. Ja
Kontrolle
Jetzt wäre der passende Moment zu kontrollieren, ob Daten in InfluxDB ankommen. Dazu kann man das Influx CLI oder andere Programme, wie das InfluxDBStudio https://github.com/CymaticLabs/InfluxDBStudio, verwenden.
In der folgenden Bildschirmkopie heisst die DB "test" statt "LoxoneMS".
Dashboard erstellen
Hier die grundlegenden Handgriffe:
Dashboard erstellen: + / Create / Dashboard
Panel erstellen: + Add Panel
Datenbank auswählen: LoxoneMS
Die Statistik Messreihe auswählen: select measurement
Darüber hinaus bietet Grafana eine umfangreiche Funktionalität, die Darstellung nach den eigenen Anforderungen anzupassen.
Beispiele
Dashboard Wärmepumpe
Überwachung und Analyse 1-Wire
Alternative Lösungsansätze
Die folgenden Punkte fassen getestete Alternativen zusammen, die aber mit wesentlichen Einschränkungen bzw. Problemen verbunden waren.
MiniServer
Der Loxone MS bietet mit der integrierten Statistik bereits eine gute Visualisierung von Zuständen und Ereignissen. Aber zum einen wird die SD-Card zu stark belastet und zum anderen lassen sich Mess-Reihen nicht in einem Diagramm kombinieren.
Microsoft Excel
Eine Alternative wäre das auslesen und anschließende Visualisieren mit Hilfe von Microsoft Excel oder ähnlichen Office-Anwendungen. Für eine Aktualisierung der Daten muss man aber immer manuell aktiv werden.
SNMP
Der Loxone MS kann zwar Daten per SNMP verschicken, aber für den SNMP Server benötigt man eine MIB. Das ganze gestaltet sich dadurch recht aufwendig.
SYSLOG
Werte werden vom MiniServer nur an den SYSLOG Server geschickt, wenn sie sich ändern. Für eine sauber funktionierende Darstellung in Grafana ist es aber erforderlich, dass auch sich nicht ändernde Werte konstant z.B. alle 10 Sekunden in die Time-Series der InfluxDB geschrieben werden.
IO Broker
Hier bekommt man alles aus einer Hand. Es ist eine Entscheidung der Kosten, ob man vielleicht auch weitere Funktionalitäten des IO Brokers einsetzen möchte und ob man diese Hardware im Dauerbetrieb laufen lassen möchte.
LxLogger
Hier muss man die Zugangsdaten für das Miniserver Admin-Konto nach aktuellem Softwarestand im Klartext hinterlegen. Außerdem funktioniert die Visualisierung in Diagrammen nicht lückenlos, da Werte nur bei Änderung in die Datenbank geschrieben werden. Es handelt sich um eine kostenpflichtige Software.
Verwandte Artikel