通过 MQTT 代理订阅实时能源数据(2025 版)
一、简介
IAMMETER-云IAMMETER-Cloud 是一个专业的能源监测和光伏管理平台。 除了强大的可视化和报表功能外,IAMMETER-Cloud 还提供灵活的数据接口。 这使得用户可以根据自身需求,将 IAMMETER-Cloud 用作定制化解决方案。数据中间件通过代码以编程方式检索数据。
使用代码从 IAMMETER-Cloud 获取数据主要有两种方法:
- 订阅数据IAMMETER 的 MQTT 代理(本文重点)
- 致电 IAMMETER-Cloud 官方蜜蜂
本指南解释了如何订阅 IAMMETER MQTT 主题、解释数据结构(适用于单相和三相电表),以及如何实现可运行的 Python 和 Node.js 示例。
2. IAMMETER MQTT 代理概述
笔记:IAMMETER MQTT 代理最初被设计为开发和测试服务为了方便起见,我们提供了此功能,但它并非 IAMMETER-Cloud 标准产品的一部分(尽管它已稳定运行超过 5 年)。 对于生产环境或大规模部署,我们建议您自行设置。自建 MQTT 代理.
IAMMETER MQTT 代理配置
| 范围 | 描述 |
|---|---|
| 经纪人地址 | mqtt.iammeter.com |
| 港口 | 1883(非SSL) |
| 用户名/密码 | 必须在……中创建IAMMETER 云 → 设置 → MQTT 设置![]() |
| 主题格式 | 设备/{SN}/实时 |
| 有效载荷格式 | JSON |
⚠️ 重要的:做不是请在此处使用您的 IAMMETER Cloud 登录凭据。 您需要创建专用的 MQTT 用户名和密码在 IAMMETER 云控制面板中。
配置 IAMMETER 电表以使用 MQTT 模式
将您的 IAMMETER 仪表设置为MQTT上传模式(看固件配置指南)并输入 IAMMETER MQTT 代理参数。

3. MQTT 主题格式
每个 IAMMETER 设备都会在以下主题下发布其实时数据:
设备/{SN}/实时
在哪里{SN}是您电表的序列号。
例如,如果您的设备序列号是DA2BED94主题将是:
设备/DA2BED94/实时
您可以订阅此主题,以接收持续的实时测量数据。
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 | 电压 | 当前线路电压 | 五 |
| 2 | 当前的 | 当前线路电流 | 一种 |
| 3 | 力量 | 有功功率 | W |
| 4 | 前向能量 | 进口能源(消耗量) | 千瓦时 |
| 5 | 反向能量 | 输出能源(上网电价、太阳能) | 千瓦时 |
| 6 | 频率 | 网格频率 | 赫兹 |
| 7 | 功率因数 | 当前功率因数 | 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]
]
}
数据是一个包含以下内容的列表三个数组每个都对应于A、B 和 C 阶段
每个内部数组的结构与单相数组相同。数据大批。
| 指数 | 场地 | 描述 | 单元 |
|---|---|---|---|
| 1 | 电压 | 相电压 | 五 |
| 2 | 当前的 | 相电流 | 一种 |
| 3 | 力量 | 有功功率 | W |
| 4 | 前向能量 | 进口能源 | 千瓦时 |
| 5 | 反向能量 | 输出能源 | 千瓦时 |
| 6 | 频率 | 网格频率 | 赫兹 |
| 7 | 功率因数 | 相位功率因数 | 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,单位为千乏)和无功电能(kVARh).
Q(kVar):无功功率——正值表示感性无功功率,负值表示容性无功功率kVARh:无功功率——每个阶段都包含两个kVARh值:一个用于感性负载还有一个是容性负载.
5. Python 示例:订阅实时数据
下面是一个使用 Python 脚本的示例paho-mqtt图书馆。
import paho.mqtt.client as mqtt
import json
# MQTT 代理配置
MQTT_BROKER = "mqtt.iammeter.com"
MQTT_PORT = 1883
MQTT_USER = "your_mqtt_username" # 在 IAMMETER 云端 → MQTT 设置中设置
MQTT_PASS = "your_mqtt_password"
TOPIC = "device/DA2BED94/realtime" # 替换为您自己的设备序列号
# 连接到代理时的回调函数
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("✅ 已成功连接到 IAMMETER MQTT 代理")
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
# 连接到代理并开始循环
client.connect(MQTT_BROKER, MQTT_PORT, 60)
client.loop_forever()
6. Node.js 示例
我们推荐您尝试这个有趣的开源项目: 它使用Node.js订阅来自 IAMMETER MQTT 代理的实时数据并将其可视化网页用户界面创建炫酷的实时仪表盘。
🔗 https://github.com/lewei50/iammeterJS
7. 实际应用案例
- 智能家居自动化将实时电力数据集成到家庭助理或者节点红触发自动化操作(例如,当太阳能发电量高时启动加热器)。
- 本地数据可视化将传入的 MQTT 数据存储在InfluxDB并用……将其可视化Grafana仪表盘.
- 私有云或边缘计算无需依赖 IAMMETER 云,即可通过 MQTT 直接检索实时电力数据,用于自定义分析或控制逻辑。
8. 故障排除
| 问题 | 可能原因/解决方法 |
|---|---|
| 无法连接到经纪商 | 请检查您在 IAMMETER Cloud 中是否正确设置了 MQTT 用户名/密码。 |
| 未收到任何数据 | 请确认您的主题格式(设备/{SN}/实时)并确保电表已联网。 |
| 数据延迟 | 检查您的网络稳定性或Wi-Fi信号强度。 |
| 多米 | 您可以同时订阅多个主题(每个 SN 订阅一个主题)。 |
9. 结论
使用IAMMETER MQTT 代理您可以轻松访问实时能源数据流来自您的 IAMMETER 设备。 这是一种强大而灵活的构建方法。本地仪表盘、智能自动化或基于人工智能的能源优化系统.
📘 参考
你想让我做一个吗?Markdown格式的博客文章版本(准备好发布到 IAMMETER 官方博客,语法高亮和嵌入式图像链接都完好无损)?
