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.

Brauchst du eigene Zugangsdaten? Privaten Broker anlegen

Transport

MQTT (TCP)

MQTT-Version

paho-mqtt 2.xpip install "paho-mqtt>=2.0"

mqtt_client.py
import 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+C

So 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 connectAsync und publishAsync. 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 MqttClient hält das Beispiel kurz; für Produktivdienste wechselst du zu MqttAsyncClient oder 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.

Von den Machern von TestMQTT

Lass diesen Code gegen deinen eigenen Broker laufen

Öffentliche Test-Broker teilst du mit Tausenden Fremden. ConnectMQ gibt dir einen privaten MQTT-Broker, dem du echte Geräte anvertrauen kannst – in wenigen Minuten eingerichtet.

  • Dein eigener, isolierter Broker – niemand sonst kann deine Topics lesen
  • Authentifizierung per Benutzername / Passwort und Zugriffskontrolle pro Topic
  • TLS und sichere WebSockets, MQTT 3.1.1 und MQTT 5
  • Derselbe Client-Code vom ersten Test bis zur Produktion