Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

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.

Inhalt

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

...

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:

...

Info

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:

    Codeblock
    languagetext
    [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:

    Kein Format
    influxd -config "C:\ProgramData\InfluxDB\influxdb.conf"


  4. Nun in einer neuen Eingabeaufforderung das Influx CLI starten:

    Kein Format
    influx


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

    Kein Format
    create database LoxoneMS


    Kein Format
    use LoxoneMS


    Kein Format
    create user admin with password 'admin' with all privileges


    Kein Format
    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.  

    Kein Format
    [[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:

    Kein Format
    telegraf -config C:\programdata\influxdb\telegraf.conf


Info
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.: /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. 

...

Info

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.

...

Info

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:

...

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.

  • 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

Nach Stichwort filtern (Inhalt nach Stichwort)
showLabelsfalse
max5
spacesLOX
showSpacefalse
sortmodified
reversetrue
typepage
cqllabel in ("statistik","Trend","Visualisierung") and type = "page" and space = "LOX"
labelsStatistik

...