Trong các hệ thống quản lý năng lượng (EMS) hoặc nhà thông minh, việc giám sát các thông số điện năng như Công suất (W), Dòng điện (A) và Điện áp (V) là vô cùng quan trọng. Đồng hồ điện Acrel ADL200 là thiết bị đo đạc công nghiệp chuẩn xác, sử dụng giao thức Modbus RTU qua cổng RS485.
Bài viết này hướng dẫn quy trình chuyển đổi dữ liệu từ đồng hồ Acrel ADL200 qua cổng giao tiếp RS485 (Modbus RTU), đóng gói thành tin nhắn MQTT JSON bằng IRIV IOC MQTT Gateway, đẩy về Mosquitto MQTT Broker (chạy trên Docker) và kiểm tra hiển thị thời gian thực trên giao diện web lẫn thiết bị di động.
1. TỔNG QUAN KIẾN TRÚC VÀ LUỒNG DỮ LIỆU
Mọi kết nối vận hành hoàn toàn trong mạng nội bộ (Local Network) để đảm bảo tốc độ phản hồi cao và tính bảo mật:
2. PHẦN 1: CẤU HÌNH IRIV IOC GATEWAY (MODBUS RTU TO MQTT)
Bước 1: Cấu hình thông số đường truyền RS485
Vào giao diện quản trị Web Admin của IRIV IOC MQTT Gateway tại địa chỉ 10.0.0.1 (nếu bạn đang kết nối USB trực tiếp tới thiết bị), hoặc truy cập theo địa chỉ IP của thiết bị (sau khi đã cấu hình và bật Config over Ethernet), sau đó vào Modbus RTU — Link Layer và cấu hình như sau:
Baud rate:9600
Parity:None
Stop bits:1
Response timeout: 500
Các thông số còn lại để mặc định.
Bước 2: Khai báo MQTT Broker
Vào mục MQTT Settings trên IRIV IOC để kết nối về Mosquitto Broker đang chạy trên Container Docker. Nếu chưa cài đặt Mosquitto, bạn có thể tham khảo hướng dẫn chính thức tại trang chủ hoặc tham khảo các công cụ hỗ trợ như Gemini/ChatGPT.
Thông số (Field)
Giá trị cài đặt (Value)
Ghi chú (Note)
Enable MQTT
Enabled
Kích hoạt luồng đẩy dữ liệu
Broker Host
172.16.10.40
Địa chỉ IP của Server Docker
Port
1883
Cổng MQTT TCP mặc định
Client ID
iriv_ioc_gateway_01
Định danh duy nhất cho Gateway
Base Topic
iriv/F663
Tiền tố tự động gán vào trước các Job
Clean Session
Enabled
Xóa phiên tồn đọng khi tái kết nối
Bước 3: Lập bảng Modbus Poll Jobs
Vào mục Poll Jobs chọn + Add Job để tạo 3 lệnh đọc thanh ghi số thực 32-bit (Float 32-bit) từ đồng hồ Acrel ADL200:
Job Index
Name
Slave ID
Function Code
Address
Count
Data Type
Byte Order
Scale (Multiplier)
Unit
Target Topic
0
Voltage
1
FC3 Holding
21248
2
f32
ABCD
1(hoặc 0.1 nếu dạng int)
V
iriv/F663/voltage
1
Current
1
FC3 Holding
21250
2
f32
ABCD
1(hoặc 0.01 nếu dạng int)
A
iriv/F663/current
2
Power
1
FC3 Holding
21252
2
f32
ABCD
1(hoặc 0.001 nếu dạng int)
W
iriv/F663/power
Ở đây Cytron đã làm mẫu cho Job lấy thông tin Điện áp (Voltage). Bạn hãy thực hiện cho các trường dữ liệu còn lại.
3. PHẦN 2: KIỂM TRA CẬP NHẬT REAL-TIME TRÊN MQTTX WEB (DOCKER)
MQTTX Web giúp bạn theo dõi chi tiết luồng tin nhắn MQTT mà không cần cài đặt phần mềm nặng trên máy tính.
Truy cập vào giao diện web của MQTTX Web đang chạy trên docker qua cổng 8080 (cổng mặc định).
Nhấp chọn New Connection:
Name:Docker Local Monitor
Host:ws://172.16.10.40 (hoặc http:// tùy cấu hình container MQTTX Web)
Port: 9001 (Cổng WebSocket của Mosquitto Broker, đôi khi có thể là 8083)
Bấm Connect.
Sau khi kết nối thành công bạn sẽ thấy màn hình như thế này:
Bấm + New Subscription để nhận dữ liệu:
Topic:iriv/F663/#(Ký tự # giúp đăng ký nhận toàn bộ các topic con như voltage, current, power).
QoS:0
Kết quả: Màn hình console sẽ xuất hiện liên tục các gói tin JSON chứa giá trị Điện áp (V), Dòng điện (A) và Công suất (W) cập nhật thời gian thực theo đúng chu kỳ đọc của Gateway.
4. PHẦN 3 (BONUS): GIÁM SÁT NHANH BẰNG ỨNG DỤNG IOT MQTT PANEL TRÊN ĐIỆN THOẠI
Ứng dụng IoT MQTT Panel (trên Android / iOS) cho phép dựng một Dashboard di động đơn giản để theo dõi nhanh chỉ sau vài bước thiết lập:
Step 1: Kết nối App với Broker
Tải và mở ứng dụng IoT MQTT Panel.
Bấm dấu + để thêm Broker mới:
Connection Name:Home Energy
Broker Address / IP:172.16.10.40(Đảm bảo điện thoại bắt cùng mạng Wi-Fi nội bộ)
Port:9001
Nhấn Save và bấm vào kết nối vừa tạo.
Step 2: Tạo các thẻ hiển thị (Widgets)
Tạo thẻ hiển thị Điện áp (Text / Gauge Widget):
Widget Type: Chọn Text Log hoặc Gauge.
Panel Name:Voltage
Topic:iriv/F663/voltage
JSON Path:$.value(Ứng dụng sẽ tự trích xuất số liệu trong chuỗi JSON)
Unit:V
Tạo thẻ hiển thị Dòng điện (Text Widget):
Panel Name:Current
Topic:iriv/F663/current
JSON Path:$.value
Unit:A
Tạo thẻ hiển thị Công suất (Gauge Widget):
Panel Name:Active Power
Topic:iriv/F663/power
JSON Path:$.value
Min / Max Value:0 – 5000
Unit:W
Sau khi lưu cấu hình, mở giao diện Dashboard trên điện thoại, bạn sẽ thấy các thông số công suất và điện áp từ đồng hồ Acrel ADL200 tự động nhảy số theo thời gian thực.
TỔNG KẾT VÀ BƯỚC TIẾP THEO
Đến bước này, hệ thống của bạn đã hoàn thành trọn vẹn tầng hạ tầng dữ liệu:
Dữ liệu từ thiết bị đo đạc được chuẩn hóa thành dạng JSON thông qua IRIV IOC Gateway.
Mosquitto Broker lưu trữ và phân phối luồng dữ liệu mượt mà.
Dữ liệu được xác minh tính chính xác thông qua MQTTX Web và ứng dụng di động.
Xen kẽ ở các bài viết tiếp theo:
Phần 2: Tích hợp dữ liệu MQTT vào Grafana (thông qua Telegraf/InfluxDB hoặc TimescaleDB) để vẽ biểu đồ phân tích chuyên sâu và truy xuất lịch sử phụ tải.
Phần 3: Đưa toàn bộ các entity này vào Home Assistant để thực hiện tự động hóa (Automation) và quản lý năng lượng tập trung.