Logo Herborner Pumpentechnik GmbH & Co KGMQTT Connector – Dokumentation
Inhalt dieser Seite

MQTT Connector – Funktionsbeschreibung

Der MQTT Connector (HP.MQTTConnector) ist eine App von Herborner Pumpen für die FLECS-Plattform. Sie verbindet Ihre Steuerung – eine SPS oder ein Leitsystem – über MQTT mit den übrigen Herborner-Apps auf dem Gerät: Die App bringt einen eigenen MQTT-Broker mit, veröffentlicht dort die Werte der Pumpen als Topics und übernimmt die Werte, die die Steuerung schreibt. Sie ist das Gegenstück zum Modbus Connector für Anlagen, die MQTT statt Modbus TCP verwenden.

Die Apps im Zusammenspiel

App Aufgabe
HP.MQTTConnector MQTT-Schnittstelle zur Steuerung mit eigenem Broker (diese App)
HP.AiCore Wertet die Pumpendaten aus: Differenzdruck, Wirkungsgrad, Pumpen-Statuswort, Vorfilterzustand und berechneter Volumenstrom
HP.CloudLink Verbindung zur Herborner-Cloud: überträgt Mess- und Kennwerte, Ereignisse und Protokolle und liefert Pumpen- und App-Konfigurationen an das Gerät
FLECS Service Mesh Gemeinsamer Datenbus, über den die Apps auf dem Gerät ihre Daten austauschen

Alle Apps laufen auf demselben FLECS-Gerät und tauschen ihre Daten ausschließlich über den Datenbus aus. Der MQTT Connector ist die einzige App mit einer MQTT-Schnittstelle zur Steuerung.

Steuerung (SPS)              HP.MQTTConnector                     Datenbus
┌─────────────┐ publiziert ┌────────────────────┐ Messwerte ┌──────────────────┐
│             │ ─────────► │ Command-Topics     │ ────────► │ HP.AiCore        │
│             │ abonniert  │ (Broker + App)     │ Kennwerte │                  │
│             │ ◄───────── │ State-Topics       │ ◄──────── │                  │
└─────────────┘            └────────────────────┘           ├──────────────────┤
                                                            │ HP.CloudLink     │ ◄──► Herborner-Cloud
                                                            └──────────────────┘

Datenfluss

  1. Die Steuerung publiziert die Messwerte einer Pumpe – Volumenstrom, Drücke, Drehzahl, Leistung, Motorwerte, Umrichter-Status – auf die Command-Topics der Pumpe.
  2. Der MQTT Connector prüft jeden Wert auf Datentyp und die zulässigen Grenzen (Min/Max) und gibt gültige Werte auf den Datenbus. Ungültige Werte werden verworfen und auf dem Fehler-Topic gemeldet.
  3. HP.AiCore berechnet aus den Messwerten die Kennwerte der Pumpe und gibt sie auf den Datenbus.
  4. Der MQTT Connector veröffentlicht Mess- und Kennwerte auf den State-Topics, die die Steuerung abonniert.
  5. HP.CloudLink überträgt Mess- und Kennwerte in die Herborner-Cloud.

Nach einem Neustart fordert der MQTT Connector die Konfigurationen und die aktuellen Kennwerte bei den anderen Apps neu an, damit die State-Topics wieder gefüllt sind.

Pumpen und Entities

Pumpen haben einen festen Satz an Datenpunkten. Jeder Datenpunkt hat ein State-Topic, beschreibbare Datenpunkte zusätzlich ein Command-Topic. Die vollständige Liste mit Topics, Datentypen und Grenzwerten steht in der Standard-Konfiguration.

Die Topics einer Pumpe beginnen mit HP/pump/<Seriennummer>, z. B. HP/pump/AB-2400654-010-01:

Topic Richtung Inhalt
HP/pump/<Seriennummer>/<Datenpunkt> Gerät → Steuerung aktueller Wert, z. B. HP/pump/AB-2400654-010-01/flow_rate = 12.5
HP/pump/<Seriennummer>/set/<Datenpunkt> Steuerung → Gerät neuer Wert eines beschreibbaren Datenpunkts
HP/pump/<Seriennummer> Gerät → Steuerung alle Werte der Pumpe als JSON-Objekt
HP/pump/<Seriennummer>/set Steuerung → Gerät mehrere Werte auf einmal als JSON-Objekt

Alle Schreib-Topics einer Pumpe liegen unter HP/pump/<Seriennummer>/set. Ein Datenpunkt mit dem Namen set erhält deshalb kein Topic.

Pfad über die Nummer: Auf Wunsch schaltet Herborner Pumpen zusätzlich oder statt der Seriennummer die Nummer des Geräts als Pfad ein (number_paths), etwa HP/pump/1/flow_rate. Beide Pfade tragen dieselben Werte und nehmen Befehle an. Die Seriennummer bleibt gleich, wenn Geräte in der Cloud umnummeriert werden; die Nummer nicht. Haben zwei Geräte vorübergehend dieselbe Nummer, behält das erste den Pfad über die Nummer; die Weboberfläche meldet den Konflikt in der Zeile Topics. Befehle über die Seriennummer erreichen immer genau ihr Gerät. Taugt eine Seriennummer nicht als Topic-Ebene (etwa mit /), erhält das Gerät keinen Pfad über sie; die Weboberfläche meldet das in der Zeile Topics.

Beschreibbar sind die Messwerte: Volumenstrom, Drücke (Druckseite, Saugseite, Vorfilter), Drehzahl, Wellenleistung, Motorstrom und -spannung, Betriebsstunden, Energieverbrauch, Umrichter-Statuswort und -Fehlercode, Füllstand Windkessel, Vorfilter gereinigt und Verschmutzungsgrad Vorfilter. Nur lesbar sind die Kennwerte von HP.AiCore – berechneter Volumenstrom¹, Differenzdruck, Wirkungsgrad, Pumpen-Statuswort, Vorfilterzustand¹ – sowie Name und Seriennummer der Pumpe.

¹ Nur, wenn das zugehörige Analysemodul für die Pumpe freigeschaltet ist; sonst bleibt das Topic leer.

Entities sind frei definierte Objekte ohne Pumpe, etwa Messstellen oder Behälter, mit eigenen Datenpunkten. Ihre Topics beginnen mit HP/entity/<UUID>, mit eingeschaltetem Pfad über die Nummer auch HP/entity/<Nr.>; Command-Topics gibt es nur für beschreibbare Datenpunkte.

Pumpen und Entities legt Herborner Pumpen in der Cloud an; HP.CloudLink überträgt ihre Konfiguration auf das Gerät, der MQTT Connector speichert sie lokal. Neu angelegte Pumpen, Entities und Datenpunkte erhalten ihre Topics sofort, ohne Neustart.

Verhalten der MQTT-Schnittstelle

Zugriff

Lesen dürfen alle Benutzer alle Topics unter HP/. Was ein Benutzer schreiben darf, legt seine Liste write fest; jeder Benutzer muss sie haben:

write Darf schreiben
["+"] die Command-Topics aller Pumpen und Entities
[] nichts
["pump"], ["entity"] die Command-Topics aller Pumpen bzw. Entities, auf allen Pfaden
["pump/AB-2400654-010-01"] nur die Command-Topics dieser Pumpe, über die Seriennummer
["pump/1"] nur die Command-Topics der Pumpe 1, über die Nummer (nur mit number_paths)

Mehrere Einträge lassen sich kombinieren. Durchgesetzt werden die Rechte vom Broker: Einen Befehl ohne Recht verwirft er, bevor er die App erreicht. Die Weboberfläche zeigt unter Telemetry je Datenpunkt in der Spalte write access, wer ihn schreiben darf (nur mit dem eigenen Broker; an einem fremden Broker gelten dessen Rechte), und meldet in der Zeile Users Einträge, die auf kein vorhandenes Gerät zeigen.

Standardmäßig gibt es zwei Benutzer:

Benutzer write Darf schreiben Benötigt
plc ["+"] alle Pumpen und Entities ja
monitor [] nichts optional, für lesende Systeme

Die Passwörter stehen nur als Hash in der Konfiguration (Format von mosquitto_passwd) und können so über eThemis gesetzt werden; ein geändertes Passwort gilt sofort. Alternativ werden sie als Umgebungsvariablen der App beim Einrichten auf dem Gerät gesetzt: MQTT_PASSWORD_PLC, MQTT_PASSWORD_MONITOR. Die App überträgt deren Hash in die Konfiguration; eine gesetzte Variable hat Vorrang vor einem Hash aus der Cloud und gilt nach dem nächsten Start der App. Ein Benutzer ohne Passwort kann sich nicht anmelden; die Weboberfläche zeigt ihn unter Users als gesperrt. Gelb wird die Zeile erst, wenn sich kein schreibender Benutzer anmelden kann. Weitere Benutzer kann Herborner Pumpen in der Konfiguration anlegen. Wie Sie ein sicheres Passwort wählen und setzen, steht unter Sicherheit.

Inbetriebnahme und Implementierung

Inbetriebnahme mit einem MQTT-Tool

Für die erste Prüfung genügt ein MQTT-Client auf einem Rechner im selben Netz, etwa MQTT Explorer oder mosquitto_sub/mosquitto_pub.

  1. Verbindung prüfen: mit Benutzer plc und Passwort an <IP-Adresse>:1883 verbinden und HP/status abonnieren. Erwartet: online. Wird die Verbindung abgelehnt, ist das Passwort nicht gesetzt oder falsch.

  2. Werte prüfen: HP/pump/# abonnieren. Unter HP/pump/<Seriennummer>/… erscheinen sofort die Werte jeder Pumpe. Erscheinen keine Pumpen-Topics, sind keine Pumpen konfiguriert – Herborner Pumpen muss sie in der Cloud anlegen, und HP.CloudLink muss auf dem Gerät laufen.

  3. Schreiben prüfen: einen bekannten Wert schreiben und auf dem State-Topic beobachten:

    mosquitto_pub -h <IP-Adresse> -u plc -P <Passwort> -t HP/pump/<Seriennummer>/set/flow_rate -m 12.5
    mosquitto_sub -h <IP-Adresse> -u plc -P <Passwort> -t HP/pump/<Seriennummer>/flow_rate -t HP/error -v
    

    Die Weboberfläche zeigt unter Telemetry in der Zeile flow_rate den neuen Wert.

Implementierung in der Steuerung

Ablauf in Pseudocode:

beim Verbindungsaufbau:
    verbinde(benutzer="plc", passwort=…)
    pumpe = "HP/pump/AB-2400654-010-01"
    abonniere("HP/status", "HP/error", pumpe + "/#")

bei Nachricht:
    "HP/status"            -> daten_gültig = (payload == "online")
    "HP/error"             -> Störung melden (reason, key)
    pumpe + "/set…"        -> ignorieren (eigene Schreibbefehle)
    pumpe + "/<wert>"      -> wert übernehmen

zyklisch (z. B. 1 s):
    publiziere(pumpe + "/set/flow_rate", volumenstrom, qos=1, retain=false)

Einstellungen

Die Einstellungen von Broker, Client und Topics – Port, Topic-Basis, Format, Intervalle, Benutzer – sind mit ihren Standardwerten in der Standard-Konfiguration beschrieben. Herborner Pumpen kann sie über die Cloud anpassen; HP.CloudLink übergibt die Änderung an den MQTT Connector, und die aktuelle Konfiguration wird zurück in die Cloud gemeldet. Einzelne Werte lassen sich außerdem über Umgebungsvariablen der App setzen; sie werden dabei dauerhaft übernommen.

Weboberfläche

Die Weboberfläche der App zeigt:

Ereignisse und Protokolle der App gelangen über HP.CloudLink auch in die Herborner-Cloud.

Sicherheit

Der Broker verlangt Benutzername und Passwort; jeder Benutzer darf nur die Geräte schreiben, die seine Schreibrechte erlauben. Ohne TLS werden Passwörter und Werte jedoch unverschlüsselt übertragen. Mit TLS erzeugt die App Schlüssel und Zertifikat selbst und erneuert sie; der Schlüssel verlässt das Gerät nie. Lässt sich TLS nicht einrichten, arbeitet der Broker mit der bisherigen Einstellung weiter und die Weboberfläche zeigt den Fehler. Die Apps auf dem Gerät tauschen Konfigurationen und Befehle nur noch signiert aus; Nachrichten anderer Absender verwirft die App. Die Weboberfläche arbeitet ohne Anmeldung. Betreiben Sie das Gerät nur in einem vertrauenswürdigen Netz und sichern Sie den Zugang zu Port 1883 und zur Weboberfläche über Firewall oder Netzwerksegmentierung ab.

Wie die einzelnen Sicherheitsebenen wirken und wie Sie sie einrichten, beschreibt die Seite Sicherheit.

Lizenzen

Für die Nutzung gelten die Lizenz und die Lizenzbedingungen (EULA). Der MQTT-Broker Eclipse Mosquitto wird unverändert als eigener Prozess ausgeliefert. Die enthaltene Drittanbieter-Software ist unter Drittanbieter-Lizenzen aufgeführt.