Съжаляваме, вашият браузър не поддържа JavaScript!
Вход

Абониране за данни за енергия в реално време чрез 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 SettingsMQTT Settings Screenshot
Формат на темата device/{SN}/realtime
Формат на полезния товар JSON

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

Конфигуриране на IAMMETER измервателен уред в MQTT режим

Настройте вашия IAMMETER измервателен уред в режим MQTT upload mode (вижте ръководството за конфигуриране на фърмуера) и въведете параметрите на IAMMETER MQTT брокера.

Set meter to MQTT upload mode and configure IAMMETER MQTT Broker parameters


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]
  ]
}

Тази секция показва данни от реактивните измервания, които се появяват само когато е активирана функцията за реактивно тестване (вижте екранната снимка по-долу).

Enable reactive measurement in the meter

Всеки масив представлява трите фази (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. Практически случаи на употреба

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

8. Отстраняване на проблеми

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

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

С IAMMETER MQTT брокера можете лесно да получите достъп до потоци от данни за енергията в реално време от вашите IAMMETER устройства. Това е мощен и гъвкав метод за изграждане на локални табла, умни автоматизации или AI-базирани системи за оптимизация на енергията.


📘 Референции


Бихте ли искали да направя версия на публикацията във формат Markdown (готова за публикуване в официалния блог на IAMMETER, със запазено оцветяване на синтаксиса и вградени връзки към изображенията)?

Нагоре