MQTT

ℹ️ Verfügbar ab QuickHMI 14.15.2 (Enterprise-Lizenz)

Bei der Datenbereitstellung über MQTT arbeitet QuickHMI als eingebetteter MQTT-Broker. Die freigegebenen Variablen werden als MQTT-Topics veröffentlicht; MQTT-Clients können sie abonnieren und, sofern die Variable schreibbar ist, auch beschreiben. QuickHMI ist dabei selbst der Broker und benötigt keinen externen Broker.

Abgrenzung: Eine MQTT-Datenquelle ist das Gegenstück – dort verbindet sich QuickHMI als Client zu einem fremden Broker und konsumiert Daten. Bei der Datenbereitstellung ist QuickHMI der Broker.

Aktivierung

Die MQTT-Datenbereitstellung aktivieren Sie in den Projekt-Einstellungen im Bereich Datenbereitstellung im Reiter MQTT. Welche Variablen bereitgestellt werden, legen Sie in derselben Ansicht als Regel je Datenquelle und als Ausnahme je Variable fest; das Vorgehen ist für alle Wege gleich und im Überblick beschrieben.

Projekt-Einstellungen: Datenbereitstellung, Tab „MQTT Broker“

Listener

Der Broker kann über mehrere Listener gleichzeitig erreichbar sein. Je Listener legen Sie Transport, Bind-Adresse und Port fest:

  • tcp – unverschlüsseltes MQTT (Standard-Port 1883)
  • tls – MQTT über TLS (Standard-Port 8883)
  • ws – MQTT über WebSocket (Standard-Port 8080)
  • wss – MQTT über WebSocket mit TLS (Standard-Port 8443)

Beim Wechsel des Transports schlägt der Editor den passenden Standard-Port vor, sofern Sie den Port noch nicht manuell angepasst haben. Über die Bind-Adresse (zum Beispiel 127.0.0.1 für ausschließlich lokalen Zugriff oder 0.0.0.0 für alle Netzwerkschnittstellen) steuern Sie die Erreichbarkeit.

Topic-Schema und Topic-Präfix

Jede freigegebene Variable wird unter einem eindeutigen Topic-Pfad veröffentlicht:

<Topic-Präfix>/<Datenquelle>/<Variable>/value

Zusätzlich zum Wert werden Qualität und Zeitstempel bereitgestellt:

  • .../value – der aktuelle Wert
  • .../quality – die Qualität (zum Beispiel GOOD)
  • .../ts – der Zeitstempel der letzten Änderung
  • .../state – Wert, Qualität und Zeitstempel in einer Nachrichtab 14.15.2

Das state-Topic enthält ein JSON-Objekt mit denselben drei Angaben:

{"value":"25.4","quality":"GOOD","ts":1787049755150}

value ist dabei immer eine Zeichenkette mit dem Rohwert, auch bei Zahlen und Wahrheitswerten. ts ist die Zeit in Millisekunden seit dem 01.01.1970, oder null, solange die Variable noch nie aktualisiert wurde. Alle vier Topics sind retained, der Broker hält also je Topic den letzten Stand für neue Abonnenten bereit.

Das Topic-Präfix legen Sie in den Einstellungen fest. Das Topic einer einzelnen Variablen können Sie im Variablen-Dialog ablesen und kopieren.

Empfehlung: Wer seinen Bestand nach dem Verbinden aus den gespeicherten Nachrichten aufbaut, sollte state abonnieren statt der drei Einzel-Topics. Grund: Eine retained Nachricht mit leerer Nutzlast löscht laut MQTT-Spezifikation die gespeicherte Nachricht. Bei einer Variablen mit leerem Wert, etwa einer leeren Zeichenkette, fehlt später verbundenen Clients deshalb das value-Topic, während quality und ts weiter ankommen. Das state-Topic ist nie leer, und Wert, Qualität und Zeitstempel treffen dort gemeinsam ein, können also nicht einzeln veralten.

Fallen zwei Variablennamen nach der Topic-Bereinigung auf denselben Pfad, wird die zweite mit einer Warnung übersprungen. Verwenden Sie daher eindeutige Namen.

QoS und Retain

  • QoS (Quality of Service) bestimmt die Zustellgarantie: 0 (höchstens einmal), 1 (mindestens einmal), 2 (genau einmal).
  • Retain: Ist Retain aktiv, merkt sich der Broker je Topic den letzten Wert und liefert ihn neuen Abonnenten sofort. Für die Anzeigewerte einer Visualisierung ist das in der Regel sinnvoll.

Werte schreiben (Write-back)

Ist eine Variable schreibbar (ReadWrite), können MQTT-Clients ihren Wert ändern, indem sie auf das zugehörige value-Topic publizieren. QuickHMI übernimmt den Wert in die Variable. Von QuickHMI selbst veröffentlichte Nachrichten werden dabei erkannt und nicht erneut als Schreibbefehl verarbeitet. Geschrieben wird ausschließlich auf value; quality, ts und state sind reine Lese-Topics.

Authentifizierung

Die Authentifizierung gilt server-weit für den gesamten Broker. Möglich sind:

  • Disabled – offener Zugriff, keine Anmeldung.
  • LoginCredentials – mit Benutzername und Passwort.
  • Certificate – gegenseitige TLS-Authentifizierung (mTLS) mit Client-Zertifikat.

Wichtig: Die Zertifikatsanmeldung ist nur mit TLS- oder WSS-Listenern zulässig. Reine tcp- oder ws-Listener können keine Client-Zertifikate tragen und werden in diesem Modus abgelehnt.

TLS und Zertifikate

Für TLS- und WSS-Listener stellt QuickHMI die Server-Identität aus dem zentralen Zertifikatsmanager bereit. Über die TLS-Zuweisungen können Sie jedem Port ein eigenes TLS-Zertifikat zuweisen; ohne Zuweisung greift das Standard-TLS-Zertifikat.

Bei der Zertifikatsanmeldung (mTLS) prüft QuickHMI das Client-Zertifikat gegen den zentralen Vertrauensspeicher. Ein noch nicht vertrautes Client-Zertifikat wird abgelehnt und erscheint im Bereich Abgelehnt. Geben Sie es dort über Vertrauen frei und starten Sie die Instanz neu; danach wird die Verbindung akzeptiert.

Lizenz

Die Datenbereitstellung ist eine Enterprise-Funktion.