Einleitung

Was ist TBMQ

TBMQ ist ein Open-Source-MQTT-Broker von Thingsboard, mit dem Ziel, sehr große IoT-Installationen effizient und zuverlässig zu betreiben.
Einige Eckdaten:

Wichtige Funktionen & Eigenschaften

Die Kern-Funktionalitäten lassen sich in mehrere Kategorien unterteilen:

Skalierbarkeit & Verfügbarkeit

Kommunikationsmuster
TBMQ unterstützt typische IoT-Szenarien:

Sicherheits- & Managementfunktionen

Integration mit externen Systemen

Technische Architektur

Architekturintegration

Der MQTT-Broker ist selbst über MQTT an Thingsboard angebunden. Sensorpakete werden von Chirpstack aufgenommen und in den Applications mit Tags versehen. Diese Tags werden in Thingsboard verwendet um die Sensorpakete Gerätegruppen zuzuweisen. Dies wird im jeweiligen Data-Converter der verbundenen Integration umgesetzt. Ein gerät kann hierbei mehreren Gruppen zugeordnet werden. Jede Gruppe erhält später ihren eigenen Topic - so können Zugriffe über Abonnements von Kunden/Nutzern gesteuert werden.

image.png



Um Sensordaten über MQTT an Kunden zu übertragen, werden diese über einen Rulechain-Flow mittels eines eigenen MQTT Clients (bspw. PUB_stg_F&E_01) an TBMQ gesendet. Der Flow ruft hierbei für jedes Datenpaket mehrere Systematribute ab.

Aus diesen Informationen wird im MQTT-Node der Topic dynamisch generiert. Da dieser an die Kunden ausgespielt wird, sind Tenant und Gruppen durch die IDs (anstatt der Klarnamen) verschleiert. Zur besseren Übersicht werden die Application-Namen im Klartext eingebunden. Ein Topic kann somit beispielsweise so aussehen:

7f1857b0-51a9-11f0-8d0d-9b856896f048/df633c20-a8f2-11f0-85bc-9bdb41bca33f/Pumpwerküberwachung/Dragino CS01-LB - Stromüberwachung NSA/#

Hierbei wird für jede Gerätegruppe (definiert über Tags in Chirpstack) ein eigener Topic generiert. Wie im obigen Schaubild zusehen, werden einzelne Datenpakete hierdurch auf mehrere Topics dupliziert und können so unterschiedlichen Clients zur Verfügung gestellt werden (Datenkapselung).

Dadurch lassen sich beispielsweise Sensordaten eines Kunden einem anderen zur Verfügung stellen ohne, dass dieser Kunde die übrigen Sensordaten des anderen Kunden einsehen kann.

Die Erstellung der Topics erfolgt somit in Thingsboard vollautomatisch und wird lediglich über Tags in Chirpstack gesteuert.
Wichitg ist hierbei, dass künftig alle Data-Converter so implementiert werden müssen, dass die Tags aus Chirpstack die Sensoren in Gerätegruppen organisieren.
Hier ein Beispiel-Baustein:

TbLib.js · main · SWHL Digital / IoT / Scripte_Parser / TB Data Converter / Basismodule für Konverter · GitLab




image.png


Rulechain-Flow zur Anreicherung der Datenpakete mit Systemparametern, Topicgenerierung und Übertragung via MQTT-Node.

Der “Publish”-Client zur Verbindung von TB mit TBMQ folgt folgender Namenskonvention:

PUB_[Umgebungskennung]_[Tenant]_[Indexnummer]

Beispiel:



image.png


Um die Gruppen-IDs zu erhalten ist ein API-call auf das eigene System notwendig. Hierfür ist in jedem Tenant ein eigener User einzurichten, über den auf die API zugegriffen werden kann.

Idealerweise heißt der User in jedem Tenant gleich.



image.png


TODO: TBMQ-Automated-Client-Generation

In TBMQ sollen basierend auf den durch Chirpstack erstellenten Topics automatisch MQTT Clients angelegt werden.

Hierzu ist ein Skript erforderlich, welches sich selbst per Client mit dem Broker verbindet und alle vorhandenen Topics überwacht. Ist ein Topic unbekannt, erstellt das Skript automatisch einen Client, welcher diesen Topic abonniert. Dieser Client kann anschließend dem Kunden zur Verfügung gestellt werden. Das Skript vergibt hierbei zunächst kein Passwort für den Client. Dieses wird bei der Ausrollung an den Kunden vergeben.

Nutzer (manuell) anlegen

Die Nutzerverwaltung in TBMQ befindet sich unter dem Reiter "Users". Hier sind alle angelegten Nutzer einsehbar. Es existiert lediglich die Nutzergruppe "Administratoren" - entsprechend ist jeder angelegte Nutzer automatisch Administrator mit Vollzugriff auf das gesamte System. 

image.png

Um einen  neuen Nutzer anzulegen wird über  das + rechts oben das Nutzerformular geöffnet. Notwendig ist lediglich eine Email-Adresse.
Nach dem Erstellen des Nutzers ist eine erste Anmeldung möglich. Der Nutzername entspricht der Email, das Passwort ist initial immer sysadmin

Username: EMAIL

Password: sysadmin

Anschließend ist die Vergabe eines eigenen Passworts möglich.
Auch wenn dieser Schritt übersprungen werden kann ist er durchzuführen!

image.png

MQTT Client Verbindungen

Die Verwaltung der MQTT-Clients erfolgt über den Reiter "Credentials". 

Auch wenn Clients gleichberechtigt sind wird zwischen folgenden Clients unterschieden. Die entsprechende Nomenklatur ist zu verwenden.

Subscriptions

Subscriptions (Abonnements)

Verfügbar seit TBMQ Version 2.0

In MQTT ist ein Subscription‑Eintrag ein Mechanismus, der es Clients ermöglicht, Nachrichten zu empfangen, die für bestimmte Topics bestimmt sind. Wenn ein Client ein Topic abonniert, signalisiert er damit sein Interesse daran, alle Nachrichten zu erhalten, die auf dieses Topic publiziert werden.


Tabelle: Subscriptions

Auf der Seite Subscriptions können alle Abonnements des Brokers beobachtet, analysiert oder gefiltert werden. Die Tabelle enthält folgende Informationen zu jedem einzelnen Subscription‑Eintrag:

Die Subscriptions‑Tabelle zeigt alle aktuellen Abonnements des Brokers an.
Das Filter‑Fenster ermöglicht eine einfache Filterung der Tabelle nach jeder Spalte.

image.png


Subscriptions verwalten

Abonnements können direkt im Fenster Session details hinzugefügt, entfernt oder bearbeitet werden.

Vorgehen:

  1. Öffnen Sie im linken Menü die Seite Subscriptions.
  2. Klicken Sie auf einen  Eintrag um die Session details zu öffnen
  3. Öffnen Sie den Tab Subscriptions, um die Session-Abonnements zu verwalten.
  4. Fügen Sie Abonnements hinzu, bearbeiten oder löschen Sie diese.
  5. Klicken Sie auf Update, um Änderungen zu speichern.

Subscriptions Chart

Auf den Seiten Monitoring und Home können Sie die Anzahl aktueller Abonnements und weitere Broker‑Aktivitäten nachverfolgen.


Leeren von Subscription‑Knoten

Subscriptions werden im Broker in einer Trie‑Datenstruktur gespeichert, die besonders effiziente Suchvorgänge ermöglicht.
Ein Trie (oder Präfixbaum) ordnet Topic‑Filter hierarchisch, wobei jeder Knoten eine Topic‑Ebene repräsentiert.
Der Broker kann dadurch anhand eines publizierten Topic‑Namens schnell die zugehörigen Client‑Abonnements finden – was die Performance deutlich verbessert.

Wenn ein Client ein Abonnement entfernt (unsubscribe), löscht der Broker die Daten aus dem Speicher und markiert den entsprechenden Knoten als „leer“.
Mit der Zeit können sich viele solcher leeren Knoten ansammeln, was:

Das Bereinigen leerer Knoten gibt Speicher frei und beschleunigt die Verarbeitung.

Leere Subscription‑Knoten löschen:
Klicken Sie oben rechts auf die Schaltfläche Clear empty subscription nodes (Papierkorb‑Symbol) und bestätigen Sie die Aktion.

Sessions

Sessions (Sitzungen)

Die zugehörige Seite bietet die Möglichkeit, alle im Broker gespeicherten Sitzungen zu beobachten und zu analysieren. Dies umfasst sowohl aktuelle Online‑Sessions – also Clients, die derzeit mit dem Broker verbunden sind – als auch Offline‑Sessions persistenter Clients.
Durch den Zugriff auf diese Seite erhalten Benutzer einen umfassenden Überblick über alle gespeicherten Sitzungen und können sowohl aktive als auch historische Client‑Interaktionen mit dem Broker überwachen und verwalten.


Zugriff auf detaillierte TBMQ‑Session‑Informationen

Gehen Sie wie folgt vor:

  1. Öffnen Sie im linken Menü die Seite Sessions.
  2. Klicken Sie in der Tabelle auf die entsprechende Session‑Zeile, um das Fenster Session Details zu öffnen.

Im Bereich Session Details können Benutzer:

image.png


Session Details

Der Tab Details enthält folgende Informationen:

image.png


Subscriptions

Im Tab Subscriptions können Benutzer die dem Client zugeordneten Abonnements einsehen, darunter:

Obwohl die Session‑Details im Allgemeinen schreibgeschützt sind, können Benutzer Abonnements dennoch verwalten (hinzufügen, entfernen, bearbeiten):

Verfügbare Aktionen:


Metrics

Der Tab Metrics liefert detaillierte Informationen zum Nachrichtenfluss innerhalb der Sitzung. Dies unterstützt die Überwachung der Leistung und Zuverlässigkeit der Nachrichtenübertragung:

Zum Zurücksetzen der Statistik klicken Sie oben rechts auf das Delete‑Symbol.