抱歉,你的浏览器不支持 JavaScript!
登录

通过 MQTT Broker 订阅实时能耗数据(2025 版)

1. 简介

IAMMETER-Cloud 是一个专业的能耗监测和光伏管理平台。 除了强大的可视化和报表功能外,IAMMETER-Cloud 还提供了灵活的数据接口。 这使得有定制需求的用户可以将 IAMMETER-Cloud 作为数据中间件,通过代码以编程方式获取数据。

通过代码从 IAMMETER-Cloud 获取数据主要有两种方式:

  • 通过 IAMMETER 的 MQTT Broker 订阅数据(本文重点)
  • 调用 IAMMETER-Cloud 的官方 API

本指南将介绍如何订阅 IAMMETER MQTT 主题、解析数据结构(适用于单相和三相电能表),并提供可运行的 Python 和 Node.js 示例。


2. IAMMETER MQTT Broker 概述

注意: IAMMETER MQTT Broker 最初是作为开发与测试服务为了方便而设计的,并非 IAMMETER-Cloud 标准产品的一部分(尽管它已经稳定运行了 5 年以上)。 对于生产环境或大规模部署,我们建议搭建您自己的 MQTT broker

IAMMETER MQTT Broker 配置

参数 说明
Broker 地址 mqtt.iammeter.com
端口 1883(非 SSL)
用户名 / 密码 必须在 IAMMETER Cloud → 设置 → MQTT 设置 中创建MQTT 设置截图
主题格式 device/{SN}/realtime
负载格式 JSON

⚠️ 重要提示: 请不要在此处使用您的 IAMMETER Cloud 登录凭证。 您需要在 IAMMETER Cloud 控制面板中创建专用的 MQTT 用户名和密码

将 IAMMETER 电能表配置为 MQTT 模式

将您的 IAMMETER 电能表设置为 MQTT 上传模式(请参阅固件配置指南),并输入 IAMMETER MQTT Broker 参数。

将电能表设置为 MQTT 上传模式并配置 IAMMETER MQTT Broker 参数


3. MQTT 主题格式

每个 IAMMETER 设备在以下主题下发布其实时数据:

device/{SN}/realtime

其中 {SN} 是您电能表的序列号。 例如,如果您的设备 SN 为 DA2BED94,则主题为:

device/DA2BED94/realtime

您可以订阅此主题以接收连续的实时测量数据。


4. 数据格式

4.1 单相电能表数据格式

单相 IAMMETER 电能表以 JSON 格式发布实时数据如下:

{
  "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]
}
索引 字段 说明 单位
1 Voltage 当前电压 V
2 Current 当前电流 A
3 Power 有功功率 W
4 Forward Energy 正向电能(消耗) kWh
5 Reverse Energy 反向电能(馈入,太阳能) kWh
6 Frequency 电网频率 Hz
7 Power Factor 当前功率因数 PF

🟢 说明

  • 正功率 → 消耗电能
  • 负功率 → 输出电能(如太阳能馈入)

4.2 三相电能表数据格式(WEM3080T / WEM3046T / WEM3050T)

三相 IAMMETER 电能表以类似的 JSON 格式发布数据,三个数组对应各相。

{
  "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 是一个包含三个数组的列表,分别对应 A、B、C 三相。 每个内部数组的结构与单相 Data 数组相同。

索引 字段 说明 单位
1 Voltage 相电压 V
2 Current 相电流 A
3 Power 有功功率 W
4 Forward Energy 正向电能 kWh
5 Reverse Energy 反向电能 kWh
6 Frequency 电网频率 Hz
7 Power Factor 相功率因数 PF

除了有功功率数据外,当无功功率测量功能启用时,您还会看到 EA 部分,如下所示:

"EA": {
  "Reactive": [
    [-111.0, 0.000, 176.750],
    [-113.0, 0.000, 179.110],
    [-114.0, 36.120, 144.410]
  ]
}

此部分显示无功测量数据,仅当无功测试功能启用时才会出现(见下方截图)。

在电能表中启用无功测量

每个数组代表三相(A、B、C),显示无功功率(Q,单位 kVar)无功电能(kVARh)

Q(kVar): 无功功率——正数 = 感性,负数 = 容性 kVARh: 无功电能——每相包含两个 kVARh 值:一个用于感性负载,一个用于容性负载


5. Python 示例:订阅实时数据

以下是一个使用 paho-mqtt 库的可运行 Python 脚本。

import paho.mqtt.client as mqtt
import json

# MQTT Broker 配置
MQTT_BROKER = "mqtt.iammeter.com"
MQTT_PORT = 1883
MQTT_USER = "your_mqtt_username"  # 在 IAMMETER Cloud → MQTT 设置中设置
MQTT_PASS = "your_mqtt_password"
TOPIC = "device/DA2BED94/realtime"  # 替换为您自己的设备 SN

# 连接成功时的回调
def on_connect(client, userdata, flags, rc):
    if rc == 0:
        print("✅ 成功连接到 IAMMETER MQTT Broker")
        client.subscribe(TOPIC)
        print(f"📡 已订阅主题:{TOPIC}")
    else:
        print(f"❌ 连接失败,返回码:{rc}")

# 收到消息时的回调
def on_message(client, userdata, msg):
    payload = json.loads(msg.payload.decode())
    print("📊 收到实时数据:")
    print(json.dumps(payload, indent=2, ensure_ascii=False))

# 初始化 MQTT 客户端
client = mqtt.Client()
client.username_pw_set(MQTT_USER, MQTT_PASS)
client.on_connect = on_connect
client.on_message = on_message

# 连接到 Broker 并启动循环
client.connect(MQTT_BROKER, MQTT_PORT, 60)
client.loop_forever()

6. Node.js 示例

我们推荐尝试这个有趣的开源项目: 它使用 Node.js 订阅 IAMMETER MQTT broker 的实时数据,并在 Web UI 中可视化,创建炫酷的实时仪表盘。

🔗 https://github.com/lewei50/iammeterJS


7. 实际应用场景

  1. 智能家居自动化 将实时功率数据集成到 Home AssistantNode-RED 中,触发自动化操作(例如,当太阳能发电量高时启动加热器)。
  2. 本地数据可视化 将传入的 MQTT 数据存储到 InfluxDB 中,并使用 Grafana 仪表盘进行可视化。
  3. 私有云或边缘计算 通过 MQTT 直接获取实时功率数据,用于自定义分析或控制逻辑,无需依赖 IAMMETER Cloud。

8. 故障排除

问题 可能原因 / 解决方法
无法连接到 Broker 检查您的 MQTT 用户名/密码是否在 IAMMETER Cloud 中正确设置。
未收到数据 验证您的主题格式(device/{SN}/realtime)并确保电能表在线。
数据延迟 检查您的网络稳定性或 Wi-Fi 信号强度。
多台电能表 您可以同时订阅多个主题(每个 SN 一个)。

9. 结论

使用 IAMMETER MQTT Broker,您可以轻松访问来自 IAMMETER 设备的实时能耗数据流。 这是一种强大而灵活的方法,可用于构建本地仪表盘、智能自动化或基于 AI 的能源优化系统


📘 参考资料


希望本文对您有所帮助!如有任何问题,欢迎在下方评论区留言。

顶部