Broker-Tests

MQTT Explorer: einen Broker inspizieren und debuggen

So nutzt du MQTT Explorer: Topic-Baum durchsuchen, Retained Messages finden und löschen, Payloads vergleichen, Werte plotten und sicher per TLS verbinden.

Aktualisiert · 8 Min. Lesezeit

MQTT Explorer: einen Broker inspizieren und debuggen

MQTT Explorer ist ein kostenloser Desktop-Client, der einen Broker abonniert und alles Empfangene als lebendigen, aufklappbaren Topic-Baum darstellt. Er beantwortet am schnellsten die Frage "Was liegt eigentlich auf diesem Broker?": welche Topics existieren, welche Retained Messages halten, was sich im letzten Payload geändert hat und wie sich ein Wert über die Zeit entwickelt. Dieser Guide behandelt Installation, sichere Verbindung und die Funktionen, die beim Debuggen zählen.

MQTT Explorer installieren

MQTT Explorer von Thomas Nordquist läuft unter Windows, macOS und Linux. Lade ihn von mqtt-explorer.com oder den GitHub-Releases des Projekts herunter oder nutze einen Paketmanager:

Install with a package manager
# macOS (Homebrew)
brew install --cask mqtt-explorer

# Linux (Snap)
sudo snap install mqtt-explorer

# Windows (winget)
winget install thomasnordquist.MQTT-Explorer

Unter Linux funktioniert auch das AppImage ohne Installation. Paketnamen können sich zwischen Releases ändern; schlägt einer fehl, nimm den Build von der Release-Seite.

Mit einem Broker verbinden

Beim Start öffnet sich der Verbindungsdialog. Trage ein:

FeldUnverschlüsseltes TCPTLSSicherer WebSocket
Protocolmqtt://mqtt://ws://
Hostbroker.connectmq.combroker.connectmq.combroker.connectmq.com
Port188388838084
Encryption (tls)ausanan
Validate certificate—anan
Basepath——mqtt
Username / Passwordfalls nötigdeine Zugangsdatendeine Zugangsdaten

Nimm TLS, sobald Zugangsdaten im Spiel sind — auf dem unverschlüsselten 1883 geht das Passwort im Klartext über die Leitung. Lass Validate certificate eingeschaltet; ausgeschaltet verdeckt es echte Probleme wie einen falschen Hostnamen. Bei einem Broker mit privater CA hinterlegst du die CA-Datei unter Advanced → Certificates.

Unter Advanced setzt du auch die MQTT Client ID. Gib ihr einen erkennbaren Namen wie explorer-deinname; verwendest du die ID eines laufenden Geräts, trennt der Broker einen der beiden, und du jagst einen Phantom-Bug ("session taken over"). Der Client-ID-Generator hilft, wenn du eine eindeutige ID brauchst.

Testdaten erzeugen

Zum Mitmachen publizierst du ein paar Nachrichten auf dein Test-Präfix — Retained-Statusmeldungen und einen sich ändernden Telemetriewert:

demo-data.sh
H=broker.connectmq.com
P=testmqtt/explorer

mosquitto_pub -h $H -t "$P/device-1/status" -m online -r
mosquitto_pub -h $H -t "$P/device-2/status" -m offline -r
mosquitto_pub -h $H -t "$P/config" -m '{"interval":5,"unit":"C"}' -r

for i in $(seq 1 30); do
  T=$(awk -v s=$RANDOM 'BEGIN{srand(s); printf "%.1f", 20+rand()*3}')
  mosquitto_pub -h $H -t "$P/device-1/temperature" -m "{\"temp\":$T,\"seq\":$i}"
  sleep 2
done

Ohne installierte mosquitto-Tools geht das Gleiche im Browser mit dem Online-MQTT-Client.

Den Topic-Baum lesen

Der linke Bereich baut die Hierarchie aus den Topic-Ebenen auf: testmqtt → explorer → device-1 → temperature. Jeder Knoten zeigt, wie viele Unter-Topics und Nachrichten er enthält, und Knoten leuchten kurz auf, wenn eine neue Nachricht eintrifft — aktive Zweige fallen so sofort auf.

Nutze den Baum, um dein Topic-Design zu prüfen:

  • Tippfehler und Groß-/Kleinschreibung fallen sofort auf — Device-1 und device-1 sind getrennte Zweige, denn MQTT-Topics unterscheiden Groß- und Kleinschreibung.
  • Führende oder abschließende Schrägstriche erzeugen eine leere Ebene (/testmqtt/... hat einen leeren Wurzelknoten).
  • Unerwartete Tiefe — versehentlich ins Topic kodierte Payload-Daten (.../temperature/21.5) erscheinen als Hunderte Geschwisterknoten.

Das Suchfeld oben filtert den Baum nach Topic-Namen. Um zu prüfen, wie sich ein Wildcard-Abo gegenüber diesen Topics verhalten würde, nutze den Topic Matcher. Mehr zur Struktur unter MQTT-Topics und Wildcards.

Werte, Verlauf und Diffs untersuchen

Klickst du auf ein Topic, zeigt die Seitenleiste den neuesten Wert — als JSON formatiert, wenn sich der Payload parsen lässt — sowie QoS, Retained-Flag und Empfangszeit. Darunter liegt der Verlauf der letzten Nachrichten auf diesem Topic.

Ändert sich ein Payload, kann MQTT Explorer ein Diff zur vorherigen Nachricht anzeigen; ein einzelnes geändertes Feld in einem großen JSON-Dokument ist damit offensichtlich. Ideal für Fragen wie "Welches Feld aktualisiert die Firmware bei jeder Meldung?" oder "Hat sich die Konfiguration nach dem Deployment geändert?".

Für numerische Werte — eine einfache Zahl oder ein Zahlenfeld in JSON — nutze die Chart-Option im Verlauf, um den Wert über die Zeit zu plotten. Ein Sägezahnmuster, ein hängender Sensor oder ein Wert, der nach jedem Reconnect auf null springt, ist im Diagramm viel leichter zu erkennen als in einer Nachrichtenliste.

Retained Messages finden und löschen

Retained Messages sind die häufigste Quelle für "Geisterdaten": Ein Gerät, das seit Monaten offline ist, erscheint weiter online, weil sein letzter Retained-Status auf dem Broker liegt. In MQTT Explorer sind Retained Messages im Werte-Bereich markiert; du kannst also durch den Baum gehen und sehen, welche Topics eine halten.

Zum Entfernen wählst du das Topic und klickst im Abschnitt Topic auf das Löschen-Symbol. Der Client publiziert eine leere Retained Message auf das Topic — der Standardweg, sie zu löschen. Für einen ganzen Zweig nutzt du das rekursive Löschen. Zwei Einschränkungen:

  • Dein Benutzer braucht Publish-Rechte auf diesen Topics. Verweigert die ACL das, passiert beim Löschen auf vielen Brokern stillschweigend nichts — siehe ACL verweigert still.
  • Ein Gerät, das seinen Retained-Zustand beim Reconnect neu publiziert, holt die Nachricht zurück. Behebe die Quelle, nicht nur den Broker.

Kommt eine Retained Message trotzdem immer wieder, geht Retained Message lässt sich nicht löschen die übrigen Ursachen durch.

Testnachrichten publizieren

Der Abschnitt Publish in der Seitenleiste sendet eine Nachricht an ein beliebiges Topic, mit Payload-Editor (raw, JSON oder XML) sowie QoS- und Retain-Optionen. Ein Klick auf ein Topic im Baum füllt dessen Namen vor, sodass du eine vorhandene Nachricht schnell erneut senden oder anpassen kannst — etwa einen Befehl an testmqtt/explorer/device-1/set schicken und beobachten, wie sich das Status-Topic des Geräts ändert.

$SYS für die Broker-Gesundheit beobachten

Viele Broker veröffentlichen Statistiken unter $SYS/ — verbundene Clients, Nachrichtenraten, Uptime. Behalte das Abo auf $SYS/#, wenn dein Broker es unterstützt, und plotte beim Testen $SYS/broker/clients/connected oder die Lastzähler. Welche Topics es gibt, hängt vom Broker ab; MQTT-$SYS-Topics listet die gängigen. Managed Services können $SYS einschränken oder weglassen.

Häufige Probleme

SymptomUrsacheLösung
Hängt bei "Connecting"Port und Encryption-Schalter passen nicht, oder Port blockiert8883 + Encryption an; 1883 + aus; Port vorher testen
Verbindet, dann TrennungDoppelte Client-ID, oder Broker lehnt das #-Abo abEindeutige Client-ID; eigenes Präfix abonnieren
Baum bleibt leerAbo deckt die Topics nicht ab, oder es wird nichts publiziertAbos unter Advanced prüfen; Testnachricht publizieren
WebSocket-Verbindung scheitertBasepath fehlt oder falscher Portws:// + Encryption an + Port 8084 + Basepath mqtt
App wird langsamZu viele Topics oder hohe NachrichtenrateAbos einschränken; Baum leeren und neu verbinden

MQTT Explorer oder ein anderer Client?

Beim Durchsuchen ist MQTT Explorer unschlagbar: Topic-Bäume, Retained Messages, Diffs und schnelle Diagramme. Für MQTT-5-Features oder viele parallele Verbindungen ist er weniger geeignet — dort ist MQTTX stärker, und der Vergleich der MQTT-Desktop-Clients deckt den Rest ab. Für einen Check ohne Installation von jedem Rechner aus nimm den Browser-Client.

Testdaten aus dem Browser publizieren

Lass MQTT Explorer beim Entwickeln offen: Richte ihn per TLS auf ein enges Präfix, lass dir vom Baum zeigen, was deine Geräte wirklich publizieren, und nutze Diff-, Chart- und Retained-Ansichten, um aus "irgendwas stimmt nicht" ein konkretes Topic und Feld zu machen. Er ergänzt automatisierte Tests, die dasselbe prüfen — ersetzt sie aber nicht.

Häufig gestellte Fragen

Wie lösche ich eine Retained Message in MQTT Explorer?

Wähle das Topic im Baum aus und klicke auf das Löschen-Symbol (Papierkorb) im Abschnitt Topic der Seitenleiste. MQTT Explorer publiziert eine leere Retained Message auf dieses Topic, woraufhin der Broker sie entfernt. Für einen ganzen Teilbaum nutzt du das rekursive Löschen — und prüfst, dass dein Benutzer dort publizieren darf.

Warum hängt MQTT Explorer bei connecting?

Meist passen Port und Encryption-Schalter nicht zusammen: Port 8883 braucht Encryption (TLS) an, Port 1883 aus. Für WebSockets wählst du das Protokoll ws://, den WebSocket-Port und setzt den Basepath, zum Beispiel mqtt. Eine Firewall, die den Port blockiert, zeigt dasselbe Symptom.

Unterstützt MQTT Explorer MQTT 5?

MQTT Explorer ist rund um MQTT 3.1.1 gebaut und hervorragend zum Durchsuchen von Topics und Retained Messages. Wenn du MQTT-5-Features wie User Properties, Message Expiry oder Reason Codes genau untersuchen musst, nutze parallel einen Client wie MQTTX oder den Online-MQTT-Client.