Skip to content

MQTT-Publisher ​

Ca. 14 Min. Lesezeit

Der MQTT-Publisher veröffentlicht Wert- und Qualitätsänderungen der Tags in 2WinScada an einen MQTT-Broker. IoT-Plattformen, Energiemanagement-, MES/ERP- und Instandhaltungssysteme oder MQTT-Clients wie Node-RED können die SCADA-Daten auf diesem Weg empfangen, ohne sich mit der Datenbank oder der API zu verbinden.

Diese Funktion unterscheidet sich vom Kanal MQTT-Client, der Daten per MQTT aus Geräten liest. Der MQTT-Publisher liest keine Daten; er gibt die Tag-Änderungen des laufenden SCADA-Systems nach außen weiter.

Die Veröffentlichung übernimmt der MQTT-Publisher-Dienst, der getrennt vom Hauptdienst läuft. Der Hauptdienst filtert die Tag-Änderungen und übergibt sie an den Publisher-Dienst; der Publisher-Dienst sendet sie an den Broker.

Das Hauptsystem ist nicht betroffen

Der MQTT-Publisher ist optional. Auch wenn der Publisher-Dienst oder der Broker ausgeschaltet, nicht erreichbar oder falsch konfiguriert ist, arbeiten das Lesen und Schreiben von Tags, das Archiv, die Alarme und die Weboberfläche weiter.

Voraussetzungen ​

  • Die installierte Lizenz muss die MQTT-Integration enthalten. Enthält die Lizenz dieses Recht nicht, können die Einstellungen gespeichert werden, es werden aber keine Daten veröffentlicht, und der Verbindungstest ist nicht möglich.
  • Die MQTT-Publisher-Komponente muss mit dem Installationsprogramm installiert und aktiviert sein.
  • Sie benötigen einen erreichbaren MQTT-Broker und auf diesem Broker einen Benutzer für den Publisher.

Zugriff auf die Seite ​

Die Einstellungen werden auf der Seite Einstellungen > MQTT-Publisher-Einstellungen verwaltet.

BenutzerSieht den MenüeintragKann speichern
Gruppe SystemAdminJaJa
Gruppe AdministratorsNur wenn die installierte Lizenz die MQTT-Integration enthältJa
Andere BenutzerNeinNein

Die Berechtigung wird bei jeder Anfrage auf dem Server anhand der gespeicherten Gruppe des Benutzers erneut geprüft. Auch wenn die Seitenadresse von Hand eingegeben wird, kann ein nicht berechtigter Benutzer die Einstellungen nicht sehen.

Oben auf der Seite können je nach Zustand folgende Hinweisleisten erscheinen:

  • Die Lizenz dieser Installation enthält keine MQTT-Integration...: Die Einstellungen werden gespeichert, es werden aber keine Daten veröffentlicht, bis die Lizenz diese Funktion enthält.
  • Es wurden noch keine Einstellungen über das Web gespeichert...: Das Formular wurde mit den vorhandenen Werten aus den Konfigurationsdateien des Dienstes gefüllt (siehe Beziehung zur Konfigurationsdatei).
  • Die MQTT-Publisher-Einstellungen sind noch nicht konfiguriert.: Es gibt keine gespeicherte Web-Einstellung, und die Werte in der Konfigurationsdatei konnten nicht gelesen werden; das Formular wurde mit den Standardwerten geöffnet.
  • Sie dürfen diese Einstellungen nicht ändern...: Die Werte werden schreibgeschützt angezeigt.

Dienststatus ​

Die Karte Dienststatus zeigt, wie der Hauptdienst den Publisher-Dienst sieht. Die Schaltfläche Status aktualisieren oben rechts auf der Karte liest die Angaben erneut.

Publisher-DienstBedeutungMaßnahme
Nicht installiertDie MQTT-Publisher-Komponente ist in dieser Installation nicht aktiviert.Installieren Sie die Komponente mit dem Installationsprogramm. Die Einstellungen können schon jetzt gespeichert werden; sie werden angewendet, sobald die Komponente installiert ist.
ErreichbarDer Publisher-Dienst antwortet.Prüfen Sie die übrigen Zeilen der Karte.
Nicht erreichbarDer Publisher-Dienst ist angehalten, seine Adresse ist falsch, oder der Netzwerkzugriff ist blockiert.Prüfen Sie, ob der Dienst läuft. Gespeicherte Einstellungen werden automatisch angewendet, sobald der Dienst erreichbar ist.
Producer-Schlüssel abgelehntDie Prüfung zwischen Publisher-Dienst und Hauptdienst ist fehlgeschlagen.Reparieren Sie die Installation mit dem Installationsprogramm, oder wenden Sie sich an Ihren Systemintegrator.
VeraltetDer Publisher-Dienst ist eine ältere Version, die keine Web-Einstellungen unterstützt.Aktualisieren Sie den Publisher-Dienst auf dieselbe Version wie den Hauptdienst.
Unsichere AdresseDie Adresse des Publisher-Dienstes ist eine entfernte http-Adresse; das Passwort wird aus Sicherheitsgründen nicht gesendet.Verwenden Sie https oder eine lokale Adresse auf demselben Server.

Die übrigen Zeilen der Karte:

ZeileErwartetAndernfalls
Aktive EinstellungsquelleNach dem Speichern Web-EinstellungenWird Dienst-Konfigurationsdatei angezeigt, wurden die Einstellungen noch nicht an den Publisher-Dienst übertragen. Warten Sie etwa 30 Sekunden, und klicken Sie dann auf Status aktualisieren.
Einstellungen synchronJaWarten Sie, bis die Einstellungen übertragen sind.
Mit Broker verbundenJaDer Publisher-Dienst öffnet die Verbindung zum Broker nur, wenn Nachrichten zu senden sind. Bleibt der Wert bei vorhandenen Tag-Änderungen auf Nein, prüfen Sie den Broker mit Verbindung testen.
Lizenz enthält MQTTJaDie installierte Lizenz enthält keine MQTT-Integration; es wird nichts veröffentlicht.
Dienst darf veröffentlichenJaStarten Sie den Publisher-Dienst nach einer Lizenzänderung neu; besteht das Problem weiter, wenden Sie sich an Ihren Systemintegrator.

Einstellungen ​

Allgemein ​

Veröffentlichung aktiviert: Ist die Einstellung eingeschaltet, werden Tag-Änderungen an den Broker veröffentlicht. Ist die MQTT-Publisher-Komponente nicht installiert, hat diese Einstellung keine Wirkung. Um die Veröffentlichung vorübergehend anzuhalten, schalten Sie den Schalter aus und speichern; ein Neustart ist nicht erforderlich.

Unten auf der Karte wird angezeigt, wann die Einstellungen zuletzt gespeichert wurden (Zuletzt aktualisiert).

Broker ​

FeldBeschreibung
Broker-AdresseServername oder IP-Adresse des Brokers. Pflichtfeld, solange die Veröffentlichung aktiviert ist. Höchstens 255 Zeichen; darf keine Leerzeichen enthalten.
Port1–65535. Für unverschlüsseltes MQTT wird in der Regel 1883, für TLS in der Regel 8883 verwendet. Standardwert 1883.
Client-IDDie MQTT-Client-ID beim Broker, höchstens 128 Zeichen. Bleibt das Feld leer, verwendet der Dienst eine eigene Client-ID. Sie muss für jeden Publisher, der sich mit demselben Broker verbindet, eindeutig sein.

Authentifizierung ​

FeldBeschreibung
BenutzernameBenutzer beim Broker, höchstens 256 Zeichen. Bleibt das Feld leer, wird anonym verbunden.
PasswortHöchstens 512 Zeichen. Ist ein Passwort gespeichert, steht unter dem Feld Ein Passwort ist gespeichert. Bleibt das Feld leer, bleibt das gespeicherte Passwort erhalten; um es zu ändern, geben Sie das neue Passwort ein.
Gespeichertes Passwort entfernenErscheint nur, wenn ein Passwort gespeichert ist. Wird die Option aktiviert und gespeichert, wird das Passwort gelöscht.

Das gespeicherte Passwort ist an das Verbindungsziel gebunden, für das es eingegeben wurde. Ändern sich Broker-Adresse, Port, Benutzername oder TLS verwenden oder wird eine der Zertifikatsausnahmen neu eingeschaltet, verlangt die Seite die erneute Eingabe des Passworts. Geben Sie das Passwort erneut ein, oder aktivieren Sie Gespeichertes Passwort entfernen. Das Ausschalten einer Zertifikatsausnahme behält das Passwort bei.

Der Hinweis Das gespeicherte Passwort konnte nicht entschlüsselt werden erscheint zum Beispiel, wenn das Passwort aus einer anderen Installation wiederhergestellt wurde. Geben Sie das Passwort erneut ein.

TLS ​

FeldBeschreibung
TLS verwendenVerschlüsselt die Verbindung zum Broker mit TLS. Für Produktionsumgebungen empfohlen.
Nicht vertrauenswürdige Zertifikate zulassenVerbindet auch, wenn das Zertifikat des Brokers nicht vertrauenswürdig ist.
Zertifikatskettenfehler ignorierenVerbindet auch, wenn die Zertifikatskette nicht geprüft werden kann.
Fehler bei der Sperrprüfung ignorierenVerbindet auch, wenn der Sperrstatus des Zertifikats nicht geprüft werden kann.

Zertifikatsausnahmen können nur ausgewählt werden, wenn TLS verwenden aktiviert ist.

Zertifikatsausnahmen

Zertifikatsausnahmen machen die Verbindung für Man-in-the-Middle-Angriffe angreifbar. Verwenden Sie sie nur in Testumgebungen oder in vertrauenswürdigen Netzen.

Veröffentlichung ​

FeldBeschreibung
Topic-FormatPunktiert (Kanal.Gerät.Tag), Pfad (Kanal/Gerät/Tag) oder Beide. Beide veröffentlicht jede Änderung an zwei getrennte Topics.
Topic-PräfixOptional, höchstens 128 Zeichen. Wird dem Topic mit dem Trennzeichen des gewählten Formats vorangestellt. Darf nicht mit / beginnen und kein + oder # enthalten.
Beispiel-TopicZeigt die Topics, die sich mit dem gewählten Format und Präfix ergeben.
Dienstgüte (QoS)0 - Höchstens einmal, 1 - Mindestens einmal (Standard) oder 2 - Genau einmal.
Nachrichten beibehalten (Retain)Ist die Option eingeschaltet, speichert der Broker die letzte Nachricht jedes Topics; ein neu verbundener Abonnent erhält den letzten Wert sofort. Standardmäßig ausgeschaltet.
  • Setzen Sie kein / oder . an das Ende des Präfixes; das Trennzeichen wird automatisch eingefügt. Steht am Ende ein Trennzeichen, entsteht im Topic eine leere Ebene.
  • Prüfen Sie vor der Auswahl von QoS 2, ob der Broker diese Stufe unterstützt; manche Broker unterstützen QoS 2 nicht oder stufen es herab.
  • Wenn Sie bei eingeschaltetem Retain das Topic-Format oder das Präfix ändern, bleiben die in den alten Topics gespeicherten Nachrichten auf dem Broker. Entfernen Sie diese mit den Werkzeugen des Brokers.

Änderung für abonnierende Systeme

Topic-Format und Präfix bestimmen die Adresse, die abonnierende Systeme abhören. Bereiten Sie die abonnierenden Systeme auf die neuen Topics vor, bevor Sie diese Einstellungen ändern.

Tag-Filter ​

Legt fest, welche Tags veröffentlicht werden. In jede Zeile wird ein regulärer Ausdruck (Regex) geschrieben. Der Ausdruck wird auf den vollständigen Namen des Tags in der Form Kanal.Gerät.Tag angewendet und beachtet keine Groß-/Kleinschreibung.

  • Ist die Liste leer, werden alle Tags veröffentlicht (Alle Tags werden veröffentlicht.).
  • Ein Tag wird veröffentlicht, wenn es mit einem der Ausdrücke übereinstimmt.
  • Es können höchstens 100 Ausdrücke definiert werden; jeder Ausdruck darf höchstens 512 Zeichen lang sein.
  • Lookarounds, Rückverweise und atomare Gruppen werden nicht unterstützt.

Beispiele:

AusdruckAusgewählte Tags
^Kanal1\..*Alle Tags im Kanal Kanal1
^Kanal1\.Analizor1\..*Alle Tags des Geräts Analizor1 im Kanal Kanal1
^.*\.Sicaklik$Alle Tags, deren Name auf Sicaklik endet

Für die erste Inbetriebnahme empfiehlt es sich, mit einem engen Filter zu beginnen, um die Datenmenge zu begrenzen.

Verbindungstest und Speichern ​

Die Schaltfläche Verbindung testen öffnet mit den Verbindungsdaten im Formular (Adresse, Port, Client-ID, Benutzername, Passwort, TLS-Optionen) eine vorübergehende Verbindung zum Broker:

  • Der Test speichert die Einstellungen nicht und beeinflusst die laufende Veröffentlichung nicht.
  • Den Test führt der Publisher-Dienst aus; das Ergebnis spiegelt den Netzwerkzugang des Servers wider, auf dem der Publisher-Dienst läuft.
  • Die vorübergehende Verbindung hängt an die Client-ID -test- und einen zufälligen Zusatz an. Sind die Zugriffsregeln des Brokers an die Client-ID gebunden, müssen sie auch dieses Format abdecken.
  • Ein Test dauert höchstens etwa 10 Sekunden, und es läuft immer nur ein Test gleichzeitig.
  • Enthält die Lizenz keine MQTT-Integration, ist kein Test möglich.

Bei einem erfolgreichen Test erscheint die Meldung Verbindung zum Broker erfolgreich (… ms). Die Meldungen bei fehlgeschlagenen Tests finden Sie im Abschnitt Fehlerbehebung.

Speichern schreibt die Einstellungen in die Datenbank und sendet sie sofort an den Publisher-Dienst; die Dienste müssen nicht neu gestartet werden:

  • Veröffentlichung aktiviert und die Tag-Filter gelten sofort.
  • Haben sich Broker-Adresse, Anmeldedaten oder TLS-Optionen geändert, schließt der Publisher-Dienst die bestehende Verbindung und verbindet sich bei der nächsten Nachricht mit den neuen Einstellungen.
  • Topic-Format, Präfix, QoS und Retain werden ab der nächsten Nachricht angewendet.
  • Der Hauptdienst prüft etwa alle 30 Sekunden, ob die Einstellungen im Publisher-Dienst aktuell sind, und sendet sie bei Bedarf erneut. Einstellungen, die gespeichert werden, während der Publisher-Dienst nicht erreichbar ist, werden automatisch angewendet, sobald der Dienst wieder erreichbar ist.

Topic- und Nachrichtenformat ​

Topics bestehen aus den Namen von Kanal, Gerät und Tag. Beispiele:

Topic-FormatOhne PräfixMit Präfix tesis1
PunktiertKanal1.Analizor1.AktifGuctesis1.Kanal1.Analizor1.AktifGuc
PfadKanal1/Analizor1/AktifGuctesis1/Kanal1/Analizor1/AktifGuc
BeideGetrennte Veröffentlichung an beide TopicsGetrennte Veröffentlichung an beide Topics

Das Format Pfad eignet sich für Abonnements mit MQTT-Platzhaltern:

text
Kanal1/#          Alle Nachrichten des Kanals Kanal1
+/Analizor1/#     Das Gerät Analizor1 in jedem Kanal
+/+/Sicaklik      Alle Tags mit dem Namen Sicaklik

Ändert sich der Name eines Kanals, Geräts oder Tags, ändert sich auch das Topic; abonnierende Systeme sollten dies als Schnittstellenänderung behandeln.

Jede Nachricht ist ein JSON-Objekt mit folgenden Feldern:

FeldBedeutungTyp
CnKanalnameText
DnGerätenameText
TnTag-NameText
QNumerischer Qualitätscode von 2WinScadaGanzzahl
VTag-Wert; kann eine Zahl, ein boolescher Wert, ein Text, ein Objekt oder null seinJSON-Wert
TsZeitpunkt der Änderung, Unix-Epoch in Millisekunden auf UTC-BasisGanzzahl
json
{
  "Cn": "Kanal1",
  "Dn": "Analizor1",
  "Tn": "AktifGuc",
  "Q": 192,
  "V": 42.5,
  "Ts": 1786280400000
}

Die abonnierende Anwendung sollte das Feld V nicht nur als Text verarbeiten, sondern den JSON-Werttyp beibehalten. Die Einstellungen Topic-Format, Präfix, QoS und Retain ändern den Inhalt der Nachricht nicht.

Zustellverhalten ​

  • QoS 1 (Standard) stellt mindestens einmal zu; bei Netzwerkwiederholungen kann dieselbe Nachricht selten zweimal ankommen. Bei Bedarf sollte die abonnierende Anwendung doppelte Nachrichten anhand der Felder Cn, Dn, Tn und Ts aussortieren.
  • Bei ausgeschaltetem Retain erhält ein später verbundener Abonnent den letzten Wert nicht automatisch; er wartet auf die nächste Änderung.
  • Änderungen, die auf das Senden warten, werden nur im Arbeitsspeicher in Warteschlangen mit begrenzter Kapazität gehalten. Sind der Publisher-Dienst oder der Broker längere Zeit nicht erreichbar, läuft die Warteschlange voll, und neue Änderungen können verworfen werden. Bei einem Neustart des Dienstes bleiben wartende Änderungen nicht erhalten.
  • Steht die Verbindung wieder, werden die wartenden Änderungen der Reihe nach gesendet; die abonnierende Anwendung sollte verspätete Zeitstempel berücksichtigen.
  • Der MQTT-Publisher sendet keine historischen Daten erneut; er überträgt nur die Änderungen, die während des Betriebs entstehen.
  • Das Topic-Format Beide erzeugt für jede Änderung zwei Nachrichten und erhöht die Last auf dem Broker.

Sicherheit ​

  • Das Passwort für den Broker wird verschlüsselt gespeichert und nie an die Seite zurückgesendet.
  • Schalten Sie in der Produktion TLS verwenden ein, und lassen Sie die Zertifikatsausnahmen ausgeschaltet.
  • Verwenden Sie für jede Anlage bzw. jeden Publisher einen eigenen Broker-Benutzer und eine eigene Client-ID; geben Sie diesem Benutzer auf dem Broker nur für die benötigten Topics Schreibrechte.
  • Der Hauptdienst sendet das Passwort für den Broker nur über https oder über eine lokale Adresse auf demselben Server an den Publisher-Dienst. Geben Sie die Ports des Publisher-Dienstes nicht für das externe Netzwerk frei.

Beziehung zur Konfigurationsdatei ​

Vor Version 2.10 konnte der MQTT-Publisher nur über die Konfigurationsdateien des Dienstes eingerichtet werden. Diese Einstellungen funktionieren auch nach der Aktualisierung weiter:

SituationGültige Einstellungsquelle
Noch nie über die Webseite gespeichertKonfigurationsdateien des Dienstes; das bisherige Verhalten bleibt unverändert.
Mindestens einmal über die Webseite gespeichertWeb-Einstellungen. Die Werte für den Veröffentlichungsschalter, Broker, TLS, Topic, QoS, Retain und Filter in der Datei werden nicht mehr verwendet.

Gibt es noch keine Web-Einstellung, füllt die Seite das Formular mit den vorhandenen Einstellungen aus der Datei:

  • Das Passwort wird nicht importiert. Verwendet die bestehende Konfiguration ein Passwort, weist die Seite darauf hin; geben Sie vor dem Speichern oder Testen das Passwort ein, oder aktivieren Sie die Option Ohne Passwort speichern.
  • Bis Sie auf Speichern klicken, ändert sich nichts, und die Einstellungen aus der Datei bleiben gültig.

Nachdem Sie einmal über die Webseite gespeichert haben, können Sie in der Oberfläche nicht mehr zu den Einstellungen aus der Datei zurückkehren. Um die Veröffentlichung anzuhalten, schalten Sie Veröffentlichung aktiviert aus.

Einige technische Einstellungen verbleiben in jedem Fall in den Konfigurationsdateien des Dienstes und können nicht über die Webseite geändert werden; wenden Sie sich dafür an Ihren Systemintegrator. Der Schalter Veröffentlichung aktiviert schaltet die Veröffentlichung nur ein, wenn die Komponente aktiviert ist.

Sicherung und Wiederherstellung ​

Die Einstellungen des MQTT-Publishers sind in der Konfigurationssicherung als Modul MQTT-Publisher-Einstellungen enthalten (siehe Sicherung und Wiederherstellung):

  • Das Passwort für den Broker wird nie in die Sicherung geschrieben.
  • Dieses Modul wird nur in Sicherungen geschrieben, die Benutzer erstellen, die diese Seite verwalten dürfen, und nur bei Wiederherstellungen angewendet, die diese Benutzer starten.
  • Bei der Wiederherstellung bleibt das am Ziel gespeicherte Passwort nur erhalten, wenn das Verbindungsziel (Adresse, Port, Benutzername, TLS) gleich ist und die Zertifikatsprüfung nicht gelockert wurde. Andernfalls geben Sie das Passwort auf der Seite erneut ein.
  • Ein Datensatz mit ungültigen Einstellungen wird mit ausgeschalteter Veröffentlichung wiederhergestellt.
  • Wiederhergestellte Einstellungen werden ohne Neustart des Dienstes innerhalb von etwa 30 Sekunden angewendet.

Fehlerbehebung ​

Meldungen des Verbindungstests ​

MeldungMaßnahme
Benutzername oder Passwort falsch.Prüfen Sie den Broker-Benutzer und das Passwort.
Der Broker hat diesen Client nicht autorisiert.Prüfen Sie auf dem Broker die Berechtigungen des Benutzers und der Client-ID.
Der Broker hat die Client-ID nicht akzeptiert.Versuchen Sie eine andere Client-ID.
Der Broker hat diesen Client gesperrt.Heben Sie die Sperre auf dem Broker auf.
Der Broker ist derzeit nicht verfügbar.Prüfen Sie den Zustand des Brokers.
Der Broker unterstützt die MQTT-Protokollversion nicht.Prüfen Sie die Einstellungen des MQTT-Listeners des Brokers.
Zeitüberschreitung bei der Verbindung.Prüfen Sie Adresse, Port und Firewall-Regeln.
Der Broker ist nicht erreichbar (Adresse nicht auflösbar oder Verbindung abgelehnt).Prüfen Sie, ob die Adresse vom Server des Publisher-Dienstes aus aufgelöst werden kann und der Port offen ist.
Der TLS-Handshake ist fehlgeschlagen (Zertifikats- oder Protokollfehler).Prüfen Sie den TLS-Port, das Zertifikat des Brokers und die vertrauenswürdigen Zertifikate auf dem Server.
Ein anderer Verbindungstest läuft; bitte versuchen Sie es gleich erneut.Versuchen Sie es nach einigen Sekunden erneut.
Das gespeicherte Passwort konnte nicht entschlüsselt werden; geben Sie das Passwort erneut ein.Geben Sie das Passwort erneut ein.

Fehlermeldungen ​

CodeMeldungMaßnahme
4930Der MQTT-Publisher-Dienst ist nicht erreichbar.Prüfen Sie, ob der Publisher-Dienst installiert ist und läuft.
4931Der MQTT-Publisher-Dienst hat den Producer-Schlüssel dieser Installation abgelehnt.Reparieren Sie die Installation mit dem Installationsprogramm, oder wenden Sie sich an Ihren Systemintegrator.
4932Der Verbindungstest ist nicht verfügbar, weil die Lizenz dieser Installation keine MQTT-Integration enthält.Installieren Sie eine Lizenz, die die MQTT-Integration enthält.
4933Der MQTT-Broker-Verbindungstest ist fehlgeschlagen.Verwenden Sie je nach den Angaben im weiteren Text der Meldung die Tabelle oben.
4934Die MQTT-Publisher-Einstellungen sind ungültig; es wurde nichts gespeichert.Prüfen Sie die Feldregeln und die Hinweise zum Passwort.

Statuskarte in Ordnung, aber keine Nachrichten ​

  • Der vollständige Name des Tags muss mit einem der Tag-Filter übereinstimmen.
  • Das abonnierte Topic muss zum gewählten Topic-Format und Präfix passen.
  • Das Tag muss tatsächlich eine Wert- oder Qualitätsänderung erzeugen; für ein Tag mit konstantem Wert wird keine Nachricht gesendet.
  • Wurde der Publisher-Dienst gerade erst gestartet, wird mit der Veröffentlichung gewartet, bis die Einstellungen erneut gesendet wurden (höchstens etwa 30 Sekunden).
  • Bei langen Unterbrechungen ist die Warteschlange möglicherweise voll gelaufen; grenzen Sie die Tag-Filter ein, um unnötigen Datenverkehr zu verringern.

2WinScada 2.10