Assinatura de Dados de Energia em Tempo Real via Broker MQTT (Edição 2025)
1. Introdução
IAMMETER-Cloud é uma plataforma profissional de monitoramento de energia e gestão fotovoltaica. Além de suas poderosas funções de visualização e relatórios, o IAMMETER-Cloud também oferece interfaces de dados flexíveis. Isso permite que usuários com requisitos personalizados utilizem o IAMMETER-Cloud como um middleware de dados, recuperando dados programaticamente através de código.
Existem duas formas principais de obter dados do IAMMETER-Cloud usando código:
- Assinar dados via Broker MQTT do IAMMETER (o foco deste artigo)
- Chamar as APIs oficiais do IAMMETER-Cloud
Este guia explica como assinar tópicos MQTT do IAMMETER, interpretar estruturas de dados (para medidores monofásicos e trifásicos) e implementar exemplos funcionais em Python e Node.js.
2. Visão Geral do Broker MQTT do IAMMETER
Nota: O Broker MQTT do IAMMETER foi originalmente projetado como um serviço de desenvolvimento e teste por conveniência e não faz parte da oferta padrão do IAMMETER-Cloud (embora tenha se mantido estável e em funcionamento por mais de 5 anos). Para implantações de produção ou em larga escala, recomendamos configurar seu próprio broker MQTT.
Configuração do Broker MQTT do IAMMETER
| Parâmetro | Descrição |
|---|---|
| Endereço do broker | mqtt.iammeter.com |
| Porta | 1883 (sem SSL) |
| Usuário / Senha | Deve ser criado em IAMMETER Cloud → Configurações → Configurações MQTT![]() |
| Formato do tópico | device/{SN}/realtime |
| Formato do payload | JSON |
⚠️ Importante: Não use suas credenciais de login do IAMMETER Cloud aqui. Você precisa criar um nome de usuário e senha MQTT dedicados no painel do IAMMETER Cloud.
Configurar o Medidor IAMMETER para Usar Modo MQTT
Configure seu medidor IAMMETER para o modo de envio MQTT (veja o guia de configuração de firmware) e insira os parâmetros do Broker MQTT do IAMMETER.

3. Formato do Tópico MQTT
Cada dispositivo IAMMETER publica seus dados em tempo real sob o seguinte tópico:
device/{SN}/realtime
Onde {SN} é o número de série do seu medidor.
Por exemplo, se o SN do seu dispositivo for DA2BED94, o tópico será:
device/DA2BED94/realtime
Você pode assinar este tópico para receber dados de medição contínuos em tempo real.
4. Formato dos Dados
4.1 Formato de Dados do Medidor Monofásico
Um medidor IAMMETER monofásico publica dados em tempo real no formato JSON da seguinte forma:
{
"method": "1-272",
"mac": "B0F8932A295C",
"version": "i.91.062T6",
"server": "em",
"SN": "DA2BED94",
"Data": [227.02, 1.81, 296.0, 21699.98, 0.00, 50.01, 0.72]
}
| Índice | Campo | Descrição | Unidade |
|---|---|---|---|
| 1 | Voltage | Tensão da linha atual | V |
| 2 | Current | Corrente da linha atual | A |
| 3 | Power | Potência ativa | W |
| 4 | Forward Energy | Energia importada (consumida) | kWh |
| 5 | Reverse Energy | Energia exportada (injeção, solar) | kWh |
| 6 | Frequency | Frequência da rede | Hz |
| 7 | Power Factor | Fator de potência atual | PF |
🟢 Notas:
- Potência positiva → consumo de energia
- Potência negativa → exportação de energia (ex.: injeção solar)
4.2 Formato de Dados do Medidor Trifásico (WEM3080T / WEM3046T / WEM3050T)
Medidores IAMMETER trifásicos publicam dados em um formato JSON semelhante, com três arrays correspondendo a cada fase.
{
"method": "4-9",
"mac": "849DC2CEC625",
"version": "i.91.062T6",
"server": "em",
"SN": "CB0A0CFB",
"EA": {
"Reactive": [
[-111.0, 0.000, 176.750],
[-113.0, 0.000, 179.110],
[-114.0, 36.120, 144.410]
]
},
"Datas": [
[225.9, 1.260, 194.0, 305.110, 0.000, 49.99, 0.87],
[225.8, 1.260, 193.0, 302.690, 0.000, 49.99, 0.86],
[225.9, 1.260, 192.0, 300.890, 0.000, 49.99, 0.86]
]
}
Datas é uma lista contendo três arrays, cada um correspondendo à fase A, B e C.
Cada array interno tem a mesma estrutura do array Data monofásico.
| Índice | Campo | Descrição | Unidade |
|---|---|---|---|
| 1 | Voltage | Tensão da fase | V |
| 2 | Current | Corrente da fase | A |
| 3 | Power | Potência ativa | W |
| 4 | Forward Energy | Energia importada | kWh |
| 5 | Reverse Energy | Energia exportada | kWh |
| 6 | Frequency | Frequência da rede | Hz |
| 7 | Power Factor | Fator de potência da fase | PF |
Além dos dados de potência real, quando a medição de potência reativa está habilitada, você também verá a seção EA conforme abaixo:
"EA": {
"Reactive": [
[-111.0, 0.000, 176.750],
[-113.0, 0.000, 179.110],
[-114.0, 36.120, 144.410]
]
}
Esta seção mostra dados de medição reativa, que aparecem apenas quando a função de teste reativo está habilitada (veja a captura de tela abaixo).

Cada array representa as três fases (A, B, C), mostrando potência reativa (Q em kVar) e energia reativa (kVARh).
Q (kVar): Potência reativa — positivo = indutivo, negativo = capacitivo kVARh: Energia reativa — cada fase inclui dois valores de kVARh: um para carga indutiva e um para carga capacitiva.
5. Exemplo em Python: Assinatura de Dados em Tempo Real
Abaixo está um script Python funcional usando a biblioteca paho-mqtt.
import paho.mqtt.client as mqtt
import json
# Configuração do Broker MQTT
MQTT_BROKER = "mqtt.iammeter.com"
MQTT_PORT = 1883
MQTT_USER = "your_mqtt_username" # Definido em IAMMETER Cloud → Configurações MQTT
MQTT_PASS = "your_mqtt_password"
TOPIC = "device/DA2BED94/realtime" # Substitua pelo SN do seu dispositivo
# Callback quando conectado ao broker
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("✅ Conectado ao Broker MQTT do IAMMETER com sucesso")
client.subscribe(TOPIC)
print(f"📡 Inscrito no tópico: {TOPIC}")
else:
print(f"❌ Falha na conexão com código {rc}")
# Callback quando uma mensagem é recebida
def on_message(client, userdata, msg):
payload = json.loads(msg.payload.decode())
print("📊 Dados em tempo real recebidos:")
print(json.dumps(payload, indent=2, ensure_ascii=False))
# Inicializar cliente MQTT
client = mqtt.Client()
client.username_pw_set(MQTT_USER, MQTT_PASS)
client.on_connect = on_connect
client.on_message = on_message
# Conectar ao broker e iniciar o loop
client.connect(MQTT_BROKER, MQTT_PORT, 60)
client.loop_forever()
6. Exemplo em Node.js
Recomendamos experimentar este interessante projeto de código aberto: Ele usa Node.js para assinar dados em tempo real do broker MQTT do IAMMETER e visualizá-los em uma interface web, criando um painel em tempo real incrível.
🔗 https://github.com/lewei50/iammeterJS
7. Casos de Uso Práticos
- Automação Residencial Inteligente Integre dados de energia em tempo real no Home Assistant ou Node-RED para acionar ações de automação (ex.: ligar um aquecedor quando a geração solar estiver alta).
- Visualização Local de Dados Armazene dados MQTT recebidos no InfluxDB e visualize-os com painéis Grafana.
- Nuvem Privada ou Computação de Borda Recupere dados de energia em tempo real diretamente via MQTT para análises personalizadas ou lógica de controle sem depender do IAMMETER Cloud.
8. Solução de Problemas
| Problema | Causa Possível / Solução |
|---|---|
| Não é possível conectar ao broker | Verifique se seu usuário/senha MQTT estão configurados corretamente no IAMMETER Cloud. |
| Nenhum dado recebido | Verifique o formato do seu tópico (device/{SN}/realtime) e certifique-se de que o medidor está online. |
| Atraso nos dados | Verifique a estabilidade da sua rede ou a intensidade do sinal Wi-Fi. |
| Múltiplos medidores | Você pode assinar vários tópicos simultaneamente (um por SN). |
9. Conclusão
Usando o Broker MQTT do IAMMETER, você pode acessar facilmente fluxos de dados de energia em tempo real dos seus dispositivos IAMMETER. É um método poderoso e flexível para construir painéis locais, automações inteligentes ou sistemas de otimização de energia baseados em IA.
📘 Referências
- Recursos de Firmware e Comunicação do IAMMETER
- Documentação da API do IAMMETER Cloud e MQTT
- Desenvolva seu próprio Painel de Monitoramento de Energia usando NodeJS
Gostaria que eu fizesse uma versão de post de blog formatada em Markdown (pronta para publicar no blog oficial do IAMMETER, com realce de sintaxe e links de imagem incorporados intactos)?
