Laboratório em bancada
Laboratório: Plataforma IoT local com Mosquitto, Node-RED e sensor MQTT simulado
Você terá um ambiente funcional de IoT rodando localmente, com broker MQTT Mosquitto, automação e dashboard no Node-RED, e um sensor simulado enviando dados. Tempo estimado: 90 a 120 minutos.

- Duração estimada
- 90 min
- Passos
- 12
- Validações
- 4
Este laboratório ensina a montar uma plataforma IoT aberta, usando apenas software livre, em um ambiente controlado. Você vai instalar e configurar o broker MQTT Mosquitto, criar fluxos no Node-RED para consumir, processar e exibir dados de sensores simulados, e testar a comunicação ponta a ponta. O foco é entender cada etapa, desde a publicação de dados até a visualização, com ênfase em práticas seguras e reprodutíveis.
Topologia
Três componentes: 1) Um broker MQTT Mosquitto rodando em uma VM Linux (exemplo: 192.168.56.10); 2) Node-RED rodando na mesma VM, conectado ao Mosquitto via localhost; 3) Um cliente MQTT (sensor simulado) rodando na mesma VM, publicando dados para o Mosquitto. Todos os serviços usam portas padrão em localhost e na rede privada.
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Sensor MQTT│───────▶│ Mosquitto │◀──────▶│ Node-RED │
│ (simulado) │ MQTT │ Broker │ MQTT │ Dashboard │
└─────────────┘ └──────────────┘ └─────────────┘
│ │ │
└────────────localhost/network─────────────┘Equipamentos e software
| Item | Requisito, licença ou versão |
|---|---|
| Máquina virtual Linux (Ubuntu 22.04 ou Debian 11) | 1 vCPU, 1 GB RAM, 10 GB disco, acesso root ou sudo |
| Eclipse Mosquitto | EPL/EDL · v2.0.x (consulte a documentação) |
| Node-RED | Apache 2.0 · v3.x (consulte a documentação) |
| mosquitto-clients | EPL/EDL · v2.0.x (consulte a documentação) |
| curl | curl license · a versão estável atual |
Roteiro
- Preparar o ambiente Linux
Atualize o sistema e instale dependências básicas. Isso garante que os pacotes estejam atualizados e evita conflitos.
sudo apt update && sudo apt upgrade -y sudo apt install -y wget curl nanoO que você deve ver: Sistema atualizado, sem erros.
- Instalar o Mosquitto Broker e clientes
Instale o broker MQTT Mosquitto e as ferramentas de linha de comando. O Mosquitto é o núcleo da comunicação MQTT.
sudo apt install -y mosquitto mosquitto-clientsO que você deve ver: Mosquitto instalado e serviço iniciado automaticamente.
- Verificar serviço Mosquitto
Confirme se o broker está rodando. Sem isso, nada mais funciona.
sudo systemctl status mosquittoO que você deve ver: Status 'active (running)'.
- Instalar Node-RED
Node-RED permite criar fluxos visuais para consumir e processar dados MQTT. Usaremos o script oficial de instalação.
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)O que você deve ver: Node-RED instalado sem erros.
- Iniciar Node-RED
Inicie o Node-RED. O serviço roda por padrão na porta 1880.
node-red-startO que você deve ver: Mensagem 'Server now running at http://127.0.0.1:1880/'
- Configurar Node-RED para iniciar automaticamente
Garanta que Node-RED suba com o sistema. Isso é essencial em produção.
sudo systemctl enable nodered.serviceO que você deve ver: Saída indicando que o serviço foi habilitado.
- Criar um fluxo MQTT no Node-RED
Abra o Node-RED via navegador (http://localhost:1880). Adicione um nó 'mqtt in', configure para conectar ao broker local (localhost, porta 1883), tópico 'sensor/temperatura'. Adicione um nó 'debug' ligado ao 'mqtt in'. Isso permite visualizar mensagens recebidas.
O que você deve ver: Fluxo criado e implantado no Node-RED.
- Simular um sensor MQTT publicando dados
Use o cliente de linha de comando para publicar valores simulados de temperatura. Isso valida a cadeia de comunicação.
mosquitto_pub -h localhost -t sensor/temperatura -m '{"valor": 26.5, "unidade": "C"}'O que você deve ver: Mensagem aparece no painel 'debug' do Node-RED.
- Automatizar publicações simuladas
Crie um loop para enviar valores periódicos. Isso simula um sensor real.
for i in {1..5}; do mosquitto_pub -h localhost -t sensor/temperatura -m '{"valor": '$((20 + $RANDOM % 10))', "unidade": "C"}'; sleep 2; doneO que você deve ver: Várias mensagens aparecem no Node-RED.
- Criar dashboard no Node-RED
Instale o pacote 'node-red-dashboard' pelo menu de paletas. Adicione um nó 'ui_gauge' e conecte ao fluxo. Isso permite visualizar os dados em tempo real.
O que você deve ver: Dashboard disponível em http://localhost:1880/ui mostrando os valores recebidos.
- Configurar autenticação básica no Mosquitto
Segurança é fundamental. Crie um usuário e senha para o broker.
sudo mosquitto_passwd -c /etc/mosquitto/passwd usuarioiot sudo nano /etc/mosquitto/conf.d/autenticacao.confO que você deve ver: Arquivo de senha criado e configuração salva.
- Reiniciar Mosquitto e testar autenticação
Reinicie o serviço para aplicar a configuração. Teste publicação com usuário e senha.
sudo systemctl restart mosquitto mosquitto_pub -h localhost -t sensor/temperatura -u usuarioiot -P <senha> -m '{"valor": 28, "unidade": "C"}'O que você deve ver: Mensagem publicada com sucesso e recebida pelo Node-RED.
Como saber que funcionou
| Teste | Comando | Critério |
|---|---|---|
| Verificar status do Mosquitto | sudo systemctl status mosquitto | Status 'active (running)' |
| Testar publicação MQTT sem autenticação (após configuração de senha) | mosquitto_pub -h localhost -t sensor/temperatura -m 'teste' | Publicação deve falhar, indicando que autenticação é obrigatória |
| Testar publicação MQTT com autenticação | mosquitto_pub -h localhost -t sensor/temperatura -u usuarioiot -P <senha> -m 'teste' | Mensagem recebida no Node-RED |
| Visualizar dados no dashboard do Node-RED | Valores de temperatura aparecem em tempo real |
Troubleshooting
| Sintoma | Causa provável | Correção |
|---|---|---|
| Node-RED não conecta ao Mosquitto | Configuração incorreta do nó MQTT (host, porta ou autenticação) | Verifique se o host é 'localhost', porta 1883 e credenciais corretas |
| Mosquitto não inicia após configuração de autenticação | Erro de sintaxe no arquivo de configuração | Revise o arquivo em /etc/mosquitto/conf.d/autenticacao.conf |
| Dashboard do Node-RED não mostra dados | Fluxo não implantado ou nó desconectado | Clique em 'Deploy' e revise conexões dos nós |
| Publicação MQTT retorna erro de conexão recusada | Mosquitto não está rodando ou firewall bloqueando porta | Verifique status do Mosquitto e regras de firewall |
Segurança e hardening
- Nunca use credenciais padrão em produção
- Restrinja o acesso à porta 1883 apenas à rede necessária
- Habilite TLS para transporte seguro (consulte a documentação do Mosquitto)
- Faça backup dos arquivos de configuração e senhas
