Извините, ваш браузер не поддерживает JavaScript!
Войти

Подписка на данные об энергии в реальном времени через 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Скриншот настроек MQTT
Формат топика device/{SN}/realtime
Формат полезной нагрузки JSON

⚠️ Важно: Не используйте здесь учетные данные для входа в IAMMETER Cloud. Вам необходимо создать отдельное имя пользователя и пароль MQTT в панели управления IAMMETER Cloud.

Настройка счетчика IAMMETER для использования режима MQTT

Установите ваш счетчик IAMMETER в режим загрузки MQTT (см. руководство по настройке прошивки) и введите параметры 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. Практические примеры использования

  1. Автоматизация умного дома Интегрируйте данные о мощности в реальном времени в Home Assistant или Node-RED для запуска действий автоматизации (например, включение обогревателя при высокой солнечной генерации).
  2. Локальная визуализация данных Сохраняйте входящие MQTT данные в InfluxDB и визуализируйте их с помощью панелей Grafana.
  3. Частное облако или граничные вычисления Получайте данные о мощности в реальном времени напрямую через MQTT для пользовательской аналитики или логики управления без зависимости от IAMMETER Cloud.

8. Устранение неполадок

Проблема Возможная причина / Решение
Не удается подключиться к брокеру Проверьте, правильно ли установлены имя пользователя и пароль MQTT в IAMMETER Cloud.
Данные не поступают Проверьте формат вашего топика (device/{SN}/realtime) и убедитесь, что счетчик онлайн.
Задержка данных Проверьте стабильность вашей сети или уровень сигнала Wi-Fi.
Несколько счетчиков Вы можете подписаться на несколько топиков одновременно (по одному на каждый SN).

9. Заключение

Используя MQTT Брокер IAMMETER, вы можете легко получать потоки данных об энергии в реальном времени с ваших устройств IAMMETER. Это мощный и гибкий метод для создания локальных информационных панелей, умной автоматизации или систем оптимизации энергии на основе ИИ.


📘 Ссылки


Хотите, чтобы я сделал версию в формате Markdown для блога (готовую к публикации в официальном блоге IAMMETER, с подсветкой синтаксиса и встроенными ссылками на изображения)?

Наверх