Escolher um broker MQTT para estudantes é, acima de tudo, eliminar atritos: ninguém deveria perder uma aula de laboratório instalando o Mosquitto, brigando com o firewall do campus ou procurando qual sensor de qual equipe está inundando um tópico compartilhado. Este guia mostra a professores de universidades, institutos federais e escolas técnicas como conduzir laboratórios de IoT com o servidor MQTT público broker.connectmq.com nas demonstrações ao vivo e um broker ConnectMQ Serverless gratuito e isolado por equipe nos projetos avaliados, com uma sequência de aulas, código pronto para rodar e regras de sala que evitam o caos de sempre.
O que uma sala de aula precisa de um broker
Ensinar MQTT tem prioridades diferentes de operar sistemas em produção:
- Nenhuma configuração nas máquinas do laboratório. Os alunos devem estar publicando nos primeiros dez minutos.
- Acessível de qualquer lugar. PCs do laboratório, notebooks dos alunos em casa e placas ESP32 no Wi-Fi do campus precisam usar o mesmo endpoint.
- Tráfego visível. Ver as mensagens fluindo é o momento de "agora entendi"; um explorador de tópicos ajuda muito.
- Isolamento para avaliação. Um projeto avaliado não pode ser quebrado por outra equipe publicando no mesmo tópico.
- Custo zero. A maioria dos cursos não tem orçamento para infraestrutura por aluno.
Um broker auto-hospedado em um servidor do laboratório pode funcionar, mas alguém precisa mantê-lo, abrir portas e consertá-lo quando ele quebra às 9 da manhã do dia da aula. Um broker MQTT gerenciado evita isso. Para o conceito básico, os alunos podem começar por o que um broker MQTT faz.
Configuração em duas camadas: público para demos, privado para projetos
| Uso | Broker | Autenticação | Isolamento | Por quê |
|---|---|---|---|---|
| Demonstrações em aula, primeiros laboratórios | Servidor MQTT público (broker.connectmq.com) | Nenhuma, qualquer client ID único | Nenhum, legível por todos | Início instantâneo, todos veem tudo |
| Projetos em equipe, trabalhos avaliados | ConnectMQ Serverless (Free), um por equipe | Usuário, senha e client ID gerados | Tenant isolado | Equipes não interferem entre si, credenciais ensinam boas práticas |
O servidor MQTT público para demonstrações
O servidor MQTT público aceita conexões anônimas nas portas 1883, 8883, 8083 e 8084. Seus limites se encaixam bem no ensino: 64 KB por mensagem, 10 mensagens por segundo por cliente, 10 assinaturas por cliente, 8 níveis de tópico, QoS 0 a 2 e sessões de até 30 minutos. Esses limites também impedem que um loop descontrolado no código de um aluno sobrecarregue qualquer coisa.
A área pública pode ser lida por qualquer pessoa na internet. Transforme isso em um ponto de aprendizado, e não em uma nota de rodapé: nunca publique ali nomes, números de matrícula, localizações nem nada pessoal, o que também abre espaço para discutir a LGPD com a turma.
Brokers Serverless privados para projetos avaliados
Cada equipe cria um broker ConnectMQ Serverless gratuito. Ela recebe usuário, senha e client ID, até 25 conexões, QoS até 1 e mensagens de 256 KB, o que é mais do que suficiente para um projeto com vários sensores, um painel e um fluxo Node-RED. As equipes podem mostrar o trabalho no cliente do navegador do portal, no explorador de tópicos ao vivo e no painel, além de configurar regras de alerta por limite, o que rende uma boa demonstração na avaliação.
Uma sequência de cinco laboratórios
Laboratório 1: publicar e assinar pela linha de comando
Cada aluno escolhe um ID aleatório curto, por exemplo suas iniciais mais quatro caracteres aleatórios. Dois terminais:
# Terminal 1
mosquitto_sub -h broker.connectmq.com -p 1883 -i sub-ab7k2q -t 'connectmq/demo/ab7k2q/#' -v
# Terminal 2
mosquitto_pub -h broker.connectmq.com -p 1883 -i pub-ab7k2q \
-t 'connectmq/demo/ab7k2q/hello' -m 'my first MQTT message'
Em seguida, o professor assina connectmq/demo/+/hello e a turma vê as mensagens chegando. Esse único comando ensina tópicos, curingas e desacoplamento melhor do que um slide.
Laboratório 2: QoS, mensagens retidas e Last Will
Publique uma mensagem retida, desconecte, reconecte e observe que ela chega imediatamente. Encerre à força um cliente com um Last Will registrado e veja o will aparecer. Combine este laboratório com níveis de QoS do MQTT explicados.
Laboratório 3: um simulador de sensor em Python
import json
import random
import time
import uuid
import paho.mqtt.client as mqtt
STUDENT_ID = "ab7k2q" # troque pelo seu próprio ID aleatório
BASE = f"connectmq/demo/{STUDENT_ID}/room"
client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2,
client_id=f"py-{STUDENT_ID}-{uuid.uuid4().hex[:4]}")
client.will_set(f"{BASE}/status", "offline", qos=1, retain=True)
def on_connect(client, userdata, flags, reason_code, properties):
print("Connected:", reason_code)
client.publish(f"{BASE}/status", "online", qos=1, retain=True)
client.subscribe(f"{BASE}/setpoint")
def on_message(client, userdata, msg):
print("New setpoint:", msg.payload.decode())
client.on_connect = on_connect
client.on_message = on_message
client.connect("broker.connectmq.com", 1883, keepalive=60)
client.loop_start()
while True:
reading = {"temp": round(random.uniform(19.0, 24.0), 1), "ts": int(time.time())}
client.publish(f"{BASE}/temperature", json.dumps(reading), qos=1)
print("Sent", reading)
time.sleep(2)
Instale com pip install paho-mqtt. Depois, os alunos publicam um setpoint pela linha de comando e veem o script reagir.
Laboratório 4: hardware
Passe para as placas ESP32. O tutorial de MQTT com ESP32 coloca uma placa publicando em uma única aula; em seguida, as equipes adicionam um sensor real. Redes Wi-Fi de campus com portal cativo ou WPA2-Enterprise costumam bloquear placas embarcadas, então teste a rede antes da aula ou leve um ponto de acesso dedicado.
Laboratório 5: projeto em equipe em um broker privado
As equipes criam seu próprio broker Serverless, passam para a porta 8883 com TLS e credenciais e constroem algo de ponta a ponta, como o monitoramento de uma estufa ou de uma bancada didática de automação: sensores, um painel em Node-RED ou web e um alerta. O salto de conexões anônimas para autenticadas já é, por si só, uma lição de segurança; indique às equipes as boas práticas de segurança em MQTT.
Regras de sala que evitam o caos
- Todo client ID deve ser único. Dois alunos usando
esp32como client ID vão se desconectar mutuamente sem parar; esse é, de longe, o problema mais comum nos laboratórios. - Todo tópico começa com o seu próprio prefixo. No servidor MQTT público,
connectmq/demo/<your-random-id>/.... Nada de publicar no prefixo de outra pessoa. - Nenhum dado pessoal no servidor MQTT público. Trate-o como um mural público.
- Adicione uma pausa em todo loop de publicação. Um
while Truesemsleepatinge o limite de taxa na hora. - Credenciais nunca vão para um repositório Git público. Use um arquivo de configuração listado no
.gitignoreou variáveis de ambiente. - Mantenha a profundidade dos tópicos razoável. O servidor MQTT público permite 8 níveis.
Solução de problemas no laboratório
| Sintoma | Causa provável | Solução |
|---|---|---|
| Cliente conecta e desconecta repetidamente | Client ID duplicado | Use um ID aleatório único |
| Nada chega | Erro de digitação no tópico ou diferença de maiúsculas | Tópicos diferenciam maiúsculas de minúsculas; assine prefix/# para ver tudo |
| Conexão recusada no campus | Porta bloqueada | Tente a 8883, ou WebSocket na 8084 pelo navegador |
| Mensagens param após uma rajada | Limite de taxa do servidor MQTT público | Adicione uma pausa entre as publicações |
| ESP32 nunca entra no Wi-Fi | Rede corporativa ou com portal cativo | Use um ponto de acesso do laboratório ou o hotspot do celular |
| Erro de TLS no broker privado | Porta errada ou CA ausente | Use a 8883 com o repositório de CAs do sistema |
Gerenciando credenciais de uma turma inteira
Brokers privados significam credenciais, e credenciais em sala de aula se perdem. Peça a cada equipe que indique um integrante para criar o broker e compartilhar as credenciais somente dentro da equipe, pela plataforma do curso, e não em um chat público. Incentive as equipes a manter no repositório um pequeno arquivo config.example com valores fictícios, deixando o arquivo real fora do controle de versão. No fim do curso, as equipes podem excluir ou regenerar suas credenciais, o que também serve como uma breve lição sobre rotação de credenciais.
Ideias de avaliação
Avaliar trabalhos com MQTT é mais fácil quando tudo é observável. Peça às equipes que apresentem uma árvore de tópicos no explorador de tópicos e justifiquem seu design, demonstrem um Last Will deixando um dispositivo offline no painel, mostrem uma regra de alerta disparando e expliquem suas escolhas de QoS. Uma breve reflexão escrita sobre o que mudaria em produção, como credenciais por dispositivo, TLS em todo lugar ou capacidade, fecha a avaliação. Nosso tutorial de MQTT funciona bem como leitura prévia, e o guia de broker MQTT na nuvem dá aos alunos mais avançados uma visão geral das opções de hospedagem.
Comece seu laboratório de IoT com o ConnectMQ
Faça hoje mesmo sua primeira demonstração no servidor MQTT público broker.connectmq.com, sem cadastro, e depois peça a cada equipe que crie um broker Serverless gratuito em app.connectmq.com, sem cartão de crédito. O ConnectMQ é um broker MQTT gerenciado, para que você ensine MQTT em vez de administração de servidores.
Perguntas frequentes
Existe um broker MQTT gratuito para estudantes?
Sim. O broker.connectmq.com funciona como servidor MQTT público gratuito para demonstrações, e cada aluno ou equipe pode criar um broker ConnectMQ Serverless gratuito com credenciais privadas e até 25 conexões.
Os alunos podem usar o servidor MQTT público no projeto final?
Tecnicamente funciona, mas tudo ali pode ser lido por qualquer pessoa e outro aluno poderia publicar nos mesmos tópicos. Use um broker Serverless privado para trabalhos avaliados.
Os alunos precisam instalar um broker localmente?
Não. Clientes como mosquitto_pub, paho-mqtt ou o cliente do navegador do portal são suficientes, o que economiza tempo de preparação do laboratório.
Por que os alunos continuam sendo desconectados?
Quase sempre porque dois clientes compartilham o mesmo client ID. Cada conexão precisa do seu próprio ID único.
Podemos usar placas ESP32 no Wi-Fi do campus?
Muitas vezes, só em redes com senha WPA2 simples. Autenticação corporativa e portais cativos costumam bloquear as placas, então um ponto de acesso dedicado ao laboratório é a opção confiável.



