Skip to end of metadata
Go to start of metadata

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:

  1. Powershell öffnen
  2. 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.
  3. 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.

  4. 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
    
  5. Im Verzeichnis C:\Program Files (bzw. C:\Programme) den Ordner

    C:\Program Files\InfluxDB
    

    erstellen.

  6. Die .exe Dateien aus der InfluxDB ZIP und die .exe Datei aus der Telegraf ZIP in den neuen Telegraf Ordner kopieren.

  7. Im Verzeichnis C:\Programdata (ggf. im Explorer die Anzeige von versteckten Dateien/Verzeichnissen aktivieren) den Ordner

    C:\ProgramData\InfluxDB
    

    erstellen.

  8. Die .conf Dateien aus der InfluxDB ZIP und die .conf Datei aus der Telegraf ZIP in den neuen Telegraf Ordner kopieren.
  9. In der Windows Firewall den Port 8080 freischalten, da in dieser Beschreibung der MiniServer seine Daten per HTTP über diesen Port schicken wird.

  10. Download https://grafana.com/grafana/download?pg=get&plcmt=selfmanaged-box1-cta1

  11. 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

  1. In der C:\ProgramData\InfluxDB/InfluxDB.conf in den entsprechenden Abschnitten eintragen bzw. einkommentieren:

    [meta]
      # Where the metadata/raft database is stored
      dir = "C:/ProgramData/InfluxDB/meta"
    
    [data]
      # The directory where the TSM storage engine stores TSM files.
      dir = "C:/ProgramData/InfluxDB/data"
    
      # The directory where the TSM storage engine stores WAL files.
      wal-dir = "C:/ProgramData/InfluxDB/wal"
    
    [http]
      # Determines whether HTTP endpoint is enabled.
      enabled = true
  2. In den Systemeigenschaften das Verzeichnis  "C:\Program Files\InfluxDB"  zur Systemvariable PATH hinzufügen.
  3. Eine Eingabeaufforderung öffnen und InfluxDB starten:

    influxd -config "C:\ProgramData\InfluxDB\influxdb.conf"
  4. Nun in einer neuen Eingabeaufforderung das Influx CLI starten:

    influx
  5. Jetzt mit folgenden Befehlen die Datenbank und den Admin-Benutzer erstellen:

    create database LoxoneMS
    use LoxoneMS
    create user admin with password 'admin' with all privileges
    grant all privileges on LoxoneMS to admin

Telegraf

  1. 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.  

    [[outputs.influxdb]]
    urls = ["http://127.0.0.1:8086"]
    database = "LoxoneMS"
    username = "admin"
    password = "admin"
    
    # Für HTTP Datenpakete 
    [[inputs.http_listener_v2]]
    service_address = ":8080"
    path = "/telegraf"
    methods = ["POST"]
    read_timeout = "10s"
    write_timeout = "10s"
    data_format = "influx"
    
    # Alternative per UDP
    [[inputs.socket_listener]]
    service_address = "udp://:8094"
    data_format = "influx"
  2. Eine zweite Eingabeaufforderung öffnen und Telegraf starten:

    telegraf -config C:\programdata\influxdb\telegraf.conf
Achtung: Wenn man mit der Maus in die Eingabeaufforderung klickt, wird die Konsolenausgabe blockiert und InfluxDB oder Telegraf stoppen. 

Grafana

  1. Die Web-Oberfläche öffnen, z.B. mit: http://192.168.1.100:3000
  2. Anmelden mit admin ohne Kennwort
  3. Unter "Configuration - Datasources" die InfluxDB hinzufügen.

Programmierung Loxone Miniserver

Virtueller Ausgang

Einen "virtuellen Ausgang" erstellen (HTTP):

  1. Adresse z.B.: http://192.168.1.100:8080

  2. Verbindung nach dem Senden schließen: Ja
  3. Trennzeichen: ;
  4. Befehl bei Verbindungsaufbau: <leer>

Oder alternativ (UDP):

  1. Adresse z.B.: /dev/udp/192.168.1.100/8094
  2. Verbindung nach dem Senden schließen: Ja
  3. Trennzeichen: ;
  4. 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:

  1. Bezeichnung: Aussentemperatur
  2. Befehl bei EIN: /telegraf
  3. 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.
  4. HTTP-Methode bei EIN: POST
  5. Befehl bei AUS: <leer> 
  6. HTTP-Post Befehl bei AUS: <leer>
  7. HTTP-Methode bei AUS: GET
  8. Erste Wiederholung: 5
  9. Abstand Wiederholung: 5
  10. 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:

  1. Bezeichnung: Aussentemperatur0
  2. Befehl bei EIN: /telegraf
  3. HTTP-Post Befehl bei EIN: Aussentemperatur value=0
  4. HTTP-Methode bei EIN: POST
  5. Befehl bei AUS: <leer> 
  6. HTTP-Post Befehl bei AUS: <leer>
  7. HTTP-Methode bei AUS: GET
  8. Erste Wiederholung: 5
  9. Abstand Wiederholung: 5
  10. 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

  1. Bezeichnung: Aussentemperatur
  2. 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.
  3. HTTP-Post Befehl bei EIN:  <leer>
  4. HTTP-Methode bei EIN: GET
  5. Befehl bei AUS: <leer> 
  6. HTTP-Post Befehl bei AUS: <leer>
  7. HTTP-Methode bei AUS: GET
  8. Erste Wiederholung: 5
  9. Abstand Wiederholung: 5
  10. 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".

Der Zeitstempel wird in der Zeitzone GMT/UTC gespeichert. Wenn die Daten mit einer Query abgerufen werden, so "hinkt" die Zeit z.B. für Deutschland um eine oder zwei Stunden hinten nach, je nachdem ob gerade Winter- oder Sommerzeit ist.

Dashboard erstellen

Hier die grundlegenden Handgriffe:

  1. Dashboard erstellen: + / Create / Dashboard 
  2. Panel erstellen: + Add Panel
  3. Datenbank auswählen: LoxoneMS
  4. 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