Broker-Tests

MQTT-Broker mit Android und iOS testen

So testest du einen MQTT-Broker vom Android- oder iOS-Handy: Browser-Client über WSS, MQTT-Apps, Termux, Emulatoren und typische Netzwerkfallen im Mobilfunk.

Aktualisiert · 7 Min. Lesezeit

MQTT-Broker mit Android und iOS testen

Um einen MQTT-Broker vom Handy aus zu testen, brauchst du für den schnellsten Weg gar keine App: Öffne den Online-MQTT-Client in Chrome auf Android oder Safari auf iOS, verbinde dich über Secure WebSockets (wss), abonniere und publiziere. Für alles Tiefere – rohes TCP auf 1883, TLS auf 8883, Verhalten im Hintergrund – nimmst du eine native MQTT-App oder ein Terminal auf dem Gerät. Dieser Guide behandelt jeden Ansatz und die Netzwerkfallen, die nur mobil auftauchen.

Warum überhaupt vom Handy testen?

Dein Laptop im Büro-WLAN ist nicht dort, wo deine Nutzer sind. Ein mobiler Test beantwortet Fragen, die ein Desktop-Test nicht beantworten kann:

  • Akzeptiert der Broker Verbindungen aus Mobilfunknetzen, nicht nur von deiner Büro-IP?
  • Kappen Carrier-NAT und Idle-Timeouts eine ruhige Verbindung nach ein paar Minuten?
  • Übersteht die Verbindung deiner App Bildschirmsperre, App-Wechsel und Netzwechsel (WLAN → 4G/5G)?
  • Werden Zertifikate im Trust Store des Handys validiert, der sich von deinem Desktop unterscheiden kann?

Option 1 – Der Browser über WSS

Mobile Browser unterstützen WebSockets, also funktioniert MQTT over WebSockets genau wie auf dem Desktop.

  1. Öffne auf dem Handy testmqtt.com/client.
  2. Lass das Protokoll auf WSS. Für deinen eigenen Broker wählst du Custom broker… und gibst Host broker.connectmq.com, Port 8084, Pfad mqtt und die Zugangsdaten deines Testbenutzers ein.
  3. Abonniere ein eindeutiges Topic wie testmqtt/phone-4c21/# und publiziere auf testmqtt/phone-4c21/hello.

Um nicht auf der kleinen Tastatur zu tippen, baust du den Link am Laptop und öffnest ihn auf dem Handy (schick ihn dir selbst oder mach einen QR-Code daraus):

Open this link on the phone
https://testmqtt.com/client?url=wss://broker.connectmq.com:8084/mqtt&topic=testmqtt/phone-4c21/%23

Dann publizierst du vom Laptop und siehst zu, wie das Handy empfängt – das beweist den gesamten Pfad von einem Desktop-Client über den Broker bis ins Mobilfunknetz:

Laptop → broker → phone
mosquitto_pub -h broker.connectmq.com -p 1883 \
  -t testmqtt/phone-4c21/hello -m "from laptop" -q 1

Schalte das Handy von WLAN auf mobile Daten und wiederhole den Test. Klappt es im einen Netz und im anderen nicht, hast du ein Netzwerkproblem, kein Broker-Problem. Die Schritt-für-Schritt-Version für den Desktop findest du unter MQTT-Broker im Browser testen.

Option 2 – Native MQTT-Apps

Native Apps öffnen echte TCP- und TLS-Sockets und testen damit dieselben Ports wie deine Geräte. Beide App Stores bieten mehrere allgemeine MQTT-Clients und Dashboard-Apps – auf Android etwa MyMQTT, MQTT Dash und IoT MQTT Panel, auf iOS etwa MQTTool und IoT MQTT Panel. Verfügbarkeit und Funktionen ändern sich, prüfe also den Store-Eintrag und bevorzuge Apps, die Folgendes können:

FunktionWarum sie beim Testen zählt
TCP und TLS (8883)Den Port testen, den deine Geräte wirklich nutzen
Eigene CA- / ZertifikatsoptionenPrivate CAs und Client-Zertifikate
Benutzername / PasswortAuthentifizierte Broker und ACL-Prüfungen
Wahl zwischen MQTT 3.1.1 / 5Zur Firmware deiner Geräte passend
Abos mit WildcardsEinen ganzen Geräte-Teilbaum beobachten
Retain- und QoS-OptionenEchtes Geräteverhalten nachstellen

Nutze einen eigenen Testbenutzer mit ACLs, die auf Test-Topics beschränkt sind – mobile Apps speichern Zugangsdaten meist auf dem Gerät.

Option 3 – Ein Terminal auf dem Handy

Auf Android bietet dir Termux eine Linux-Umgebung mit den Mosquitto-Kommandozeilen-Clients:

Termux on Android
pkg install mosquitto
mosquitto_sub -h broker.connectmq.com -p 1883 -t 'testmqtt/phone-4c21/#' -v &
mosquitto_pub -h broker.connectmq.com -p 1883 -t testmqtt/phone-4c21/hello -m "from termux"

Dieselben Befehle funktionieren mit -p 8883 und --capath oder --cafile für TLS (zeige auf ein CA-Bundle, das auf dem Gerät liegt). Auf iOS sind Terminal-Apps eingeschränkter; zum Skripten auf dem iPhone sind eine native App oder der Browser meist einfacher. Sobald die CLI läuft, gilt alles aus mosquitto_pub- und mosquitto_sub-Beispiele auch auf dem Handy.

Die eigene App testen: Emulatoren und Simulatoren

Wenn sich die App, die du baust, nicht verbindet, finde heraus, ob es am Code oder am Netzwerk liegt:

  • Android-Emulator: localhost im Emulator ist der Emulator selbst. Mit 10.0.2.2 erreichst du einen Broker auf deinem Entwicklungsrechner.
  • iOS-Simulator: teilt sich den Netzwerkstack des Macs, localhost erreicht also einen Broker auf dem Mac. Ein echtes iPhone nicht – es braucht die LAN-IP des Macs.
  • Echte Geräte: Der Broker muss auf dem LAN-Interface lauschen, nicht nur auf 127.0.0.1 (Mosquitto 2.x ohne konfigurierten Listener akzeptiert nur lokale Verbindungen), und die Host-Firewall muss den Port freigeben.

Plattformregeln können Klartextverbindungen in deiner App ebenfalls blockieren. Die Network Security Configuration von Android blockiert Cleartext-Traffic standardmäßig für HTTP-basierte Stacks, was ws:// betrifft; App Transport Security auf iOS gilt für URLSession-basierte Verbindungen, inklusive WebSockets. Nutze wss:// oder TLS (8883), statt Ausnahmen einzutragen. Die bibliotheksspezifische Einrichtung findest du in MQTT auf Android mit Kotlin und MQTT auf iOS mit Swift.

Netzwerkfallen im Mobilfunk

SymptomWahrscheinliche UrsacheWas du versuchen kannst
Klappt im WLAN, Timeout über mobile DatenNetz beschränkt Ports 1883/8883WSS auf 443 testen, falls dein Broker es anbietet; beim Provider/MDM nachfragen
Verbindung bricht nach ein paar ruhigen Minuten abIdle-Timeout des Carrier-NATKeep-Alive unter dem Timeout (z. B. 30–60 s); siehe NAT-Timeouts
Trennt sich bei jeder BildschirmsperreBetriebssystem suspendiert die AppErwartet; auf Reconnect + persistente Sessions auslegen
Reconnect-Welle beim NetzwechselIP-Adresse ändert sich beim HandoverSauberer Reconnect mit Backoff, gleiche Client-ID
Connection refused nur vom Handy ausBroker an localhost gebunden oder Firewall-RegelAuf 0.0.0.0 lauschen, Port öffnen, mit nc von einem anderen Rechner testen
Zertifikatsfehler auf dem Handy, Desktop okFehlendes Intermediate oder private CAKomplette Kette ausliefern; CA auf Testgeräten installieren

Für realistische Tests mit wackeligem Netz im Labor siehe MQTT unter Mobilfunkbedingungen testen.

Ein mobiler Testplan in fünf Minuten

  1. Handy-Browser im WLAN: über WSS verbinden, abonnieren, publizieren, empfangen.
  2. Derselbe Test über mobile Daten.
  3. Vom Laptop publizieren, auf dem Handy empfangen (und umgekehrt).
  4. Native App oder Termux: auf TCP 1883 und TLS 8883 mit deinen echten Zugangsdaten wiederholen.
  5. Ein Abo zehn Minuten ruhen lassen; prüfen, ob es überlebt.
  6. Bildschirm sperren, Netz wechseln, entsperren: bestätigen, dass deine App sich neu verbindet und neu abonniert.

Client auf dem Handy öffnen

Ein Test vom Handy dauert Minuten und findet Probleme, die kein Desktop-Test zeigt: gesperrte Ports über mobile Daten, NAT-Timeouts, schlafende Apps und Zertifikatsketten, die nur am Trust Store des Geräts scheitern. Starte im mobilen Browser über WSS und wechsle dann zu einem nativen Client für die Ports und das Verhalten, auf die deine App angewiesen ist.

Häufig gestellte Fragen

Wie teste ich einen MQTT-Broker am schnellsten vom Handy aus?

Öffne einen Online-MQTT-Client wie testmqtt.com/client im Browser des Handys und verbinde dich über Secure WebSockets (wss, oft Port 8084 oder 443). Das funktioniert in Chrome auf Android genauso wie in Safari auf iOS und braucht keine App-Installation.

Warum erreicht mein Handy den MQTT-Broker auf meinem Laptop nicht?

localhost auf dem Handy ist das Handy selbst. Nutze die LAN-IP des Laptops, stelle sicher, dass beide im selben Netz sind, dass der Broker auf allen Interfaces lauscht statt nur auf 127.0.0.1 und dass die Firewall des Laptops den Port freigibt.

Warum funktioniert MQTT im WLAN, aber nicht über mobile Daten?

Manche Mobilfunk- und Gastnetze beschränken Nicht-Web-Ports wie 1883 und 8883, und Carrier-NAT kann inaktive Verbindungen schnell kappen. Teste Port 443 oder WebSockets über 443, falls verfügbar, und nutze einen Keep-Alive, der kürzer ist als der Idle-Timeout des Netzes.