MQTT-Code-Generator
Wähle Broker, Transport und Topics und erhalte einen vollständigen, lauffähigen MQTT-Client in Python, Node.js, Browser-JavaScript, ESP32/Arduino, Go, Java, C# oder für die mosquitto-Kommandozeile — verbinden, abonnieren und publishen mit einem Copy-and-paste.
Generierter Code
Im Online-Client öffnenimport uuid
import paho.mqtt.client as mqtt
BROKER = "broker.connectmq.com"
PORT = 1883
SUB_TOPIC = "testmqtt/demo/#"
PUB_TOPIC = "testmqtt/demo/hello"
PAYLOAD = "Hallo von TestMQTT"
QOS = 1
CLIENT_ID = f"python-{uuid.uuid4().hex[:8]}"
def on_connect(client, userdata, flags, reason_code, properties):
if reason_code.is_failure:
print(f"Connection failed: {reason_code}")
return
print(f"Connected to {BROKER}:{PORT}")
# Subscribing here means the subscription is renewed after every reconnect.
client.subscribe(SUB_TOPIC, qos=QOS)
client.publish(PUB_TOPIC, PAYLOAD, qos=QOS)
def on_message(client, userdata, msg):
print(f"{msg.topic}: {msg.payload.decode(errors='replace')}")
def on_disconnect(client, userdata, flags, reason_code, properties):
print(f"Disconnected: {reason_code}")
client = mqtt.Client(
mqtt.CallbackAPIVersion.VERSION2,
client_id=CLIENT_ID,
protocol=mqtt.MQTTv311,
transport="tcp",
)
client.on_connect = on_connect
client.on_message = on_message
client.on_disconnect = on_disconnect
client.connect(BROKER, PORT, keepalive=60)
client.loop_forever() # blocks; handles reconnects. Stop with Ctrl+CSo funktioniert der generierte Code
Jedes Snippet folgt demselben Ablauf: Verbindung zum Broker öffnen, dein Topic abonnieren, sobald die Verbindung bestätigt ist, eine Nachricht publishen und dann weiterlaufen und alles ausgeben, was ankommt. Im Connect-Handler zu abonnieren (sofern die Bibliothek einen hat) ist wichtiger, als es aussieht — so werden Subscriptions nach einem Reconnect automatisch wiederhergestellt. Lässt du die Client-ID leer, erzeugt jedes Programm zur Laufzeit eine zufällige, sodass sich zwei Kopien nie gegenseitig vom Broker werfen.
Der Transport bestimmt das URL-Schema. Reines TCP läuft meist auf Port 1883 und TLS auf 8883, während WebSocket-Listener je nach Broker variieren — deshalb werden Port und Pfad aus dem Preset übernommen. Alle Konventionen findest du im Leitfaden zu MQTT-Ports.
Warum diese Bibliotheken
- Python — paho-mqtt 2.x. Der Referenz-Client von Eclipse, seit über zehn Jahren stabil. Version 2 hat die Callback-Signaturen geändert, deshalb funktionieren ältere Tutorials nicht mehr; dieser Code nutzt die neue
VERSION2-API. Mehr dazu in MQTT mit Python. - Node.js und Browser — MQTT.js v5. Eine Bibliothek für beide Laufzeitumgebungen, mit Promise-basierten Methoden wie
connectAsyncundpublishAsync. Im Browser verbindet sie sich nur über WebSockets; lies MQTT in JavaScript und MQTT über WebSockets. - ESP32 / Arduino — PubSubClient. Winzig, praxiserprobt und im Bibliotheksverwalter verfügbar. Spricht MQTT 3.1.1 über TCP oder TLS und publisht mit QoS 0. Der ESP32-MQTT-Leitfaden behandelt WLAN-Reconnects und Zertifikate.
- Go — paho.mqtt.golang. Der am weitesten verbreitete Go-Client, mit eingebautem Auto-Reconnect und WebSocket-Support. Er implementiert MQTT 3.1.1; für MQTT 5 nimm
paho.golang. - Java — Eclipse Paho v3. Der synchrone
MqttClienthält das Beispiel kurz; für Produktivdienste wechselst du zuMqttAsyncClientoder zum Paho-v5-Client. - C# — MQTTnet v4. Die De-facto-MQTT-Bibliothek für .NET, komplett asynchron und mit MQTT-5- Unterstützung. Der Code nutzt Top-Level-Statements ab .NET 6.
- Kommandozeile — mosquitto_pub / mosquitto_sub. Der schnellste Weg, um zu beweisen, dass ein Broker funktioniert, bevor du Code schreibst. Siehe die Beispiele für mosquitto_pub und mosquitto_sub.
Kurze Hinweise je Sprache
TLS: Die Snippets für Python, Node.js, Go, Java und C# prüfen das Broker-Zertifikat gegen die vertrauenswürdigen CAs des Betriebssystems — das klappt bei Brokern mit öffentlichem Zertifikat. Auf dem ESP32 ruft das Beispiel setInsecure() auf, damit du verbunden wirst; lade vor der Auslieferung von Geräten die Root-CA des Brokers mit setCACert(). Bei selbstsignierten Brokern musst du die CA-Datei in jeder Sprache explizit angeben.
MQTT 5: Python, MQTT.js, MQTTnet und die mosquitto-CLI wechseln das Protokoll mit einer Option. PubSubClient, paho.mqtt.golang und Paho Java v3 bleiben bei MQTT 3.1.1 — das jeder MQTT-5-Broker weiterhin akzeptiert.
Testen: Starte das generierte Programm und beobachte dasselbe Topic im Online-MQTT-Client. Kommt nichts an, führt dich die Checkliste zum Broker-Testen Schritt für Schritt durch Ports, Zugangsdaten und Tippfehler in Topics. Denk daran: Auf einem öffentlichen Broker kann jeder deine Topics mitlesen — echte Daten gehören auf einen Broker mit Authentifizierung.
FAQ zum MQTT-Code-Generator
Welche MQTT-Bibliothek sollte ich für Python verwenden?
Eclipse Paho (paho-mqtt) ist der meistgenutzte MQTT-Client für Python. Version 2.x verlangt beim Erstellen des Clients eine Callback-API-Version; der generierte Code nutzt CallbackAPIVersion.VERSION2, die mit MQTT 3.1.1 und MQTT 5 funktioniert.
Warum funktioniert der Browser-Code nur mit WebSockets?
Webseiten können keine rohen TCP-Sockets öffnen, deshalb tunneln MQTT-Clients im Browser MQTT über eine WebSocket-Verbindung. Dein Broker braucht einen WebSocket-Listener, und per HTTPS ausgelieferte Seiten müssen eine sichere wss://-URL verwenden.
Kann ein ESP32 MQTT über WebSockets nutzen?
Nicht mit PubSubClient, der gängigsten Arduino-MQTT-Bibliothek — sie unterstützt nur reines TCP und TLS. Das ist selten eine Einschränkung: Der ESP32 kann TCP- und TLS-Sockets direkt öffnen, und die sind ohnehin schlanker als WebSockets.
Ist es sicher, mein Broker-Passwort in den generierten Code zu schreiben?
Der Code wird in deinem Browser erzeugt und nie an einen Server gesendet. Trotzdem solltest du Passwörter nicht ins Repository committen: Lade sie aus Umgebungsvariablen oder einer Secrets-Datei und liefere niemals Admin-Zugangsdaten in Browser-JavaScript aus.