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.

Besoin de vos propres identifiants ? Créer un broker privé

Transport

MQTT (TCP)

Version MQTT

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 = "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+C

Comment 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 connectAsync et publishAsync. 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.golang pour MQTT 5.
  • Java — Eclipse Paho v3. Le MqttClient synchrone garde l’exemple court ; passez à MqttAsyncClient ou 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.

Par les créateurs de TestMQTT

Exécutez ce code sur votre propre broker

Les brokers de test publics sont partagés avec des milliers d’inconnus. ConnectMQ vous offre un broker MQTT privé, fiable pour de vrais appareils — prêt en quelques minutes.

  • Votre propre broker isolé — personne d’autre ne peut lire vos topics
  • Authentification par identifiant / mot de passe et contrôle d’accès par topic
  • TLS et WebSocket sécurisé, MQTT 3.1.1 et MQTT 5
  • Le même code client, du premier test à la production