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

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: Подписка на данные в реальном времени
Ниже приведен работающий скрипт на 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 Cloud → Настройки MQTT
MQTT_PASS = "your_mqtt_password"
TOPIC = "device/DA2BED94/realtime" # Замените на SN вашего устройства
# Callback при подключении к брокеру
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("✅ Успешно подключено к MQTT Брокеру IAMMETER")
client.subscribe(TOPIC)
print(f"📡 Подписано на топик: {TOPIC}")
else:
print(f"❌ Ошибка подключения с кодом {rc}")
# Callback при получении сообщения
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 для подписки на данные в реальном времени с MQTT брокера IAMMETER и визуализации их в веб-интерфейсе, создавая эффектную информационную панель в реальном времени.
🔗 https://github.com/lewei50/iammeterJS
7. Практические примеры использования
- Автоматизация умного дома Интегрируйте данные о мощности в реальном времени в Home Assistant или Node-RED для запуска действий автоматизации (например, включение обогревателя при высокой солнечной генерации).
- Локальная визуализация данных Сохраняйте входящие MQTT данные в InfluxDB и визуализируйте их с помощью панелей Grafana.
- Частное облако или граничные вычисления Получайте данные о мощности в реальном времени напрямую через MQTT для пользовательской аналитики или логики управления без зависимости от IAMMETER Cloud.
8. Устранение неполадок
| Проблема | Возможная причина / Решение |
|---|---|
| Не удается подключиться к брокеру | Проверьте, правильно ли установлены имя пользователя и пароль MQTT в IAMMETER Cloud. |
| Данные не поступают | Проверьте формат вашего топика (device/{SN}/realtime) и убедитесь, что счетчик онлайн. |
| Задержка данных | Проверьте стабильность вашей сети или уровень сигнала Wi-Fi. |
| Несколько счетчиков | Вы можете подписаться на несколько топиков одновременно (по одному на каждый SN). |
9. Заключение
Используя MQTT Брокер IAMMETER, вы можете легко получать потоки данных об энергии в реальном времени с ваших устройств IAMMETER. Это мощный и гибкий метод для создания локальных информационных панелей, умной автоматизации или систем оптимизации энергии на основе ИИ.
📘 Ссылки
- Возможности прошивки и связи IAMMETER
- Документация по API IAMMETER Cloud и MQTT
- Разработайте свою собственную панель мониторинга энергопотребления с помощью NodeJS
Хотите, чтобы я сделал версию в формате Markdown для блога (готовую к публикации в официальном блоге IAMMETER, с подсветкой синтаксиса и встроенными ссылками на изображения)?
