ULC Lab · implementação reproduzível
Laboratório: Gateway Zigbee2MQTT com automação MQTT em bancada virtual
Você terá um gateway Zigbee2MQTT funcional em uma VM Linux, integrando um dispositivo Zigbee simulado a um broker MQTT local. O laboratório pode ser concluído em cerca de 2 horas.

- Duração estimada
- 90 min
- Passos
- 13
- Validações
- 5
- Versões da documentação consultada
- Zigbee2MQTT a versão estável atual · Eclipse Mosquitto a versão estável atual · Node.js a versão estável atual · npm a versão estável atual
Este laboratório ensina a montar, do zero, uma integração Zigbee-MQTT usando apenas software livre e hardware comum. Você vai entender, na prática, como um gateway Zigbee2MQTT conecta dispositivos Zigbee a sistemas de automação industrial via MQTT, base de qualquer solução IoT moderna em ambientes industriais.
Topologia
Um computador ou VM Linux roda o Zigbee2MQTT e o broker Mosquitto MQTT. Um adaptador USB Zigbee (ou simulador) conecta ao Zigbee2MQTT, que faz a ponte entre dispositivos Zigbee e tópicos MQTT. O usuário interage via CLI e MQTT Explorer (opcional), com endereços na faixa 192.168.56.0/24.
┌──────────────┐ USB ┌──────────────┐ TCP ┌───────────────┐
│ VM Linux │<────────────>│ Zigbee2MQTT │<===========>│ Mosquitto │
│192.168.56.10│ │ localhost │ MQTT │192.168.56.10 │
└──────────────┘ └──────────────┘ └───────────────┘
│
│
Zigbee USB Dongle
│
┌─────────────┐
│ Dispositivo│
│ Zigbee (sim)│
└─────────────┘Equipamentos e software
| Item | Requisito, licença ou versão |
|---|---|
| VM Linux (Ubuntu/Debian) | 1 vCPU, 1GB RAM, 10GB disco, acesso root |
| Adaptador USB Zigbee CC2531 ou simulador | porta USB livre |
| PC host | acesso SSH à VM |
| Zigbee2MQTT | GPLv3 · a versão estável atual |
| Eclipse Mosquitto | EPL/EDL · a versão estável atual |
| Node.js | MIT · a versão estável atual |
| npm | Artistic · a versão estável atual |
Roteiro
- Preparar a VM Linux
Garanta que sua VM está atualizada e com acesso root. Isso evita falhas inesperadas.
sudo apt update && sudo apt upgrade -yO que você deve ver: Sistema atualizado sem erros
- Instalar Node.js e npm
Zigbee2MQTT depende do Node.js. Use o repositório oficial para evitar versões antigas.
sudo apt install -y nodejs npmO que você deve ver: node e npm instalados (verifique com node -v)
- Instalar Mosquitto MQTT Broker
O broker MQTT é o elo entre Zigbee2MQTT e aplicações industriais.
sudo apt install -y mosquitto mosquitto-clientsO que você deve ver: Mosquitto rodando como serviço
- Conectar o adaptador Zigbee USB
Conecte o dongle Zigbee CC2531 (ou similar) à VM. Se usar simulador, consulte a documentação do Zigbee2MQTT.
ls /dev/ttyACM* /dev/ttyUSB*O que você deve ver: Dispositivo USB listado (ex: /dev/ttyACM0)
- Instalar Zigbee2MQTT
Clone o repositório oficial e instale as dependências. Isso garante a versão mais recente e estável.
git clone https://github.com/Koenkk/zigbee2mqtt.git cd zigbee2mqtt npm ciO que você deve ver: Dependências instaladas sem erros
- Configurar Zigbee2MQTT
Edite o arquivo de configuração para apontar para o broker MQTT local e o dongle Zigbee. Isso conecta os mundos Zigbee e MQTT.
nano data/configuration.yamlO que você deve ver: Arquivo salvo com as configurações corretas
- Exemplo de configuration.yaml
Insira as linhas mínimas para funcionamento básico.
homeassistant: false mqtt: base_topic: zigbee2mqtt server: 'mqtt://localhost:1883' serial: port: '/dev/ttyACM0'O que você deve ver: Arquivo salvo sem erros de sintaxe
- Iniciar Zigbee2MQTT
Suba o serviço e monitore logs. Isso mostra se a ponte Zigbee-MQTT está ativa.
npm startO que você deve ver: Log indica 'Zigbee started' e conexão ao MQTT
- Parear um dispositivo Zigbee (simulado)
Coloque o dispositivo Zigbee em modo de pareamento. Se não tiver hardware, use o modo de simulação do Zigbee2MQTT (consulte a documentação).
Acompanhe logs do Zigbee2MQTTO que você deve ver: Dispositivo reconhecido nos logs
- Publicar e receber mensagens MQTT
Teste a comunicação MQTT usando o mosquitto_sub e mosquitto_pub. Isso valida a integração ponta a ponta.
mosquitto_sub -t zigbee2mqtt/+/state -vO que você deve ver: Mensagens de estado dos dispositivos Zigbee
- Automatizar um comando via MQTT
Envie um comando MQTT para acionar o dispositivo Zigbee. Isso simula uma automação industrial.
mosquitto_pub -t zigbee2mqtt/<NOME_DO_DISPOSITIVO>/set -m '{"state": "ON"}'O que você deve ver: Dispositivo Zigbee responde e log mostra ação
- Monitorar tópicos MQTT
Use o mosquitto_sub para acompanhar todos os tópicos Zigbee2MQTT.
mosquitto_sub -t zigbee2mqtt/# -vO que você deve ver: Fluxo de mensagens MQTT em tempo real
- Persistir logs para análise
Configure Zigbee2MQTT para salvar logs em arquivo. Isso é essencial para ambientes industriais.
Consulte a documentação do Zigbee2MQTT para configuração de logsO que você deve ver: Arquivo de log gerado em disco
Como saber que funcionou
| Teste | Comando | Critério |
|---|---|---|
| Verificar status do broker MQTT | sudo systemctl status mosquitto | Status ativo (running) |
| Checar conexão Zigbee2MQTT ao MQTT | grep 'Connected to MQTT server' data/log/*.log | Mensagem de conexão encontrada |
| Parear dispositivo Zigbee | Verificar logs do Zigbee2MQTT | Dispositivo listado como 'joined' |
| Receber mensagem MQTT de estado | mosquitto_sub -t zigbee2mqtt/+/state -v | Mensagem recebida ao acionar dispositivo |
| Enviar comando MQTT e ver resposta | mosquitto_pub ... ; monitorar log | Dispositivo responde e log registra ação |
Troubleshooting
| Sintoma | Causa provável | Correção |
|---|---|---|
| Zigbee2MQTT não inicia | Porta serial incorreta ou ocupada | Verifique se o dongle está em /dev/ttyACM0 ou ajuste no configuration.yaml |
| Mosquitto não aceita conexões | Serviço parado ou firewall bloqueando | Inicie o serviço com sudo systemctl start mosquitto e ajuste firewall |
| Dispositivo Zigbee não pareia | Modo de pareamento não ativado ou distância excessiva | Ative o modo pareamento e aproxime o dispositivo do dongle |
| Mensagens MQTT não aparecem | Base_topic errado ou cliente subscrevendo tópico incorreto | Confirme base_topic em configuration.yaml e tópicos nos comandos |
| Logs não são salvos | Configuração de log ausente | Consulte a documentação do Zigbee2MQTT para ativar logs em arquivo |
Segurança e hardening
- Altere a senha padrão do Mosquitto e use autenticação para evitar acesso não autorizado
- Restrinja o acesso à porta 1883 apenas à rede interna
- Desabilite tópicos MQTT desnecessários
- Mantenha Zigbee2MQTT e dependências sempre atualizados
- Revise permissões de arquivos de configuração e logs
Checklist final
Referências
- Zigbee Alliance Specifications · Zigbeealliance (zigbeealliance.org)
- Mosquitto Documentation · OASIS (MQTT) (mqtt.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
