Générateur de code MQTT
Choisissez un broker, un transport et vos topics, et obtenez un client MQTT complet et exécutable en Python, Node.js, JavaScript navigateur, ESP32/Arduino, Go, Java, C# ou en ligne de commande mosquitto — connexion, abonnement et publication en un seul copier-coller.
Code généré
Ouvrir dans le client en ligneimport uuid
import paho.mqtt.client as mqtt
BROKER = "broker.connectmq.com"
PORT = 1883
SUB_TOPIC = "testmqtt/demo/#"
PUB_TOPIC = "testmqtt/demo/hello"
PAYLOAD = "Bonjour de 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+CComment fonctionne le code généré
Chaque extrait suit le même déroulé : ouvrir une connexion au broker, s’abonner à votre topic une fois la connexion acquittée, publier un message, puis continuer à tourner en affichant tout ce qui arrive. S’abonner dans le handler de connexion (quand la bibliothèque en propose un) compte plus qu’il n’y paraît : les abonnements sont ainsi rétablis automatiquement après une reconnexion. Laissez le Client ID vide et chaque programme en génère un aléatoire au démarrage, pour que deux copies ne s’éjectent jamais du broker.
Le transport détermine le schéma de l’URL. Le TCP brut utilise généralement le port 1883 et le TLS le 8883, tandis que les listeners WebSocket varient selon le broker — c’est pourquoi le port et le chemin sont repris du preset. Consultez le guide des ports MQTT pour toutes les conventions.
Pourquoi ces bibliothèques
- Python — paho-mqtt 2.x. Le client de référence d’Eclipse, stable depuis plus de dix ans. La version 2 a modifié les signatures des callbacks, si bien que les anciens tutoriels ne fonctionnent plus ; ce code cible la nouvelle API
VERSION2. Plus d’infos dans MQTT avec Python. - Node.js et navigateur — MQTT.js v5. Une seule bibliothèque pour les deux environnements, avec des méthodes à base de promesses comme
connectAsyncetpublishAsync. Dans le navigateur, elle se connecte uniquement via WebSockets ; lisez MQTT en JavaScript et MQTT sur WebSockets. - ESP32 / Arduino — PubSubClient. Minuscule, éprouvée et disponible dans le gestionnaire de bibliothèques. Elle parle MQTT 3.1.1 en TCP ou TLS et publie en QoS 0. Le guide MQTT pour ESP32 couvre les reconnexions Wi-Fi et les certificats.
- Go — paho.mqtt.golang. Le client Go le plus déployé, avec reconnexion automatique et support WebSocket intégrés. Il implémente MQTT 3.1.1 ; utilisez
paho.golangpour MQTT 5. - Java — Eclipse Paho v3. Le
MqttClientsynchrone garde l’exemple court ; passez àMqttAsyncClientou au client Paho v5 pour les services en production. - C# — MQTTnet v4. La bibliothèque MQTT de référence en .NET, entièrement asynchrone et compatible MQTT 5. Le code utilise les instructions de niveau supérieur de .NET 6+.
- Ligne de commande — mosquitto_pub / mosquitto_sub. Le moyen le plus rapide de prouver qu’un broker fonctionne avant d’écrire la moindre ligne de code. Voir les exemples mosquitto_pub et mosquitto_sub.
Notes rapides par langage
TLS : les extraits Python, Node.js, Go, Java et C# vérifient le certificat du broker auprès des CA de confiance du système d’exploitation, ce qui fonctionne pour les brokers dotés d’un certificat public. Sur l’ESP32, l’exemple appelle setInsecure() pour vous connecter ; chargez la CA racine du broker avec setCACert() avant de déployer des appareils. Les brokers auto-signés nécessitent de fournir explicitement le fichier de CA dans tous les langages.
MQTT 5 : Python, MQTT.js, MQTTnet et la CLI mosquitto changent de protocole avec une seule option. PubSubClient, paho.mqtt.golang et Paho Java v3 restent en MQTT 3.1.1 — que tout broker MQTT 5 accepte toujours.
Tests : lancez le programme généré et surveillez le même topic dans le client MQTT en ligne. Si rien n’arrive, la checklist pour tester un broker passe en revue ports, identifiants et fautes de frappe dans les topics, étape par étape. N’oubliez pas que sur un broker public, n’importe qui peut lire vos topics — gardez les vraies données sur un broker avec authentification.
FAQ du générateur de code MQTT
Quelle bibliothèque MQTT utiliser en Python ?
Eclipse Paho (paho-mqtt) est le client MQTT Python le plus utilisé. La version 2.x exige une version d’API de callbacks à la création du client ; le code généré utilise CallbackAPIVersion.VERSION2, compatible MQTT 3.1.1 et MQTT 5.
Pourquoi le code navigateur ne fonctionne-t-il qu’avec les WebSockets ?
Les pages web ne peuvent pas ouvrir de sockets TCP bruts : les clients MQTT du navigateur font donc transiter MQTT dans une connexion WebSocket. Votre broker doit disposer d’un listener WebSocket, et les pages servies en HTTPS doivent utiliser une URL sécurisée wss://.
Un ESP32 peut-il utiliser MQTT sur WebSockets ?
Pas avec PubSubClient, la bibliothèque MQTT Arduino la plus répandue : elle ne gère que le TCP brut et le TLS. C’est rarement une limite : l’ESP32 peut ouvrir directement des sockets TCP et TLS, de toute façon plus légers que les WebSockets.
Puis-je mettre sans risque le mot de passe du broker dans le code généré ?
Le code est généré dans votre navigateur et n’est jamais envoyé à un serveur. Évitez tout de même de committer des mots de passe : chargez-les depuis des variables d’environnement ou un fichier de secrets, et ne livrez jamais d’identifiants administrateur dans du JavaScript navigateur.