Tutoriais de IoT

Broker MQTT Público e Gratuito para Testes: Conecte ao broker.connectmq.com em Minutos

O broker.connectmq.com é um servidor MQTT público e gratuito para testes e aprendizado. Aqui estão as portas, as regras de acesso anônimo, os limites e exemplos prontos para copiar e colar no CLI, em Python, Node.js e no navegador.

Notebook e sensores IoT trocando mensagens pelo broker.connectmq.com, um broker MQTT público e gratuito para testes
Rode isso no seu próprio broker MQTTTenha um broker MQTT privado e gerenciado no plano Free e comece com exemplos de código prontos.
Teste grátis Exemplos de código Sem cartão de crédito

Um broker MQTT público e gratuito é a forma mais rápida de experimentar o MQTT: sem conta, sem instalação, só um hostname e uma porta. Neste tutorial você vai se conectar ao servidor MQTT público broker.connectmq.com, conhecer as regras e os limites da área pública anônima e rodar exemplos funcionais com o CLI do Mosquitto, Python, Node.js e o navegador. No final, você vai saber exatamente quando chegou a hora de migrar para um broker privado.

Se você é novo no protocolo, comece por O Que É um Broker MQTT? e volte aqui para a parte prática.

O Que É um Broker MQTT Público e Gratuito?

Um servidor MQTT público (ou broker MQTT público) é um broker ao qual qualquer pessoa na internet pode se conectar sem credenciais. Ele serve para aprendizado, demonstrações, protótipos rápidos e depuração de código cliente. Você usa um broker real que fala MQTT 3.1.1 e MQTT 5.0, mas o compartilha com todos que estão testando no mesmo momento.

Esse compartilhamento tem uma consequência importante: tudo o que você publica na área pública pode ser lido por qualquer pessoa. Trate-o como um quadro branco público. Ele é perfeito para um "hello world", simulações de sensores e experimentos com o protocolo, e totalmente inadequado para senhas, dados pessoais ou tráfego de produção.

Detalhes de Conexão do broker.connectmq.com

O servidor MQTT público do ConnectMQ escuta em quatro endpoints. Escolha o que combina com seu cliente e sua rede.

Protocolo Porta URL Uso típico
MQTT (TCP) 1883 mqtt://broker.connectmq.com:1883 Ferramentas de CLI, microcontroladores, testes rápidos
MQTT sobre TLS 8883 mqtts://broker.connectmq.com:8883 Conexões criptografadas a partir de servidores e dispositivos
WebSocket 8083 ws://broker.connectmq.com:8083/mqtt Experimentos web locais
WebSocket seguro 8084 wss://broker.connectmq.com:8084/mqtt Navegadores e páginas HTTPS

As portas 8883 e 8084 usam um certificado Let's Encrypt, então os bundles de CA padrão do sistema operacional o validam sem arquivos extras. Se sua rede bloqueia portas incomuns, WSS na 8084 costuma ser o caminho mais fácil, porque para a maioria dos proxies ele se parece com tráfego HTTPS comum.

Regras de Acesso Anônimo

Você não precisa de usuário nem senha. Valem três regras simples:

  1. Use um client ID não vazio. Conecte sem usuário e senha, mas com um client ID como demo-7f3a91. Um client ID vazio é rejeitado. Faça com que ele seja único — pela especificação MQTT, uma segunda conexão com o mesmo ID assume a sessão e o primeiro cliente é desconectado.
  2. Use um prefixo de topic único. Coloque tudo sob um prefixo que ninguém vá adivinhar, por exemplo connectmq/demo/<your-random-id>/.... Isso evita colisões com outros testadores e mantém sua árvore de topics organizada.
  3. Considere que tudo é público. Clientes anônimos caem em uma área pública compartilhada. Clientes públicos só enxergam os topics de outros clientes públicos — eles ficam isolados dos tenants pagantes —, mas dentro da área pública qualquer cliente pode assinar # e ler suas mensagens.

Um truque prático é gerar um ID aleatório uma vez e reutilizá-lo tanto como base do client ID quanto como prefixo de topic:

export ID=demo-$(openssl rand -hex 3)
echo $ID   # e.g. demo-7f3a91

Limites da Área Pública

A área pública é generosa para testes, mas propositalmente limitada para continuar saudável para todos.

Limite Valor
Tamanho máximo de mensagem 64 KB
Taxa de publicação 10 mensagens por segundo por cliente
Assinaturas 10 por cliente
Profundidade de topic Máximo de 8 níveis
Níveis de QoS 0, 1 e 2
Retained messages Suportadas
Assinaturas com wildcard (+, #) Suportadas
Shared subscriptions ($share/{group}/{filter}) Suportadas
Session expiry Até 30 minutos

Se você ultrapassar uma cota, clientes MQTT 5 recebem um reason code como 0x97 (Quota exceeded) em vez de uma falha silenciosa, o que facilita muito a depuração. Em dúvida sobre qual QoS escolher? Veja Níveis de QoS MQTT Explicados.

Teste o Broker MQTT Público Gratuito com o CLI do Mosquitto

As ferramentas de linha de comando do Eclipse Mosquitto são a forma mais rápida de ver as mensagens circulando. Abra dois terminais.

Terminal 1 — assine o seu prefixo:

mosquitto_sub -h broker.connectmq.com -p 1883 -i $ID-sub -t "connectmq/demo/$ID/#" -v

Terminal 2 — publique uma mensagem:

mosquitto_pub -h broker.connectmq.com -p 1883 -i $ID-pub -t "connectmq/demo/$ID/temperature" -m '{"value": 22.5, "unit": "C"}'

O Terminal 1 imprime o topic seguido do payload. Para usar a porta criptografada, adicione o bundle de CAs do sistema (caminho válido para a maioria das distribuições Linux):

mosquitto_pub -h broker.connectmq.com -p 8883 --capath /etc/ssl/certs -i $ID-tls -t "connectmq/demo/$ID/tls" -m "hello over TLS" -V mqttv5

No Windows ou no macOS, aponte --cafile para um bundle de CAs em PEM (por exemplo, o que vem com o Git for Windows). A flag -V mqttv5 muda o cliente para MQTT 5.0.

Demonstração de Retained Message

Uma retained message é armazenada pelo broker e entregue imediatamente a cada novo subscriber daquele topic. Ela é ideal para valores de "último estado conhecido", como o status de um dispositivo.

# Publica um status retido
mosquitto_pub -h broker.connectmq.com -p 1883 -i $ID-pub -t "connectmq/demo/$ID/status" -m "online" -r -q 1

# Um subscriber novinho o recebe na hora, mesmo tendo sido publicado antes
mosquitto_sub -h broker.connectmq.com -p 1883 -i $ID-late -t "connectmq/demo/$ID/status" -v -C 1 -W 5

# Apaga a retained message publicando um payload retido vazio
mosquitto_pub -h broker.connectmq.com -p 1883 -i $ID-pub -t "connectmq/demo/$ID/status" -n -r

Sempre apague suas retained messages de teste ao terminar — isso mantém a área pública limpa.

Demonstração de Last Will and Testament

Um Last Will é uma mensagem que o broker publica em seu nome se o seu cliente se desconectar inesperadamente. Mantenha o subscriber do Terminal 1 rodando e inicie um "dispositivo" com um will:

mosquitto_sub -h broker.connectmq.com -p 1883 -i $ID-device -t "connectmq/demo/$ID/cmd" -k 5 --will-topic "connectmq/demo/$ID/status" --will-payload "offline" --will-qos 1

Agora mate esse terminal ou o processo (fechar a janela funciona; uma desconexão limpa com Ctrl+C pode não disparar o will em todos os clientes). Em poucos segundos — depois que o keep-alive expirar — o Terminal 1 mostra:

connectmq/demo/demo-7f3a91/status offline

Validamos esses comandos no broker.connectmq.com enquanto escrevíamos este guia.

Exemplo em Python (paho-mqtt 2.x)

Instale o cliente com pip install "paho-mqtt>=2.0". O script abaixo se conecta via TLS, assina o seu prefixo e publica uma leitura.

import json
import ssl
import uuid
import paho.mqtt.client as mqtt

DEVICE_ID = f"demo-{uuid.uuid4().hex[:6]}"
PREFIX = f"connectmq/demo/{DEVICE_ID}"

def on_connect(client, userdata, flags, reason_code, properties):
    print(f"Connected: {reason_code}")
    client.subscribe(f"{PREFIX}/#", qos=1)
    client.publish(f"{PREFIX}/temperature", json.dumps({"value": 21.8}), qos=1)

def on_message(client, userdata, msg):
    print(f"{msg.topic} -> {msg.payload.decode()}")

client = mqtt.Client(
    mqtt.CallbackAPIVersion.VERSION2,
    client_id=DEVICE_ID,
    protocol=mqtt.MQTTv5,
)
client.tls_set(cert_reqs=ssl.CERT_REQUIRED)  # usa o repositório de CAs do sistema
client.on_connect = on_connect
client.on_message = on_message

client.connect("broker.connectmq.com", 8883, keepalive=30)
client.loop_forever()

Repare que nenhuma chamada a username_pw_set() é necessária na área pública. Para TCP sem criptografia, remova tls_set() e use a porta 1883.

Exemplo em Node.js (MQTT.js via mqtts e wss)

Instale o MQTT.js v5 com npm install mqtt. O mesmo código funciona via TLS ou WebSocket seguro — só a URL muda.

import mqtt from "mqtt";
import { randomBytes } from "node:crypto";

const clientId = `demo-${randomBytes(3).toString("hex")}`;
const prefix = `connectmq/demo/${clientId}`;

// Opção A: MQTT sobre TLS
const url = "mqtts://broker.connectmq.com:8883";
// Opção B: MQTT sobre WebSocket seguro
// const url = "wss://broker.connectmq.com:8084/mqtt";

const client = mqtt.connect(url, { clientId, protocolVersion: 5 });

client.on("connect", () => {
  console.log("Connected as", clientId);
  client.subscribe(`${prefix}/#`, { qos: 1 });
  client.publish(`${prefix}/humidity`, JSON.stringify({ value: 48 }), { qos: 1 });
});

client.on("message", (topic, payload) => {
  console.log(topic, payload.toString());
});

client.on("error", (err) => console.error(err.message));

Exemplo no Navegador via WSS

Navegadores não conseguem abrir sockets TCP puros, então usam MQTT sobre WebSocket. Páginas servidas via HTTPS precisam usar wss:// na porta 8084. Empacote o código abaixo com sua ferramenta favorita (Vite, webpack, esbuild):

import mqtt from "mqtt";

const clientId = "web-" + Math.random().toString(16).slice(2, 8);
const prefix = `connectmq/demo/${clientId}`;

const client = mqtt.connect("wss://broker.connectmq.com:8084/mqtt", {
  clientId,
  protocolVersion: 5,
});

client.on("connect", () => {
  client.subscribe(`${prefix}/#`);
  client.publish(`${prefix}/hello`, "Hello from the browser");
});

client.on("message", (topic, payload) => {
  const line = document.createElement("div");
  line.textContent = `${topic}: ${payload.toString()}`;
  document.body.appendChild(line);
});

Para entender melhor caminhos, portas e proxies, leia MQTT sobre WebSocket.

Broker MQTT Público Gratuito vs. Broker Privado

O servidor MQTT público é uma sandbox para testes e protótipos. Migre para um broker privado, como um broker MQTT gerenciado em app.connectmq.com, assim que qualquer um destes pontos for verdade:

Você precisa de... Servidor MQTT público Broker privado em app.connectmq.com
Privacidade Qualquer um na área pública pode ler seus topics Os topics do tenant ficam isolados de outros tenants e da área pública
Autenticação Anônima, só client ID Usuário, senha e client ID emitidos por broker
Tamanho de mensagem 64 KB 256 KB no Serverless (Free), 1 MB no Serverless (Paid)
Conexões Para testes Até 25 (Free), até 1.000 (Paid) ou um cluster Dedicated
Ferramentas Seus próprios clientes Portal com cliente MQTT no navegador, explorador de topics ao vivo, dashboard e regras de alerta

Sinais típicos de que você já superou a área pública: você está enviando dados reais de clientes ou dispositivos (como a telemetria de uma planta ou dados pessoais protegidos pela LGPD), quer impedir que outras pessoas vejam os nomes dos seus topics, precisa de credenciais estáveis para uma frota de dispositivos ou quer um dashboard e alertas sobre seus dados. A troca é basicamente uma mudança de configuração — mantenha o mesmo código e adicione o usuário, a senha e o client ID do portal:

client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id="YOUR_CLIENT_ID", protocol=mqtt.MQTTv5)
client.username_pw_set("YOUR_USERNAME", "YOUR_PASSWORD")
client.tls_set()
client.connect("broker.connectmq.com", 8883)

Antes de entrar em produção, revise nossas boas práticas de segurança MQTT.

Comece com o ConnectMQ

Pronto para manter seus dados privados? Crie uma conta gratuita em app.connectmq.com — o plano Serverless (Free) não exige cartão de crédito. Escolha um plano, crie um broker e copie o usuário, a senha e o client ID gerados. Sua primeira mensagem privada está a poucos minutos de distância.

Perguntas frequentes

O broker.connectmq.com é realmente gratuito?

Sim. A área pública do broker.connectmq.com é gratuita para testes, aprendizado e demonstrações, sem cadastro. Ela tem limites de uso justo, como 64 KB por mensagem e 10 mensagens por segundo por cliente.

Preciso de usuário e senha para o servidor MQTT público?

Não. Conecte sem credenciais e com um client ID único e não vazio. Um client ID vazio é rejeitado.

Outras pessoas podem ver minhas mensagens em um broker MQTT público?

Sim. Tudo o que é publicado na área pública pode ser lido por qualquer outro cliente público, então use um prefixo de topic único e nunca envie dados pessoais ou sensíveis. Para dados privados, crie um broker em app.connectmq.com.

Quais versões do MQTT e quais portas o servidor MQTT público suporta?

Ele suporta MQTT 3.1.1 e MQTT 5.0 em TCP 1883, TLS 8883, WebSocket 8083 e WebSocket seguro 8084 (caminho /mqtt).

Posso usar o broker MQTT público gratuito em produção?

Ele não foi projetado para produção. Para qualquer implantação real, use um broker ConnectMQ privado com credenciais, isolamento entre tenants e limites maiores.

Artigos relacionados

Melhores Ferramentas CLI MQTT para Testes, Scripts e Depuração

Uma comparação prática entre mosquitto_pub/sub, MQTTX CLI, HiveMQ MQTT CLI, a CLI do MQTT.js, curl e mqttui, com o mesmo teste rodando no broker.connectmq.com, para você escolher a ferramenta certa para scripts e depuração.

9 min de leitura

Todos os artigos →

Seu broker MQTT privado está a poucos cliques de distância

Crie uma conta, receba as credenciais do seu broker e conecte seu primeiro dispositivo — sem servidores para instalar, atualizar ou escalar.