通过 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 设置 中创建![]() |
| 主题格式 | device/{SN}/realtime |
| 负载格式 | JSON |
⚠️ 重要提示: 请不要在此处使用您的 IAMMETER Cloud 登录凭证。 您需要在 IAMMETER Cloud 控制面板中创建专用的 MQTT 用户名和密码。
将 IAMMETER 电能表配置为 MQTT 模式
将您的 IAMMETER 电能表设置为 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. 实际应用场景
- 智能家居自动化 将实时功率数据集成到 Home Assistant 或 Node-RED 中,触发自动化操作(例如,当太阳能发电量高时启动加热器)。
- 本地数据可视化 将传入的 MQTT 数据存储到 InfluxDB 中,并使用 Grafana 仪表盘进行可视化。
- 私有云或边缘计算 通过 MQTT 直接获取实时功率数据,用于自定义分析或控制逻辑,无需依赖 IAMMETER Cloud。
8. 故障排除
| 问题 | 可能原因 / 解决方法 |
|---|---|
| 无法连接到 Broker | 检查您的 MQTT 用户名/密码是否在 IAMMETER Cloud 中正确设置。 |
| 未收到数据 | 验证您的主题格式(device/{SN}/realtime)并确保电能表在线。 |
| 数据延迟 | 检查您的网络稳定性或 Wi-Fi 信号强度。 |
| 多台电能表 | 您可以同时订阅多个主题(每个 SN 一个)。 |
9. 结论
使用 IAMMETER MQTT Broker,您可以轻松访问来自 IAMMETER 设备的实时能耗数据流。 这是一种强大而灵活的方法,可用于构建本地仪表盘、智能自动化或基于 AI 的能源优化系统。
📘 参考资料
希望本文对您有所帮助!如有任何问题,欢迎在下方评论区留言。
