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

Giám sát điện năng Docker MQTT: Thiết lập IAMMETER-Docker nâng cao

Giám sát điện năng qua Docker MQTT và cấu hình nâng cao

Sau khi máy chủ IAMMETER-Docker cơ bản đã chạy, bạn có thể mở rộng nó thành một máy chủ giám sát điện năng MQTT cục bộ, dùng MySQL cho tập dữ liệu lớn hơn, chuyển tiếp dữ liệu điện mặt trời đến PVOutput và tiếp nhận các số đo tương thích từ bên thứ ba.

Hướng dẫn này trình bày các luồng dữ liệu nâng cao và các tùy chọn lưu trữ. Về cài đặt, ổ đĩa lưu trữ lâu dài, đăng nhập lần đầu, thiết lập đồng hồ đo, sao lưu và nâng cấp container, hãy bắt đầu với Giám sát điện năng tự vận hành với Docker.

IAMMETER meter / compatible device / custom application
                         │
             ┌───────────┼───────────┐
             │           │           │
            HTTP        MQTT       REST API
             │           │           │
             └───────────┼───────────┘
                         ▼
                  IAMMETER-Docker
                         │
       ┌─────────────────┼─────────────────┐
       ▼                 ▼                 ▼
 SQLite / MySQL     MQTT subscribers     PVOutput

Chỉ sử dụng những giao diện mà dự án của bạn thực sự cần. Một hệ thống giám sát cục bộ đơn giản không cần MySQL, các MQTT client bên ngoài hay chuyển tiếp dữ liệu.

1. Trước khi bật các tính năng nâng cao

Hãy xác nhận rằng bản cài đặt cơ bản đã ổn định:

  • container IAMMETER-Docker đang chạy;
  • /app/data đã được ánh xạ tới vùng lưu trữ lâu dài;
  • máy chủ Docker dùng một địa chỉ LAN ổn định;
  • múi giờ của site đã đúng;
  • có ít nhất một đồng hồ đo hoặc nguồn dữ liệu thử nghiệm đang hoạt động;
  • mật khẩu mặc định đã được thay đổi;
  • đã có bản sao lưu mới nhất.

Bản triển khai mặc định mở các cổng:

  • 5050 cho ứng dụng web và API;
  • 1883 cho MQTT.

Không công khai trực tiếp bất kỳ cổng nào ra Internet. Khi cần truy cập từ xa, hãy dùng tường lửa, VPN hoặc một lớp kiểm soát truy cập khác.

2. Chọn SQLite hay MySQL

IAMMETER-Docker dùng SQLite cho bản triển khai mặc định đơn giản và hỗ trợ MySQL cho những hệ thống có tập dữ liệu lớn hơn.

Cơ sở dữ liệu Phù hợp nhất với Ưu điểm Lưu ý
SQLite Hộ gia đình, thử nghiệm và các bản triển khai cục bộ nhỏ hơn Không cần dịch vụ cơ sở dữ liệu riêng; dễ thiết lập ban đầu Cơ sở dữ liệu vẫn gắn với ổ đĩa của ứng dụng
MySQL Các hệ thống lớn hơn hoặc chạy lâu dài Có dịch vụ cơ sở dữ liệu riêng và phù hợp hơn khi dữ liệu tăng trưởng Cần triển khai, thông tin đăng nhập, sao lưu và bảo trì cơ sở dữ liệu

Đừng chuyển sang MySQL chỉ vì nó có sẵn. Hãy dùng nó khi khối lượng dữ liệu dự kiến, thời gian lưu trữ hoặc yêu cầu quản trị cơ sở dữ liệu thực sự xứng đáng với việc thêm một dịch vụ.

2.1 Chuẩn bị MySQL trước

Trước khi chọn MySQL trong IAMMETER-Docker:

  1. triển khai một máy chủ MySQL có thể truy cập được;
  2. tạo một cơ sở dữ liệu và người dùng riêng;
  3. giới hạn người dùng đó chỉ trong cơ sở dữ liệu cần thiết;
  4. xác nhận container IAMMETER-Docker có thể truy cập qua mạng;
  5. cấu hình sao lưu cơ sở dữ liệu định kỳ;
  6. ghi lại host, cổng, tên cơ sở dữ liệu và thông tin đăng nhập một cách an toàn.

Sau đó nhập các thiết lập kết nối MySQL trong IAMMETER-Docker và xác nhận rằng các số đo mới đang được lưu.

Cấu hình MySQL trong IAMMETER-Docker

Hãy sao lưu dữ liệu IAMMETER-Docker hiện có trước khi đổi chế độ cơ sở dữ liệu. Kiểm tra lại dữ liệu lịch sử và các dữ liệu tải lên mới sau khi thay đổi.

3. Dùng IAMMETER-Docker làm máy chủ giám sát điện năng MQTT

IAMMETER-Docker hỗ trợ MQTT theo hai hướng khác nhau:

  1. Gửi dữ liệu đến IAMMETER-Docker: đồng hồ đo hoặc ứng dụng tương thích gửi số đo đến máy chủ Docker.
  2. Đăng ký nhận từ IAMMETER-Docker: Node-RED, một dịch vụ tùy chỉnh hoặc một MQTT client khác nhận số đo thời gian thực từ máy chủ.

Hai luồng này dùng cùng một dạng topic nhưng chế độ xác thực khác nhau.

3.1 Topic MQTT

Topic thời gian thực được tài liệu hóa là:

device/<SN>/realtime

Thay <SN> bằng số sê-ri đã được đăng ký trong IAMMETER-Docker. SN trong topic MQTT và trong cấu hình client phải trùng với đồng hồ đo đã tạo trên nền tảng cục bộ.

3.2 Gửi dữ liệu điện năng đến IAMMETER-Docker

Đối với thiết bị hoặc ứng dụng gửi dữ liệu:

Thiết lập Giá trị
Broker Địa chỉ IP hoặc tên máy chủ của máy chủ IAMMETER-Docker
Cổng Mặc định là 1883
Xác thực Client ID
Client ID SN của đồng hồ đo đã đăng ký trong IAMMETER-Docker
Topic device/<SN>/realtime
Payload Định dạng dữ liệu tải lên được IAMMETER hỗ trợ

Gửi dữ liệu điện năng đến IAMMETER-Docker qua MQTT

Trước khi dùng dữ liệu thật:

  1. đăng ký SN trong IAMMETER-Docker;
  2. gửi thử một payload;
  3. kiểm tra các trường điện áp, dòng điện, công suất và điện năng;
  4. xác nhận số pha hoặc số kênh;
  5. kiểm tra đơn vị đo và chiều công suất tác dụng;
  6. chỉ sau đó mới bật gửi dữ liệu liên tục.

3.3 Đăng ký nhận dữ liệu điện năng thời gian thực

Đối với một trình đăng ký nhận MQTT:

Thiết lập Giá trị
Broker Địa chỉ máy chủ IAMMETER-Docker
Cổng Mặc định là 1883
Xác thực Tên người dùng và mật khẩu của IAMMETER-Docker
Topic device/<SN>/realtime

Đăng ký nhận dữ liệu thời gian thực từ IAMMETER-Docker

Các trình đăng ký nhận thường gặp gồm:

  • các luồng tự động hóa Node-RED;
  • một dịch vụ xử lý dữ liệu cục bộ;
  • một MQTT client dùng để gỡ lỗi;
  • một gateway chuyển tiếp các số đo được chọn;
  • một dashboard hoặc dịch vụ cảnh báo tùy chỉnh.

Nếu Node-RED là ứng dụng chính và không cần lưu trữ lịch sử trong IAMMETER-Docker, đồng hồ đo cũng có thể kết nối trực tiếp với Node-RED qua MQTT, Modbus TCP hoặc API cục bộ của nó. Hãy so sánh các phương án trong hướng dẫn đồng hồ đo điện năng Node-RED.

4. Kiểm tra và xử lý sự cố MQTT

Hãy bắt đầu với một đồng hồ đo duy nhất và topic chính xác thay vì đăng ký nhận bằng ký tự đại diện rộng.

Kiểm tra những điểm sau khi không thấy dữ liệu:

  • cổng 1883 đã được ánh xạ ra khỏi container;
  • client có thể kết nối tới máy chủ Docker qua LAN;
  • SN tồn tại trong IAMMETER-Docker;
  • client ID MQTT và topic dùng cùng một SN;
  • topic là device/<SN>/realtime với đúng chữ hoa chữ thường;
  • không nhầm lẫn giữa chế độ xác thực khi gửi và khi đăng ký nhận;
  • payload JSON khớp với thứ tự trường và đơn vị đo được hỗ trợ;
  • một MQTT client khác không ngắt phiên bằng cách dùng trùng client ID.

Để các luồng hoạt động ổn định:

  • dùng một client ID riêng cho mỗi trình đăng ký nhận;
  • xử lý việc kết nối lại và các bản tin trùng lặp;
  • kiểm tra payload trước khi ghi vào cơ sở dữ liệu;
  • ghi lại SN nguồn cùng mỗi số đo được lưu;
  • dùng cách ly mạng thay vì công khai cổng MQTT không mã hóa.

5. Chuyển tiếp dữ liệu điện mặt trời đến PVOutput

PVOutput là dịch vụ của bên thứ ba dùng để chia sẻ và so sánh dữ liệu sản lượng điện mặt trời và mức tiêu thụ điện. IAMMETER-Docker có thể chuyển tiếp dữ liệu của site đến PVOutput.

Hãy dùng tùy chọn này khi IAMMETER-Docker vẫn là máy chủ thu thập cục bộ nhưng cần PVOutput cho việc báo cáo điện mặt trời công khai hoặc ra bên ngoài.

Trước khi bật chuyển tiếp:

  1. tạo hoặc chọn đúng hệ thống PVOutput;
  2. lấy thông tin đăng nhập PVOutput cần thiết;
  3. xác nhận rằng các kênh Grid và Inverter đã được gán đúng trong IAMMETER-Docker;
  4. kiểm tra múi giờ của site;
  5. chỉ bật chuyển tiếp cho site mong muốn;
  6. so sánh tổng sản lượng theo ngày ở cả hai hệ thống sau ngày đầu tiên đầy đủ.

Chuyển tiếp dữ liệu điện mặt trời từ IAMMETER-Docker đến PVOutput

Việc chuyển tiếp đến PVOutput cần máy chủ Docker có kết nối Internet. Việc này tách biệt với giám sát cục bộ: lỗi kết nối PVOutput tạm thời không được khiến đồng hồ đo ngừng tải dữ liệu lên máy chủ cục bộ.

6. Nhận dữ liệu từ thiết bị Tasmota tương thích

IAMMETER-Docker có quy trình MQTT được tài liệu hóa cho một thiết bị có khả năng đo điện chạy Tasmota. Ví dụ gốc sử dụng Sonoff POW R2.

Đây là một luồng tương thích dành cho các payload điện năng được hỗ trợ, không phải khẳng định rằng mọi thiết bị hay template Tasmota đều tạo ra cấu trúc số đo giống nhau. Hãy thử nghiệm trên thiết bị và firmware thực tế trước khi triển khai.

Dùng cấu trúc MQTT Tasmota sau:

Thiết lập Giá trị
Host Địa chỉ IP của IAMMETER-Docker
Cổng Cổng MQTT của IAMMETER-Docker, thường là 1883
Client SN đã đăng ký trong IAMMETER-Docker
User Để trống theo quy trình gửi dữ liệu được tài liệu hóa này
Password Để trống theo quy trình gửi dữ liệu được tài liệu hóa này
Topic SN đã đăng ký trong IAMMETER-Docker
Full Topic device/%topic%/%prefix%/

Cấu hình đồng hồ đo Tasmota tương thích cho IAMMETER-Docker

Sau khi cấu hình, hãy kiểm tra từng giá trị được báo cáo trong IAMMETER-Docker, bao gồm điện áp, dòng điện, công suất tác dụng, điện năng và hệ số công suất khi thiết bị hỗ trợ.

Dữ liệu điện năng Tasmota trong IAMMETER-Docker

7. Dùng REST API của IAMMETER-Docker

IAMMETER-Docker cung cấp tài liệu API tương tác trên máy chủ cục bộ:

http://<docker-host-ip>:5050/docs

REST API có thể được dùng để:

  • tải lên các số đo được hỗ trợ từ một gateway tùy chỉnh;
  • truy vấn dữ liệu cho một dashboard riêng;
  • kết nối một ứng dụng cục bộ với máy chủ tự vận hành;
  • thử payload trước khi tự động hóa một tích hợp.

Hãy giữ quyền truy cập API trong một mạng tin cậy. Nếu một hệ thống bên ngoài cần kết nối từ xa, hãy đặt dịch vụ phía sau một lớp truy cập an toàn phù hợp thay vì công khai cổng ứng dụng mà không có bảo vệ.

Đối với những nhà phát triển muốn xây dựng một bộ thu nhận hoàn chỉnh hoặc một nền tảng tùy chỉnh thay vì dùng IAMMETER-Docker, xem Tự phát triển hệ thống giám sát điện năng của bạn.

8. Kết hợp lưu trữ cục bộ với các dịch vụ đám mây

Tự vận hành không có nghĩa là phải tắt mọi dịch vụ bên ngoài. IAMMETER-Docker có thể là hệ thống lưu trữ chính tại chỗ trong khi dữ liệu được chọn vẫn được chuyển tiếp đi nơi khác.

Kiến trúc Dữ liệu cục bộ Phụ thuộc Internet Phù hợp nhất với
Chỉ cục bộ IAMMETER-Docker Không cần sau khi triển khai Quyền riêng tư, site ngoại tuyến và dashboard trong LAN
Cục bộ + IAMMETER-Cloud IAMMETER-Docker và IAMMETER-Cloud Cần cho việc chuyển tiếp Bản sao cục bộ cùng báo cáo IAMMETER-Cloud và truy cập từ xa
Cục bộ + PVOutput IAMMETER-Docker và PVOutput Cần cho việc chuyển tiếp Người dùng điện mặt trời có dùng PVOutput
Cục bộ + trình đăng ký nhận MQTT IAMMETER-Docker cùng vùng lưu trữ do trình đăng ký nhận quy định Không cần nếu trình đăng ký nhận chạy cục bộ Node-RED, tự động hóa và xử lý tùy chỉnh

Chỉ bật những đích đến phục vụ một mục đích rõ ràng. Càng nhiều đích đến thì càng nhiều thông tin đăng nhập, phụ thuộc mạng và luồng xử lý sự cố.

9. Danh sách kiểm tra triển khai nâng cao

  • Việc thu thập IAMMETER-Docker cơ bản đã ổn định.
  • Dữ liệu lâu dài và các bản sao lưu cơ sở dữ liệu đã được kiểm chứng.
  • MySQL chỉ được dùng khi chi phí vận hành của nó là hợp lý.
  • Cổng MQTT 1883 chỉ có thể truy cập từ các mạng tin cậy.
  • Mỗi MQTT client dùng một client ID phù hợp và riêng biệt.
  • SN của đồng hồ đo, topic và thiết bị đã đăng ký khớp nhau.
  • Đơn vị đo của payload, số pha và chiều công suất đã được kiểm tra.
  • Lỗi chuyển tiếp đến PVOutput hoặc đám mây không làm gián đoạn việc thu thập cục bộ.
  • Khả năng tương thích Tasmota đã được xác nhận với thiết bị và firmware thực tế.
  • Các thay đổi được thử trên một đồng hồ đo trước khi áp dụng cho hệ thống lớn hơn.

10. Lịch sử phiên bản và ghi chú cũ

Các mục ở trên mô tả những quy trình IAMMETER-Docker hiện được tài liệu hóa. Trang gốc được viết vào khoảng V1.8 và V1.9; phần lịch sử dưới đây được giữ lại cho những người dùng đang duy trì các bản cài đặt cũ.

V2.4

V2.3

  • Sửa lỗi tải dữ liệu lên PVOutput.

V2.2

  • Thêm log cho các lỗi chuyển tiếp đến IAMMETER-Cloud.

V2.1

V1.9

  • Thêm hỗ trợ MySQL.
  • Thêm tùy chọn ảnh tùy chỉnh cho mỗi Place.

IAMMETER-Docker V1.9

V1.8

  • Thêm tính năng tải dữ liệu lên IAMMETER-Docker qua MQTT.
  • Thêm tính năng đăng ký nhận dữ liệu thời gian thực qua MQTT.
  • Thêm tính năng chuyển tiếp trực tiếp đến PVOutput.
  • Thêm quy trình đo điện Tasmota/Sonoff được tài liệu hóa.

11. Tài nguyên liên quan

Cập nhật lần cuối: 17 tháng 7, 2026.

Lên đầu