Абониране за данни за енергия в реално време чрез MQTT брокер (издание 2025)
1. Въведение
IAMMETER-Cloud е професионална платформа за мониторинг на енергия и управление на фотоволтаични системи. Освен мощните си функции за визуализация и отчети, IAMMETER-Cloud предоставя и гъвкави интерфейси за данни. Това позволява на потребителите със специфични изисквания да използват IAMMETER-Cloud като междинен софтуер за данни, извличайки данни програмно чрез код.
Има два основни начина за получаване на данни от IAMMETER-Cloud чрез код:
- Абониране за данни чрез MQTT брокера на IAMMETER (фокусът на тази статия)
- Извикване на официалните API на IAMMETER-Cloud
Това ръководство обяснява как да се абонирате за IAMMETER MQTT теми, как да тълкувате структурата на данните (както за еднофазни, така и за трифазни измервателни уреди) и как да реализирате работещи примери на Python и Node.js.
2. Преглед на IAMMETER MQTT брокера
Забележка: IAMMETER MQTT брокерът първоначално е създаден като услуга за разработка и тестване за удобство и не е част от стандартната оферта на IAMMETER-Cloud (въпреки че работи стабилно повече от 5 години). За продуктивни или мащабни внедрявания препоръчваме да настроите собствен MQTT брокер.
Конфигурация на IAMMETER MQTT брокера
| Параметър | Описание |
|---|---|
| Адрес на брокера | mqtt.iammeter.com |
| Порт | 1883 (без SSL) |
| Потребителско име / парола | Трябва да бъдат създадени в IAMMETER Cloud → Settings → MQTT Settings![]() |
| Формат на темата | device/{SN}/realtime |
| Формат на полезния товар | JSON |
⚠️ Важно: Не използвайте тук данните си за вход в IAMMETER Cloud. Трябва да създадете отделно потребителско име и парола за MQTT в таблото за управление на IAMMETER Cloud.
Конфигуриране на IAMMETER измервателен уред в MQTT режим
Настройте вашия IAMMETER измервателен уред в режим MQTT upload mode (вижте ръководството за конфигуриране на фърмуера) и въведете параметрите на IAMMETER MQTT брокера.

3. Формат на MQTT темата
Всяко устройство IAMMETER публикува данните си в реално време под следната тема:
device/{SN}/realtime
Където {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 | Напрежение | Напрежение на текущата фаза | V |
| 2 | Ток | Ток на текущата фаза | A |
| 3 | Мощност | Активна мощност | W |
| 4 | Енергия в посока напред | Внесена енергия (консумирана) | kWh |
| 5 | Енергия в обратна посока | Отдадена енергия (връщане в мрежата, соларна) | kWh |
| 6 | Честота | Честота на мрежата | Hz |
| 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]
]
}
Datas е списък, съдържащ три масива, всеки от които съответства на фаза A, B и C.
Всеки вътрешен масив има същата структура като еднофазния масив Data.
| Индекс | Поле | Описание | Мерна единица |
|---|---|---|---|
| 1 | Напрежение | Фазово напрежение | V |
| 2 | Ток | Фазов ток | A |
| 3 | Мощност | Активна мощност | W |
| 4 | Енергия в посока напред | Внесена енергия | kWh |
| 5 | Енергия в обратна посока | Отдадена енергия | kWh |
| 6 | Честота | Честота на мрежата | Hz |
| 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 в kVar) и реактивна енергия (kVARh).
Q (kVar): Реактивна мощност — положителна = индуктивна, отрицателна = капацитивна kVARh: Реактивна енергия — всяка фаза включва две стойности kVARh: една за индуктивен товар и една за капацитивен товар.
5. Пример на Python: Абониране за данни в реално време
По-долу е работещ Python скрипт, използващ библиотеката paho-mqtt.
import paho.mqtt.client as mqtt
import json
# MQTT Broker configuration
MQTT_BROKER = "mqtt.iammeter.com"
MQTT_PORT = 1883
MQTT_USER = "your_mqtt_username" # Set in IAMMETER Cloud → MQTT Settings
MQTT_PASS = "your_mqtt_password"
TOPIC = "device/DA2BED94/realtime" # Replace with your own device SN
# Callback when connected to the broker
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("✅ Connected to IAMMETER MQTT Broker successfully")
client.subscribe(TOPIC)
print(f"📡 Subscribed to topic: {TOPIC}")
else:
print(f"❌ Connection failed with code {rc}")
# Callback when a message is received
def on_message(client, userdata, msg):
payload = json.loads(msg.payload.decode())
print("📊 Received real-time data:")
print(json.dumps(payload, indent=2, ensure_ascii=False))
# Initialize MQTT client
client = mqtt.Client()
client.username_pw_set(MQTT_USER, MQTT_PASS)
client.on_connect = on_connect
client.on_message = on_message
# Connect to the broker and start the loop
client.connect(MQTT_BROKER, MQTT_PORT, 60)
client.loop_forever()
6. Пример на Node.js
Препоръчваме да опитате този интересен проект с отворен код: Той използва Node.js, за да се абонира за данни в реално време от IAMMETER MQTT брокера и да ги визуализира в уеб интерфейс, създавайки готин табло за управление в реално време.
🔗 https://github.com/lewei50/iammeterJS
7. Практически случаи на употреба
- Автоматизация на умния дом Интегрирайте данните за мощността в реално време в Home Assistant или Node-RED, за да задействате автоматизирани действия (например да включите отоплител, когато соларното производство е високо).
- Локална визуализация на данни Съхранявайте постъпващите MQTT данни в InfluxDB и ги визуализирайте с Grafana табла.
- Частен облак или edge computing Извличайте данни за мощността в реално време директно чрез MQTT за персонализирани анализи или логика за управление, без да разчитате на IAMMETER Cloud.
8. Отстраняване на проблеми
| Проблем | Възможна причина / решение |
|---|---|
| Не може да се свърже с брокера | Проверете дали потребителското име/паролата за MQTT са правилно зададени в IAMMETER Cloud. |
| Не се получават данни | Проверете формата на темата (device/{SN}/realtime) и се уверете, че измервателният уред е онлайн. |
| Забавяне на данните | Проверете стабилността на мрежата или силата на Wi-Fi сигнала. |
| Няколко измервателни уреда | Можете да се абонирате за няколко теми едновременно (по една за всеки SN). |
9. Заключение
С IAMMETER MQTT брокера можете лесно да получите достъп до потоци от данни за енергията в реално време от вашите IAMMETER устройства. Това е мощен и гъвкав метод за изграждане на локални табла, умни автоматизации или AI-базирани системи за оптимизация на енергията.
📘 Референции
- Фърмуер и комуникационни функции на IAMMETER
- Документация на IAMMETER Cloud и MQTT API
- Develop your own Energy Monitoring Dashboard using NodeJS
Бихте ли искали да направя версия на публикацията във формат Markdown (готова за публикуване в официалния блог на IAMMETER, със запазено оцветяване на синтаксиса и вградени връзки към изображенията)?
