MQTT gerenciado na nuvem

Broker MQTT para Estudantes e Salas de Aula: Laboratórios de IoT sem Servidores

Um guia prático para professores e alunos: use o servidor MQTT público em demonstrações ao vivo, dê a cada equipe um broker gratuito e isolado para trabalhos avaliados e evite as armadilhas clássicas da sala de aula.

Ilustração de broker MQTT para estudantes mostrando uma sala de aula com equipes usando placas ESP32 e notebooks publicando em um broker compartilhado na nuvem
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

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

  1. Todo client ID deve ser único. Dois alunos usando esp32 como client ID vão se desconectar mutuamente sem parar; esse é, de longe, o problema mais comum nos laboratórios.
  2. 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.
  3. Nenhum dado pessoal no servidor MQTT público. Trate-o como um mural público.
  4. Adicione uma pausa em todo loop de publicação. Um while True sem sleep atinge o limite de taxa na hora.
  5. Credenciais nunca vão para um repositório Git público. Use um arquivo de configuração listado no .gitignore ou variáveis de ambiente.
  6. 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.

Artigos relacionados

Broker MQTT BYOC: Bring Your Own Cloud Explicado

Um broker MQTT BYOC roda na sua conta de nuvem, mas é operado por um provedor. Entenda como o modelo funciona, a divisão de responsabilidades e como preparar a sua conta para ele.

9 min de leitura

Alternativa ao Google Cloud IoT Core: Opções e Migração Após o Encerramento

O Google desativou o Cloud IoT Core em agosto de 2023. Este guia compara as alternativas realistas, mapeia os conceitos do IoT Core para MQTT puro e mostra como mover dispositivos para um broker MQTT gerenciado mantendo os dados fluindo para o Google Cloud.

9 min de leitura

Mensagens MQTT por Segundo: Como Estimar e Medir a Vazão

O planejamento de vazão em MQTT se resume a algumas fórmulas e a uma medição honesta. Aprenda a estimar mensagens de entrada e saída por segundo, considerar os picos e associar o resultado a um plano de broker.

8 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.