Xin lỗi, trình duyệt của bạn không hỗ trợ JavaScript!
Đăng nhập

Đăng ký dữ liệu năng lượng thời gian thực qua MQTT Broker (Bản 2025)

1. Giới thiệu

IAMMETER-Cloud là một nền tảng chuyên nghiệp về giám sát năng lượng và quản lý điện mặt trời. Ngoài các chức năng trực quan hóa và báo cáo mạnh mẽ, IAMMETER-Cloud còn cung cấp các giao diện dữ liệu linh hoạt. Điều này cho phép những người dùng có yêu cầu tùy chỉnh sử dụng IAMMETER-Cloud như một middleware dữ liệu, truy xuất dữ liệu bằng lập trình thông qua code.

Có hai cách chính để lấy dữ liệu từ IAMMETER-Cloud bằng code:

  • Đăng ký nhận dữ liệu qua MQTT Broker của IAMMETER (trọng tâm của bài viết này)
  • Gọi API chính thức của IAMMETER-Cloud

Hướng dẫn này giải thích cách đăng ký các topic MQTT của IAMMETER, cách đọc hiểu cấu trúc dữ liệu (cho cả đồng hồ một pha và ba pha), và cách triển khai ví dụ hoạt động bằng Python và Node.js.


2. Tổng quan về IAMMETER MQTT Broker

Lưu ý: IAMMETER MQTT Broker ban đầu được thiết kế như một dịch vụ phát triển và thử nghiệm nhằm mang lại sự tiện lợi, và không thuộc gói dịch vụ IAMMETER-Cloud tiêu chuẩn (mặc dù dịch vụ này đã hoạt động ổn định hơn 5 năm). Đối với các triển khai production hoặc quy mô lớn, chúng tôi khuyến nghị bạn tự thiết lập MQTT broker riêng.

Cấu hình IAMMETER MQTT Broker

Tham số Mô tả
Địa chỉ broker mqtt.iammeter.com
Cổng 1883 (không SSL)
Tên đăng nhập / Mật khẩu Phải được tạo trong IAMMETER Cloud → Settings → MQTT SettingsẢnh chụp màn hình MQTT Settings
Định dạng topic device/{SN}/realtime
Định dạng payload JSON

⚠️ Quan trọng: Không sử dụng thông tin đăng nhập IAMMETER Cloud của bạn ở đây. Bạn cần tạo một tên đăng nhập và mật khẩu MQTT riêng trong bảng điều khiển IAMMETER Cloud.

Cấu hình đồng hồ IAMMETER sang chế độ MQTT

Đặt đồng hồ IAMMETER của bạn sang chế độ upload MQTT (xem hướng dẫn cấu hình firmware) và nhập các tham số của IAMMETER MQTT Broker.

Đặt đồng hồ sang chế độ upload MQTT và cấu hình tham số IAMMETER MQTT Broker


3. Định dạng topic MQTT

Mỗi thiết bị IAMMETER công bố dữ liệu thời gian thực của mình dưới topic sau:

device/{SN}/realtime

Trong đó {SN} là số serial của đồng hồ. Ví dụ, nếu SN thiết bị của bạn là DA2BED94, topic sẽ là:

device/DA2BED94/realtime

Bạn có thể đăng ký topic này để nhận dữ liệu đo liên tục theo thời gian thực.


4. Định dạng dữ liệu

4.1 Định dạng dữ liệu của đồng hồ một pha

Đồng hồ IAMMETER một pha công bố dữ liệu thời gian thực ở định dạng JSON như sau:

{
  "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]
}
Chỉ số Trường Mô tả Đơn vị
1 Điện áp Điện áp đường dây hiện tại V
2 Dòng điện Dòng điện đường dây hiện tại A
3 Công suất Công suất tác dụng W
4 Điện năng thuận Điện năng nhập (tiêu thụ) kWh
5 Điện năng nghịch Điện năng phát lên lưới (feed-in, điện mặt trời) kWh
6 Tần số Tần số lưới điện Hz
7 Hệ số công suất Hệ số công suất hiện tại PF

🟢 Ghi chú:

  • Công suất dương → tiêu thụ điện năng
  • Công suất âm → phát điện lên lưới (ví dụ: điện mặt trời feed-in)

4.2 Định dạng dữ liệu của đồng hồ ba pha (WEM3080T / WEM3046T / WEM3050T)

Đồng hồ IAMMETER ba pha công bố dữ liệu ở định dạng JSON tương tự, với ba mảng tương ứng với từng pha.

{
  "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 là một danh sách chứa ba mảng, mỗi mảng tương ứng với pha A, B và C. Mỗi mảng con có cùng cấu trúc như mảng Data của đồng hồ một pha.

Chỉ số Trường Mô tả Đơn vị
1 Điện áp Điện áp pha V
2 Dòng điện Dòng điện pha A
3 Công suất Công suất tác dụng W
4 Điện năng thuận Điện năng nhập kWh
5 Điện năng nghịch Điện năng phát lên lưới kWh
6 Tần số Tần số lưới điện Hz
7 Hệ số công suất Hệ số công suất pha PF

Ngoài dữ liệu công suất tác dụng, khi đo công suất phản kháng được bật, bạn cũng sẽ thấy phần EA như sau:

"EA": {
  "Reactive": [
    [-111.0, 0.000, 176.750],
    [-113.0, 0.000, 179.110],
    [-114.0, 36.120, 144.410]
  ]
}

Phần này hiển thị dữ liệu đo phản kháng, chỉ xuất hiện khi chức năng thử nghiệm phản kháng được bật (xem ảnh chụp màn hình bên dưới).

Bật đo phản kháng trong đồng hồ

Mỗi mảng đại diện cho ba pha (A, B, C), hiển thị công suất phản kháng (Q tính bằng kVar) và điện năng phản kháng (kVARh).

Q (kVar): Công suất phản kháng — dương = cảm kháng, âm = dung kháng kVARh: Điện năng phản kháng — mỗi pha bao gồm hai giá trị kVARh: một cho tải cảm kháng và một cho tải dung kháng.


5. Ví dụ Python: Đăng ký nhận dữ liệu thời gian thực

Dưới đây là một script Python hoạt động được sử dụng thư viện 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. Ví dụ Node.js

Chúng tôi khuyến nghị bạn thử dự án mã nguồn mở thú vị này: Dự án sử dụng Node.js để đăng ký nhận dữ liệu thời gian thực từ MQTT broker của IAMMETER và trực quan hóa dữ liệu đó trên một web UI, tạo ra một dashboard thời gian thực rất ấn tượng.

🔗 https://github.com/lewei50/iammeterJS


7. Các trường hợp sử dụng thực tế

  1. Tự động hóa nhà thông minh Tích hợp dữ liệu công suất thời gian thực vào Home Assistant hoặc Node-RED để kích hoạt các hành động tự động (ví dụ: bật máy sưởi khi sản lượng điện mặt trời cao).
  2. Trực quan hóa dữ liệu cục bộ Lưu dữ liệu MQTT nhận được vào InfluxDB và trực quan hóa bằng dashboard Grafana.
  3. Cloud riêng hoặc điện toán biên (Edge Computing) Truy xuất dữ liệu công suất thời gian thực trực tiếp qua MQTT cho các phân tích tùy chỉnh hoặc logic điều khiển mà không phụ thuộc vào IAMMETER Cloud.

8. Khắc phục sự cố

Vấn đề Nguyên nhân / Cách khắc phục có thể
Không kết nối được broker Kiểm tra xem tên đăng nhập/mật khẩu MQTT của bạn đã được đặt đúng trong IAMMETER Cloud chưa.
Không nhận được dữ liệu Xác minh định dạng topic của bạn (device/{SN}/realtime) và đảm bảo đồng hồ đang online.
Dữ liệu bị trễ Kiểm tra độ ổn định của mạng hoặc cường độ tín hiệu Wi-Fi.
Nhiều đồng hồ Bạn có thể đăng ký nhiều topic cùng lúc (mỗi SN một topic).

9. Kết luận

Sử dụng IAMMETER MQTT Broker, bạn có thể dễ dàng truy cập các luồng dữ liệu năng lượng thời gian thực từ các thiết bị IAMMETER của mình. Đây là một phương pháp mạnh mẽ và linh hoạt để xây dựng dashboard cục bộ, tự động hóa thông minh, hoặc các hệ thống tối ưu năng lượng dựa trên AI.


📘 Tài liệu tham khảo


Bạn có muốn tôi tạo một phiên bản bài blog định dạng Markdown (sẵn sàng để đăng trên blog chính thức của IAMMETER, với phần tô sáng cú pháp và các liên kết ảnh nhúng được giữ nguyên) không?

Lên đầu