Sorry, your browser does not suporte JavaScript!
Entrar

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 MQTTCaptura de tela das 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.

Configurar o medidor para modo de envio MQTT e definir 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).

Habilitar medição reativa no medidor

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

  1. 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).
  2. Visualização Local de Dados Armazene dados MQTT recebidos no InfluxDB e visualize-os com painéis Grafana.
  3. 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


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)?

Topo