Gerador de código MQTT

Escolha um broker, o transporte e os tópicos e receba um cliente MQTT completo e executável em Python, Node.js, JavaScript no navegador, ESP32/Arduino, Go, Java, C# ou na linha de comando do mosquitto — conectar, assinar e publicar em um único copiar e colar.

Precisa de credenciais próprias? Crie um broker privado

Transporte

MQTT (TCP)

Versão do 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 = "Olá do 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

Como o código gerado funciona

Todos os trechos seguem o mesmo fluxo: abrir uma conexão com o broker, assinar o seu tópico assim que a conexão é confirmada, publicar uma mensagem e continuar rodando, exibindo tudo o que chegar. Assinar dentro do handler de conexão (quando a biblioteca tem um) importa mais do que parece — assim as assinaturas são restauradas automaticamente após uma reconexão. Deixe o Client ID vazio e cada programa gera um aleatório ao iniciar, então duas cópias nunca derrubam uma à outra do broker.

O transporte define o esquema da URL. TCP puro normalmente usa a porta 1883 e TLS a 8883, enquanto os listeners WebSocket variam de broker para broker — por isso a porta e o caminho vêm preenchidos pelo preset. Veja o guia de portas MQTT para a lista completa de convenções.

Por que essas bibliotecas

  • Python — paho-mqtt 2.x. O cliente de referência da Eclipse, estável há mais de uma década. A versão 2 mudou as assinaturas dos callbacks, então tutoriais antigos quebram; este código usa a nova API VERSION2. Mais em MQTT com Python.
  • Node.js e navegador — MQTT.js v5. Uma biblioteca para os dois ambientes, com métodos baseados em promises como connectAsync e publishAsync. No navegador ela conecta apenas via WebSockets; leia MQTT em JavaScript e MQTT sobre WebSockets.
  • ESP32 / Arduino — PubSubClient. Pequena, testada em campo e disponível no Gerenciador de Bibliotecas. Fala MQTT 3.1.1 sobre TCP ou TLS e publica com QoS 0. O guia de MQTT com ESP32 cobre reconexões de Wi-Fi e certificados.
  • Go — paho.mqtt.golang. O cliente Go mais usado, com reconexão automática e suporte a WebSocket embutidos. Implementa MQTT 3.1.1; use paho.golang para MQTT 5.
  • Java — Eclipse Paho v3. O MqttClient síncrono deixa o exemplo curto; use MqttAsyncClient ou o cliente Paho v5 em serviços de produção.
  • C# — MQTTnet v4. A biblioteca MQTT padrão de fato no .NET, totalmente assíncrona e com suporte a MQTT 5. O código usa top-level statements do .NET 6+.
  • Linha de comando — mosquitto_pub / mosquitto_sub. O jeito mais rápido de provar que um broker funciona antes de escrever qualquer código. Veja os exemplos de mosquitto_pub e mosquitto_sub.

Notas rápidas por linguagem

TLS: os trechos em Python, Node.js, Go, Java e C# verificam o certificado do broker com as CAs confiáveis do sistema operacional, o que funciona para brokers com certificado público. No ESP32 o exemplo chama setInsecure() para você conseguir conectar; carregue a CA raiz do broker com setCACert() antes de enviar dispositivos a campo. Brokers autoassinados exigem o arquivo da CA informado explicitamente em todas as linguagens.

MQTT 5: Python, MQTT.js, MQTTnet e a CLI do mosquitto trocam de protocolo com uma opção. PubSubClient, paho.mqtt.golang e Paho Java v3 ficam no MQTT 3.1.1 — que todo broker MQTT 5 continua aceitando.

Testes: rode o programa gerado e acompanhe o mesmo tópico no cliente MQTT online. Se nada chegar, o checklist para testar um broker passa por portas, credenciais e erros de digitação nos tópicos, passo a passo. Lembre-se de que em um broker público qualquer pessoa pode ler seus tópicos — mantenha dados reais em um broker com autenticação.

Perguntas frequentes sobre o gerador de código MQTT

Qual biblioteca MQTT devo usar em Python?

O Eclipse Paho (paho-mqtt) é o cliente MQTT para Python mais usado. A versão 2.x exige informar uma versão da API de callbacks ao criar o cliente; o código gerado usa CallbackAPIVersion.VERSION2, que funciona com MQTT 3.1.1 e MQTT 5.

Por que o código para navegador só funciona com WebSockets?

Páginas web não conseguem abrir sockets TCP diretos, então clientes MQTT no navegador encapsulam o MQTT em uma conexão WebSocket. Seu broker precisa de um listener WebSocket, e páginas servidas via HTTPS precisam usar uma URL segura wss://.

Um ESP32 pode usar MQTT sobre WebSockets?

Não com o PubSubClient, a biblioteca MQTT mais comum para Arduino — ele só suporta TCP puro e TLS. Isso raramente é uma limitação: o ESP32 abre sockets TCP e TLS diretamente, que são mais leves que WebSockets de qualquer forma.

É seguro colocar a senha do broker no código gerado?

O código é gerado no seu navegador e nunca é enviado a um servidor. Mesmo assim, não faça commit de senhas no controle de versão: carregue-as de variáveis de ambiente ou de um arquivo de segredos, e nunca coloque credenciais de administrador em JavaScript de navegador.

Dos criadores do TestMQTT

Rode este código no seu próprio broker

Brokers públicos de teste são compartilhados com milhares de desconhecidos. O ConnectMQ oferece um broker MQTT privado, confiável para dispositivos reais — pronto em minutos.

  • Seu próprio broker isolado — ninguém mais lê seus tópicos
  • Autenticação por usuário e senha e controle de acesso por tópico
  • TLS e WebSocket seguro, MQTT 3.1.1 e MQTT 5
  • O mesmo código de cliente do primeiro teste até a produção