ULC Lab · implementação reproduzível
Laboratório: Monitoramento e Controle de Energia com OpenEMS, Modbus TCP e MQTT em Ambiente Virtualizado
Você terá um ambiente OpenEMS rodando em uma VM, integrado a um simulador de dispositivo Modbus TCP e publicando dados via MQTT. O laboratório leva cerca de 2 horas.

- Duração estimada
- 120 min
- Passos
- 12
- Validações
- 5
- Versões da documentação consultada
- OpenEMS Edge a versão estável atual · mbserver (Modbus TCP simulator) a versão estável atual · Mosquitto MQTT Broker a versão estável atual · Java Runtime Environment consulte a documentação do OpenEMS
Demonstrar, em bancada, como implementar o OpenEMS para monitorar e controlar um dispositivo industrial simulado via Modbus TCP, com publicação de dados para um broker MQTT. O objetivo é entender a arquitetura, configurar integrações e validar a comunicação ponta a ponta, como seria feito em uma rede de fibra dedicada como a da Upnetix.
Topologia
Uma VM Linux executa o OpenEMS, conectando-se a um simulador de dispositivo Modbus TCP (rodando localmente) e a um broker MQTT (também local). O OpenEMS coleta dados do simulador via Modbus TCP (127.0.0.1:1502) e publica leituras em tópicos MQTT (127.0.0.1:1883).
+----------------+
| OpenEMS VM |
| (192.168.56.2)|
+----------------+
| |
| |
v v
+--------+ +--------+
|Modbus | | MQTT |
|Simulador| | Broker |
|127.0.0.1| |127.0.0.1|
+--------+ +--------+
Equipamentos e software
| Item | Requisito, licença ou versão |
|---|---|
| VM Linux (Ubuntu 22.04 ou similar) | 2 vCPU, 2 GB RAM, 10 GB disco, acesso à rede local |
| OpenEMS Edge | Apache 2.0 · a versão estável atual |
| mbserver (Modbus TCP simulator) | MIT · a versão estável atual |
| Mosquitto MQTT Broker | EPL/EDL · a versão estável atual |
| Java Runtime Environment | GPL ou OpenJDK · consulte a documentação do OpenEMS |
Roteiro
- Preparar a VM Linux
Atualize o sistema e instale utilitários essenciais. Isso garante ambiente limpo e atualizado.
sudo apt update && sudo apt upgrade -y sudo apt install openjdk-11-jre git wget unzip -yO que você deve ver: Sistema atualizado, Java instalado.
- Instalar Mosquitto MQTT Broker
O OpenEMS publica dados via MQTT. Instale o broker localmente.
sudo apt install mosquitto mosquitto-clients -y sudo systemctl enable --now mosquittoO que você deve ver: Mosquitto rodando na porta 1883.
- Instalar o simulador Modbus TCP (mbserver)
Simule um dispositivo industrial Modbus TCP para testes realistas.
pip install mbserverO que você deve ver: mbserver instalado via pip.
- Configurar e iniciar o mbserver
Inicie o simulador ouvindo na porta 1502. Isso simula um dispositivo Modbus TCP.
mbserver --host 127.0.0.1 --port 1502 &O que você deve ver: mbserver ouvindo em 127.0.0.1:1502.
- Clonar o repositório OpenEMS Edge
Obtenha o código-fonte do OpenEMS Edge.
git clone https://github.com/OpenEMS/openems.git cd openems/io.openems.edge.applicationO que você deve ver: Repositório clonado e diretório correto acessado.
- Configurar OpenEMS para Modbus TCP e MQTT
Edite o arquivo de configuração para integrar Modbus TCP e MQTT. Isso conecta os componentes.
cp config-example.properties config.properties nano config.propertiesO que você deve ver: Arquivo config.properties criado para customização.
- Editar config.properties
Adicione/ajuste as seguintes linhas para habilitar Modbus TCP e MQTT. Consulte a documentação para detalhes de parâmetros.
[Adicione ou edite] openems.edge.modbus.tcp.enabled=true openems.edge.modbus.tcp.host=127.0.0.1 openems.edge.modbus.tcp.port=1502 openems.edge.modbus.tcp.unitid=1 openems.edge.mqtt.enabled=true openems.edge.mqtt.brokeruri=tcp://127.0.0.1:1883 openems.edge.mqtt.clientid=openems-edgeO que você deve ver: Configuração salva com parâmetros corretos.
- Iniciar o OpenEMS Edge
Execute o OpenEMS para iniciar a integração.
java -jar io.openems.edge.application-VERSAO.jar -c config.propertiesO que você deve ver: OpenEMS inicializa, conecta ao Modbus TCP e ao MQTT Broker.
- Simular dados no mbserver
Insira valores de teste no mbserver para simular medições.
Consulte a documentação do mbserver para comandos de escrita de registradores.O que você deve ver: mbserver aceita comandos e armazena valores.
- Verificar publicação MQTT
Use um cliente MQTT para monitorar os tópicos publicados pelo OpenEMS.
mosquitto_sub -h 127.0.0.1 -t '#' -vO que você deve ver: Mensagens de dados do OpenEMS aparecem nos tópicos MQTT.
- Testar controle Modbus
Envie comandos Modbus via OpenEMS para alterar valores no simulador.
Consulte a documentação do OpenEMS para comandos de controle.O que você deve ver: Valores mudam no mbserver conforme comandos enviados.
- Monitorar logs do OpenEMS
Acompanhe os logs para identificar integrações bem-sucedidas ou falhas.
tail -f logs/openems.logO que você deve ver: Logs mostram conexões e transações Modbus/MQTT.
Como saber que funcionou
| Teste | Comando | Critério |
|---|---|---|
| Verificar conexão ao broker MQTT | mosquitto_sub -h 127.0.0.1 -t '#' -v | Mensagens do OpenEMS aparecem nos tópicos MQTT. |
| Checar leitura de dados Modbus | Consulte logs do OpenEMS | Logs mostram leitura de registradores Modbus sem erro. |
| Alterar valor no mbserver e observar MQTT | Altere valor no mbserver, observe saída do mosquitto_sub | Mudança refletida nas mensagens MQTT. |
| Enviar comando de controle pelo OpenEMS | Consulte documentação OpenEMS para comando | Valor alterado no mbserver. |
| Verificar logs de erro | tail -f logs/openems.log | Ausência de erros críticos de conexão. |
Troubleshooting
| Sintoma | Causa provável | Correção |
|---|---|---|
| OpenEMS não conecta ao Modbus TCP | mbserver não está rodando ou porta errada | Verifique se o mbserver está ativo em 127.0.0.1:1502. |
| Sem mensagens MQTT | Mosquitto não está rodando ou configuração incorreta | Confirme se o Mosquitto está ativo e brokeruri correto no config.properties. |
| Erro de autenticação MQTT | Broker exige usuário/senha e não foi configurado | Ajuste config.properties para incluir credenciais, se necessário. |
| OpenEMS não inicia | Versão do Java incompatível | Confirme versão do Java conforme documentação do OpenEMS. |
| Dados não mudam no MQTT após alterar mbserver | OpenEMS está lendo registrador errado ou cacheado | Revise endereços de registrador no config.properties e reinicie o OpenEMS. |
Segurança e hardening
- Nunca exponha portas 1502 (Modbus) e 1883 (MQTT) para redes públicas sem autenticação.
- Utilize autenticação e TLS no broker MQTT em ambientes reais.
- Restrinja permissões de firewall para acesso apenas local durante testes.
- Revise logs para identificar tentativas de acesso não autorizado.
Checklist final
Referências
- RESTful API Tutorial · Restfulapi (restfulapi.net)
- Publicado
- 09/09/2026
- Última revisão
- 09/09/2026
- Versão do conteúdo
- 1.0
- Referências
- 1 oficiais
- Revisão técnica
- redação e revisão por IA, URLs conferidas na publicação
- Status
- Atual
