ULC Lab · implementação reproduzível
Laboratório: Integração MQTT ponta a ponta com Mosquitto, Node-RED e sensores simulados
Você terá um ambiente MQTT funcional com Mosquitto, um sensor simulado publicando dados e um sistema TI consumindo e processando essas informações via Node-RED. O laboratório leva cerca de 2 horas.

- Duração estimada
- 120 min
- Passos
- 13
- Validações
- 4
- Versões da documentação consultada
- Eclipse Mosquitto a versão estável atual · Node-RED a versão estável atual · Python 3.6 ou superior · paho-mqtt (Python) a versão estável atual
Demonstrar, na prática, como implantar um broker MQTT Mosquitto em uma máquina virtual, conectar um sensor simulado (publicador) e um sistema TI (assinante) usando Node-RED, e validar a troca de mensagens entre OT e IT. O foco é entender o fluxo de dados, configuração básica e pontos críticos de integração em um cenário industrial típico.
Topologia
Três máquinas (ou VMs) em uma rede privada: (1) Broker Mosquitto (192.168.56.10), (2) Sensor simulado com Python (192.168.56.20), (3) Node-RED como sistema TI (192.168.56.30). O sensor publica dados no tópico 'planta/sensor1'. Node-RED assina esse tópico e exibe/processa os dados.
+-------------------+
| Sensor Simulado |
| (192.168.56.20) |
+--------+----------+
|
| MQTT pub
v
+-----------------+-----------------+
| Mosquitto Broker |
| (192.168.56.10) |
+-----------------+-----------------+
|
| MQTT sub
v
+-------------------+
| Node-RED |
| (192.168.56.30) |
+-------------------+Equipamentos e software
| Item | Requisito, licença ou versão |
|---|---|
| VM ou PC para Mosquitto | 1 vCPU, 512MB RAM, porta 1883 aberta, Linux Ubuntu 20.04 ou superior |
| VM ou PC para Sensor Simulado | 1 vCPU, 512MB RAM, Python 3.6+ instalado |
| VM ou PC para Node-RED | 1 vCPU, 1GB RAM, Node.js 14+ instalado |
| Eclipse Mosquitto | EPL/EDL · a versão estável atual |
| Node-RED | Apache 2.0 · a versão estável atual |
| Python | PSF · 3.6 ou superior |
| paho-mqtt (Python) | EPL · a versão estável atual |
Roteiro
- Preparar as VMs ou máquinas físicas
Garanta que as três máquinas estejam na mesma rede privada e possam se comunicar. Configure IPs estáticos conforme a topologia.
sudo nano /etc/netplan/01-netcfg.yamlO que você deve ver: As máquinas respondem a ping entre si.
- Instalar o Mosquitto Broker
No host 192.168.56.10, instale o Mosquitto. Ele será o ponto central de comunicação MQTT.
sudo apt update && sudo apt install mosquitto mosquitto-clientsO que você deve ver: Mosquitto instalado e rodando como serviço.
- Configurar Mosquitto para acesso na LAN
Edite o arquivo de configuração para permitir conexões externas na porta 1883.
sudo nano /etc/mosquitto/mosquitto.conf # Adicione ou descomente: listener 1883 0.0.0.0 allow_anonymous trueO que você deve ver: Mosquitto ouvindo na porta 1883 para qualquer IP.
- Reiniciar o Mosquitto e validar o serviço
Reinicie o serviço para aplicar as configurações.
sudo systemctl restart mosquitto sudo systemctl status mosquittoO que você deve ver: Status ativo (running) para o serviço Mosquitto.
- Instalar dependências Python para o sensor simulado
No host 192.168.56.20, instale Python e a biblioteca paho-mqtt.
sudo apt update && sudo apt install python3 python3-pip pip3 install paho-mqttO que você deve ver: Biblioteca paho-mqtt instalada sem erros.
- Criar script Python do sensor simulado
Crie um script que publique valores aleatórios de temperatura a cada 2 segundos no tópico 'planta/sensor1'.
nano sensor_simulado.py # Conteúdo: import time import random import paho.mqtt.client as mqtt broker = '192.168.56.10' topic = 'planta/sensor1' client = mqtt.Client() client.connect(broker, 1883, 60) while True: temp = round(random.uniform(20, 30), 2) client.publish(topic, f'Temperatura:{temp}') time.sleep(2)O que você deve ver: Script salvo e pronto para execução.
- Executar o sensor simulado
Inicie o script Python para começar a publicar dados.
python3 sensor_simulado.pyO que você deve ver: Sem erros. O script roda continuamente.
- Instalar Node-RED
No host 192.168.56.30, instale Node.js e Node-RED.
sudo apt update && sudo apt install nodejs npm sudo npm install -g --unsafe-perm node-redO que você deve ver: Node-RED instalado globalmente.
- Iniciar Node-RED e acessar a interface
Inicie o Node-RED e acesse a interface web.
node-red # Acesse http://192.168.56.30:1880 no navegadorO que você deve ver: Interface do Node-RED acessível no navegador.
- Criar fluxo Node-RED para assinar o tópico MQTT
Adicione um nó MQTT IN, configure para conectar ao broker (192.168.56.10:1883) e assine 'planta/sensor1'. Conecte a um nó debug para visualizar as mensagens.
No editor web, arraste 'mqtt in' > configure broker > tópico 'planta/sensor1' > conecte a 'debug'. Clique em Deploy.O que você deve ver: Fluxo criado e ativo. Mensagens aparecem no painel debug.
- Validar fluxo de dados ponta a ponta
Com tudo rodando, verifique se as mensagens publicadas pelo sensor aparecem no Node-RED.
Observe o painel debug do Node-RED.O que você deve ver: Mensagens como 'Temperatura:24.87' aparecem em tempo real.
- Testar publicação manual com mosquitto_pub
No host do sensor ou do broker, publique uma mensagem de teste.
mosquitto_pub -h 192.168.56.10 -t planta/sensor1 -m 'TesteManual'O que você deve ver: A mensagem 'TesteManual' aparece no Node-RED.
- Encerrar processos e limpar ambiente
Pare os scripts e serviços para finalizar o laboratório.
Ctrl+C nos terminais do sensor e do Node-RED sudo systemctl stop mosquittoO que você deve ver: Todos os processos encerrados sem erros.
Como saber que funcionou
| Teste | Comando | Critério |
|---|---|---|
| Verificar conexão do sensor ao broker | sudo netstat -tnp | grep 1883 | Conexão ESTABLISHED entre sensor e broker. |
| Mensagens do sensor visíveis no Node-RED | Mensagens de temperatura aparecem no painel debug. | |
| Testar publicação manual via mosquitto_pub | mosquitto_pub -h 192.168.56.10 -t planta/sensor1 -m 'TesteValida' | Mensagem 'TesteValida' aparece no Node-RED. |
| Verificar logs do Mosquitto | sudo tail -f /var/log/mosquitto/mosquitto.log | Entradas de conexão e publicação visíveis sem erros. |
Troubleshooting
| Sintoma | Causa provável | Correção |
|---|---|---|
| Node-RED não recebe mensagens | Broker ou sensor não acessível na rede | Verifique IPs, firewall e conectividade com ping e telnet na porta 1883 |
| Erro de conexão no sensor simulado | Broker Mosquitto não está rodando ou IP incorreto | Confirme se o serviço Mosquitto está ativo e IP correto no script |
| Mosquitto não aceita conexões externas | Configuração listener ausente ou firewall bloqueando | Revise mosquitto.conf e regras de firewall |
| Mensagens não aparecem no Node-RED | Tópico errado ou fluxo não implantado | Confirme o tópico e clique em Deploy no Node-RED |
| Mosquitto não inicia após edição | Erro de sintaxe no arquivo de configuração | Revise o mosquitto.conf e consulte a documentação |
Segurança e hardening
- Não use 'allow_anonymous true' em produção; configure autenticação e ACLs
- Restrinja o acesso à porta 1883 apenas para hosts autorizados
- Monitore logs de conexão e publicação para detectar acessos indevidos
- Atualize Mosquitto e dependências para evitar vulnerabilidades conhecidas
Checklist final
Referências
- Mosquitto Documentation · Eclipse Foundation (Mosquitto) (mosquitto.org)
- Node-RED Documentation · Node-RED (OpenJS Foundation) (nodered.org)
- Publicado
- 09/09/2026
- Última revisão
- 09/09/2026
- Versão do conteúdo
- 1.0
- Referências
- 2 oficiais
- Revisão técnica
- redação e revisão por IA, URLs conferidas na publicação
- Status
- Atual
