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.
Código gerado
Abrir no cliente onlineimport 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+CComo 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
connectAsyncepublishAsync. 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.golangpara MQTT 5. - Java — Eclipse Paho v3. O
MqttClientsíncrono deixa o exemplo curto; useMqttAsyncClientou 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.