4. Echtzeit-Aktualisierung der Statistikdaten (MQTT LiveUpdate)

Worum geht's? Wie funktioniert's?

Mit dem Einrichten von Schritt 2. Einrichten des zeitgesteuerten Statistik-Abrufs holt Stats4Lox zeitgesteuert (z.B. alle 5 Minuten) die Daten von den Miniservern ab.

Damit gibt es aber ein Problem: Sich schnell ändernde Werte wie von einem Stromzähler, oder Impulse z.B. wenn du Tastendrücke erfassen möchtest, fallen bei diesem intervallbasierten Abruf durch den Rost. Mit einem 5-Minuten-Intervall lässt sich kein sich schnell und kontinuierlich ändernder Wert erfassen.

MQTT LiveUpdate löst dieses Problem, indem du sich kontinuierlich ändernde Werte in Echtzeit an Stats4Lox sendest. Dies geht nicht automatisch, sondern erfordert Einrichtung in deiner Loxone Config.

MQTT Gateway

Für MQTT LiveUpdate muss das MQTT Gateway Plugin installiert sein.

Ablauf von MQTT LiveUpdate

  • Du richtest einen Virtuellen Ausgang per UDP zum MQTT Gateway ein (wenn du das MQTT Gateway bereits benutzt, hast du den vermutlich schon).
  • Für jeden Ausgang in der Loxone Config, der sich schnell ändert (z.B. Ausgang AQp eines Verbrauchszählers), erstellst du einen Virtuellen Ausgangs-Befehl in diesem Virtuellen Ausgang. Der Befehl (ein publish ans MQTT Gateway), den du benötigst, findest du in der Ansicht "MQTT Live".
  • Den virtuellen Ausgangsbefehl schließt du an den Baustein an, z.B. an AQp des Verbrauchszählers. Damit wird zukünftig jede Änderung von AQp an MQTT gesendet.
  • Stats4Lox empfängt diese Daten per MQTT sendet sie an die Influx Datenbank.
  • Auch sehr rasche Änderungen im Millisekunden-Bereich können damit erfasst werden.

MQTT Live - Übersicht

Wechsle in der Navigation auf "MQTT Live".

In der ersten Sektion "MQTT Live State" ist sichtbar, ob MQTT läuft und alles in Ordnung ist. Nur wenn der Status "Connected" ist, funktionert MQTT Live korrekt.

In der zweiten Sektion "Received Updates" werden dir später die Daten angezeigt, die deine Miniserver einliefern. So kannst du jederzeit verfolgen, ob deine Konfiguration richtig war, und auch tatsächlich Daten empfangen werden.

In der dritten Sektion "MQTT Live All Available Update Topics" wird dir aufgelistet, welche Daten du mit MQTT Live einliefern kannst, und welchen Ausgangs-Befehl du benutzen musst. 

Einrichtung in Loxone Config

Virtuellen Ausgang ans MQTT Gateway erstellen

Tipp

Wenn du das MQTT Gateway bereits verwendest und bereits einen Virtuellen Ausgang zum MQTT Gateway eingerichtet hast, kannst du diesen Punkt überspringen.

Virtueller Ausgang

Adresse: /dev/udp/<LoxBerry-Hostname>/<udpinport> 

  • <LoxBerry-Hostname> ist z.B. loxberry, oder du verwendest ggf. die IP-Adresse.
  • <udpinport> ist der Port, den du bei den Plugin-Einstellungen unten als LoxBerry-Eingangsport eingestellt hast (nicht der Miniserver-UDP-Port). Standard ist 11884.

Virtuellen Ausgangsbefehl erstellen

Dazu den eben erstellten Virtuellen Ausgang markieren (rot eingekreist), und oben "Virtueller Ausgang Befehl" (grün eingekreist) klicken.

Du suchst dir nun aus der Liste der möglichen Daten die richtige Statistik:

Mit einem Klick auf "Copy" wird dir der Befehl in die Zwischenablage kopiert - füge diesen in den Virtuellen Ausgang Befehl bei "Befehl bei EIN" ein:

Du kannst den Namen frei wählen - es spielt keine Rolle, wie der Virtuelle Ausgangsbefehl heißt.

Bei Befehl bei EIN füge die kopierte Zeile ein. (Achtung! Im Screenshot ist noch <v.8> zu sehen - das Maximum von Loxone ist allerdings <v.3> und das wird inzwischen auch richtig eingefügt.) 

Achte darauf, dass "Als Digitalausgang verwenden" nicht angehakt ist, damit der Wert übertragen wird.

Du brauchst sonst nichts im Virtuellen Ausgang Befehl ändern.

Anschließen an den Baustein

Schlussendlich hängst du deinen neuen Virtuellen Ausgang Befehl an den Anschluss des Bausteins an, den du in Echtzeit erfassen möchtest.

Im Miniserver speichern und testen

Nicht vergessen: Im Miniserver speichern!

In der "Received updates" Ansicht siehst du nun, wann und welcher Wert zuletzt an diese Statistik übertragen wurde.

Hab etwas Geduld - der Miniserver sendet möglicherweise nicht unmittelbar nach dem Neustart. Außerdem werden nur Änderungen übertragen.

Fertig!

Jetzt kannst du dir die Live-Daten in Grafana ansehen.

Subscription im MQTT Gateway

Erstelle im MQTT Gateway keine Subscription für das Base-Topic von MQTT Live! Diese Subscription würde auslösen, dass die Daten, die der Miniserver gesendet hat, gleich wieder zurück zum Miniserver gesendet werden. Das ist nicht nötig und belastet den Miniserver!



Weiter zu Schritt 5. Daten in Grafana visualisieren

Weitere Infos zu MQTT LiveUpdate

  •  MQTT LiveUpdate verwendet automatisch den MQTT Broker, der im MQTT Gateway eingestellt ist. Wenn dort ein externer Broker angegeben ist, wird dieser verwendet.
  • Zur Entlastung von LoxBerry und der Datenbank werden rasch hintereinander eingehende Daten für etwa 5 Sekunden zwischengespeichert, und dann "in einem Aufwasch" an die Datenbank gesendet. Als Timestamp wird korrekt der Eingangszeitstempel verwendet, nicht die Zeit, wann die Daten an Influx übertragen werden.
  • Die Übertragung an die Datenbank findet in einem eigenen Prozess im Hintergrund statt, sodass auch während der Übertragung weiterhin Daten vom Broker empfangen werden.
  • Bei einem Ausfall der Datenbank (z.B. Influx wird neu gestartet, oder ist überlastet) bleiben die Daten zwischengespeichert, bis die Datenbank wieder verfügbar ist.
  • Das Topic von MQTT LiveUpdate stellt sich folgendermaßen zusammen:
    • <Basistopic>/<Miniservernummer>/<Measurementname>/<Output>
    • Das <Basistopic> wird bei MQTT Live State angezeigt
    • <Miniservernummer> ist die Nummer des Miniservers in LoxBerry (1, 2, 3 usw.)
    • <Measurementname> ist der Name, der in den Details eingestellt ist (standardmäßig die Beschreibung oder Bezeichnung des Bausteins)
    • <Output> ist der entsprechende Ausgang des Bausteins (z.B. "Default", "AQ", "AQp" usw.)
    • Alternativ zu <Measurementname> kann immer auch die Loxone Baustein-UID verwendet werden (wird in der Detailansicht eines Bausteins oben angezeigt):

<Basistopic>/<Miniservernummer>/<UID>/<Output>

  • MQTT Live kann parallel mit dem zeitgesteuerten Abruf, aber auch alleine laufen.
    • Wird der zeitgesteuerte Abruf und MQTT Live parallel benutzt, werden beide Datensätze mit dem korrekten Timestamp gespeichert. Beispielsweise kommt per MQTT Live der Wert 50 (Watt) und dann lange nichts (weil der Wert bei 50 Watt verharrt). Der zeitgesteuerte Abruf speichert dann zusätzlich im eingestellten Intervall den Wert 50.
    • Nach der Einrichtung von MQTT Live kann aber auch der zeitgesteuerte Abruf deaktiviert werden. Wichtig ist:
      1. Es muss einmalig der zeitgesteuerte Abruf aktiviert werden, und die Checkboxen für die richtigen Outputs gewählt werden.
      2. Danach kann der zeitgesteuerte Abruf wieder deaktiviert werden, es müssen aber die richtigen Outputs aktiviert bleiben (das Deaktivieren von "Activate" belässt diese korrekt gespeichert