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

Giám sát năng lượng tự triển khai (self-hosted) với Docker

Giám sát năng lượng tự triển khai (self-hosted) với Docker

Hệ thống giám sát năng lượng tự triển khai cho phép bạn giữ máy chủ giám sát và dữ liệu điện năng trong tầm kiểm soát của mình. Thay vì gửi mọi chỉ số lên cloud công cộng, công tơ điện sẽ tải dữ liệu đến một container Docker chạy trên máy chủ cục bộ, NAS, Raspberry Pi hoặc router tương thích.

IAMMETER-Docker cung cấp máy chủ giám sát năng lượng cục bộ sẵn sàng hoạt động cho hệ thống tiêu thụ điện và điện mặt trời (PV). Máy chủ này có thể thu thập dữ liệu đo, hiển thị dữ liệu thời gian thực và dữ liệu lịch sử, cung cấp API và tùy chọn hoạt động như một datalogger ngoại tuyến.

IAMMETER energy meter
        │
        │ Wi-Fi / local network
        ▼
IAMMETER-Docker
        │
        ├── Local web dashboard
        ├── Historical energy data
        ├── REST API
        ├── MQTT
        ├── CSV datalogger
        └── Optional forwarding

IAMMETER-Docker là một lựa chọn tự triển khai thiết thực, nhưng nó không tái tạo đầy đủ mọi tính năng và báo cáo của IAMMETER-Cloud. Nếu bạn vẫn đang cân nhắc kiến trúc, hãy so sánh các phương án trên trang giải pháp giám sát năng lượng tự triển khai.

🎬 Xem video hướng dẫn IAMMETER-Docker

1. Khi nào nên dùng hệ thống giám sát năng lượng tự triển khai?

IAMMETER-Docker phù hợp khi bạn muốn:

  • giữ dữ liệu năng lượng trên máy chủ do bạn quản lý;
  • giám sát điện năng trong mạng LAN mà không phụ thuộc vào kết nối Internet;
  • triển khai bảng điều khiển giám sát điện mặt trời cục bộ;
  • thu thập dữ liệu tại một địa điểm từ xa bằng datalogger ngoại tuyến;
  • truy cập dữ liệu đo qua REST API cục bộ hoặc MQTT;
  • chuyển tiếp dữ liệu chọn lọc sang một nền tảng khác;
  • xây dựng bảng điều khiển riêng hoặc tích hợp xung quanh dữ liệu năng lượng đã lưu trữ.

Các trường hợp lắp đặt điển hình gồm:

  • giám sát điện năng sinh hoạt và điện mặt trời (PV) tại hộ gia đình;
  • xưởng sản xuất, văn phòng và cơ sở thương mại nhỏ;
  • hệ thống điện mặt trời từ xa và phòng thiết bị;
  • môi trường phát triển và kiểm thử;
  • các dự án yêu cầu đường truyền dữ liệu cục bộ.

Nếu bạn chỉ cần đọc trực tiếp chỉ số từ công tơ cho Home Assistant, Node-RED, PLC hoặc phần mềm tùy chỉnh, việc triển khai một máy chủ đầy đủ có thể là không cần thiết. Hãy xem các phương án tích hợp cục bộ và tự triển khai trước khi lựa chọn.

2. Những gì bạn cần

Trước khi triển khai, hãy chuẩn bị:

  • một thiết bị có thể chạy Docker, chẳng hạn máy chủ Linux, NAS, Raspberry Pi hoặc router tương thích;
  • bộ nhớ lưu trữ lâu dài cho cơ sở dữ liệu của ứng dụng;
  • cổng TCP 5050 khả dụng cho ứng dụng web và API;
  • cổng TCP 1883 nếu sử dụng dịch vụ MQTT tích hợp;
  • địa chỉ IP cố định hoặc đặt trước DHCP cho máy chủ Docker;
  • một công tơ điện IAMMETER, hoặc nguồn dữ liệu khác có thể gửi theo định dạng API được hỗ trợ.

Máy chủ Docker và công tơ phải có thể kết nối với nhau qua mạng cục bộ. Với chế độ hoạt động ngoại tuyến, không cần kết nối Internet sau khi đã cài đặt image và các phần mềm cần thiết.

3. Triển khai IAMMETER-Docker

Bản phát hành hiện tại trên Docker Hub là IAMMETER-Docker V2.4.

3.1 Phương án A: Docker run

Tạo thư mục làm việc và chạy container với bộ nhớ lưu trữ lâu dài:

docker run -d \
  --name myiammeter \
  --restart always \
  -p 5050:5050 \
  -p 1883:1883 \
  -e TZ=Etc/UTC \
  -v "$PWD/data:/app/data" \
  iammeter/iammeter

Hãy đổi TZ=Etc/UTC thành múi giờ chính xác của địa điểm giám sát. Báo cáo năng lượng phụ thuộc vào ngày và giờ địa phương, vì vậy hãy thiết lập điều này trước khi thu thập dữ liệu thực tế.

3.2 Phương án B: Docker Compose

Tạo tệp compose.yaml:

services:
  iammeter:
    image: iammeter/iammeter
    container_name: myiammeter
    restart: always
    ports:
      - "5050:5050"
      - "1883:1883"
    environment:
      TZ: Etc/UTC
    volumes:
      - ./data:/app/data

Khởi động dịch vụ:

docker compose up -d

Kiểm tra trạng thái:

docker compose ps
docker compose logs --tail=100 iammeter

3.3 Mở bảng điều khiển cục bộ

Mở địa chỉ sau từ trình duyệt trên cùng mạng:

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

Thông tin đăng nhập mặc định:

Username: testuser
Password: 123456

Hãy đổi mật khẩu mặc định ngay lập tức. Không mở trực tiếp cổng 5050 hoặc 1883 ra Internet công cộng nếu không có tường lửa phù hợp, xác thực và thiết kế mạng an toàn.

Đăng nhập IAMMETER-Docker

4. Cấu hình ban đầu

Sau khi đăng nhập:

  1. Tạo một Địa điểm cho hộ gia đình, hệ thống điện mặt trời hoặc cơ sở được giám sát.
  2. Thêm một Công tơ.
  3. Nhập số sê-ri (SN) của công tơ.
  4. Chọn đúng loại công tơ một pha hoặc ba pha.
  5. Gán mỗi pha hoặc kênh là Lưới, Inverter hoặc Phụ tải.
  6. Xác nhận múi giờ của địa điểm và cấu trúc đo trước khi đánh giá báo cáo.

Cấu hình công tơ trong IAMMETER-Docker

Việc gán kênh chính xác đặc biệt quan trọng với giám sát điện mặt trời. Hệ thống cần biết phép đo nào đại diện cho lưới, inverter hay phụ tải trước khi có thể hiển thị kết quả dòng năng lượng có ý nghĩa.

5. Kết nối công tơ điện IAMMETER

Công tơ IAMMETER có thể tải dữ liệu trực tiếp lên máy chủ Docker cục bộ.

Trong WebUI của công tơ, hãy cấu hình tải lên HTTP của bên thứ ba và dùng địa chỉ máy chủ Docker:

<docker-host-ip>:5050/api/v1/sensor/uploadsensor

IP của máy chủ Docker phải truy cập được từ mạng Wi-Fi của công tơ. Hãy dùng đúng SN của công tơ đã được thêm vào IAMMETER-Docker.

Cấu hình tải lên HTTP tới IAMMETER-Docker

Sau khi lưu cấu hình công tơ:

  1. chờ lần tải lên đầu tiên;
  2. xác nhận công tơ hiển thị trực tuyến trong IAMMETER-Docker;
  3. so sánh giá trị điện áp, công suất và điện năng với dữ liệu cục bộ của công tơ;
  4. kiểm tra hướng và việc gán kênh trước khi tin tưởng các tính toán về điện mặt trời hoặc nhập/xuất điện.

Dùng đồng thời IAMMETER-Cloud

IAMMETER-Docker có thể tùy chọn chuyển tiếp dữ liệu công tơ tới IAMMETER-Cloud. Chỉ bật chuyển tiếp khi bạn muốn có cả lưu trữ cục bộ và các dịch vụ của IAMMETER-Cloud.

Chuyển tiếp dữ liệu cục bộ tới IAMMETER-Cloud

Với một hệ thống ngoại tuyến hoặc độc lập với cloud, hãy để tính năng chuyển tiếp lên cloud ở trạng thái tắt.

6. Tải dữ liệu từ thiết bị hoặc ứng dụng khác

IAMMETER-Docker cũng có thể nhận dữ liệu năng lượng được hỗ trợ thông qua REST API. Điều này hữu ích cho các trình mô phỏng, gateway hoặc ứng dụng của khách hàng không dùng công tơ IAMMETER.

Hãy tạo một công tơ với SN tùy chỉnh, sau đó dùng chính SN đó trong mỗi yêu cầu API.

Tài liệu API tương tác có sẵn trên máy chủ cục bộ:

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

Tài liệu API của IAMMETER-Docker

Thử một yêu cầu API IAMMETER-Docker

Hãy thử nghiệm API trên một công tơ không dùng cho vận hành thật trước. Giữ SN, số pha, thứ tự trường và đơn vị nhất quán để dữ liệu lịch sử vẫn sử dụng được.

7. Chạy datalogger năng lượng ngoại tuyến

IAMMETER-Docker V2.4 có thể lưu dữ liệu ra CSV khi thư mục datalogger được gắn (mount). Điều này hữu ích cho một hệ thống điện mặt trời từ xa, nhà máy hoặc phòng thiết bị không có kết nối Internet ổn định.

Docker run với bộ nhớ datalogger

docker run -d \
  --name myiammeter \
  --restart always \
  -p 5050:5050 \
  -p 1883:1883 \
  -e TZ=Etc/UTC \
  -v "$PWD/data:/app/data" \
  -v "$PWD/datalogger:/app/datalogger" \
  iammeter/iammeter

Với Docker Compose, hãy thêm volume này:

volumes:
  - ./data:/app/data
  - ./datalogger:/app/datalogger

Mở trang datalogger tại:

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

Trang datalogger ban đầu dùng:

Username: admin
Password: admin

Hãy đổi mật khẩu này trong quá trình triển khai. Để biết quy trình đầy đủ trên router và xuất CSV, xem Datalogger năng lượng ngoại tuyến với IAMMETER-Docker.

8. MQTT và các tính năng nâng cao khác

Cổng 1883 được dùng bởi dịch vụ MQTT của IAMMETER-Docker. Một công tơ hoặc ứng dụng khác có thể gửi dữ liệu đo được hỗ trợ tới IAMMETER-Docker, và các MQTT client có thể đăng ký nhận giá trị thời gian thực.

IAMMETER-Docker cũng hỗ trợ các tính năng như:

  • dùng MySQL thay cho cơ sở dữ liệu cục bộ mặc định với tập dữ liệu lớn hơn;
  • gửi và đăng ký MQTT;
  • chuyển tiếp PVOutput;
  • dữ liệu năng lượng Tasmota tương thích;
  • cảnh báo thời gian thực và kịch bản datalogger một giây.

Những tính năng này được cố ý tách khỏi quy trình triển khai cơ bản. Hãy cấu hình và kiểm thử container cốt lõi trước, sau đó tiếp tục với hướng dẫn nâng cao về IAMMETER-Docker.

9. Sao lưu dữ liệu năng lượng

Volume /app/data chứa dữ liệu ứng dụng lâu dài. Hãy sao lưu thư mục tương ứng trên máy chủ một cách thường xuyên.

Một quy trình cơ bản an toàn gồm:

  1. dừng hoặc tạm dừng ghi vào container;
  2. sao chép toàn bộ thư mục data đã được gắn sang bộ nhớ sao lưu;
  3. bao gồm cả thư mục datalogger khi tính năng ghi log CSV được bật;
  4. giữ nhiều hơn một bản sao lưu;
  5. kiểm thử khôi phục trên một container riêng trước khi phụ thuộc vào kế hoạch sao lưu.

Đừng coi hệ thống tệp của container là bộ nhớ vĩnh viễn. Nếu /app/data không được gắn, việc xóa container có thể xóa luôn cơ sở dữ liệu giám sát.

10. Nâng cấp IAMMETER-Docker

Trước khi nâng cấp, hãy sao lưu thư mục dữ liệu lâu dài.

Với Docker Compose:

docker compose pull
docker compose up -d
docker compose logs --tail=100 iammeter

Với container được tạo bằng docker run:

  1. ghi lại các cổng, múi giờ và volume đang dùng;
  2. kéo image mới;
  3. dừng và xóa container cũ;
  4. tạo lại container với đúng volume lưu trữ lâu dài;
  5. kiểm tra đăng nhập, trạng thái công tơ và dữ liệu lịch sử.
docker pull iammeter/iammeter
docker stop myiammeter
docker rm myiammeter

Sau đó lặp lại lệnh docker run ban đầu. Việc xóa container chỉ an toàn khi dữ liệu ứng dụng đã được lưu trong một thư mục trên máy chủ được gắn đúng và đã sao lưu.

11. Xử lý sự cố

Trang web không mở được

  • Xác nhận container đang chạy bằng docker ps hoặc docker compose ps.
  • Kiểm tra xem cổng 5050 trên máy chủ có đang bị chiếm dụng không.
  • Xem log của container.
  • Xác nhận tường lửa cho phép truy cập từ mạng cục bộ.

Công tơ không hiển thị trực tuyến

  • Xác nhận công tơ có thể kết nối tới IP của máy chủ Docker.
  • Kiểm tra URL và cổng tải lên.
  • Xác nhận SN trong IAMMETER-Docker trùng với SN của công tơ.
  • Tránh dùng localhost làm địa chỉ máy chủ trong công tơ; nó trỏ tới chính công tơ chứ không phải máy chủ Docker.
  • Xác nhận tính năng cách ly client hoặc mạng Wi-Fi dành cho khách không chặn lưu lượng trong LAN.

Dữ liệu điện mặt trời có vẻ không đúng

  • Kiểm tra hướng và cách đấu dây của CT.
  • Xác nhận kênh nào được gán cho Lưới và kênh nào được gán cho Inverter.
  • Kiểm tra dấu của công suất tác dụng khi nhập và xuất điện.
  • Xác nhận múi giờ trước khi so sánh tổng điện năng theo ngày.

Dữ liệu biến mất sau khi tạo lại container

  • Xác nhận /app/data đã được gắn vào một thư mục lâu dài trên máy chủ.
  • Kiểm tra quyền của thư mục.
  • Khôi phục bản sao lưu đã kiểm chứng gần nhất nếu volume gốc không còn khả dụng.

12. IAMMETER-Docker, IAMMETER-Cloud hay hệ thống tùy chỉnh?

Phương án Phù hợp nhất với Vị trí dữ liệu Công sức thiết lập Đánh đổi chính
IAMMETER-Docker Máy chủ giám sát cục bộ làm sẵn Máy chủ Docker của bạn Thấp đến trung bình Ít tính năng cloud được quản lý hơn
IAMMETER-Cloud Giám sát, báo cáo và truy cập từ xa làm sẵn IAMMETER-Cloud Thấp Dùng dịch vụ cloud được lưu trữ sẵn
Home Assistant / Node-RED Thực thể nhà thông minh và tự động hóa tùy chỉnh Nền tảng của riêng bạn Trung bình Bạn tự thiết kế bảng điều khiển và luồng công việc
Máy chủ tùy chỉnh Sản phẩm, EMS hoặc đường ống dữ liệu chuyên biệt Hạ tầng của bạn Cao Bạn tự phát triển và bảo trì hệ thống

Tiếp tục với:

13. Danh sách kiểm tra triển khai

  • Máy chủ Docker có địa chỉ LAN cố định.
  • /app/data được gắn vào bộ nhớ lưu trữ lâu dài.
  • Múi giờ khớp với địa điểm giám sát.
  • Mật khẩu mặc định đã được thay đổi.
  • Các cổng 5050 và 1883 không bị mở ra Internet một cách không cần thiết.
  • SN của công tơ và việc gán kênh là chính xác.
  • Tải lên cục bộ đã được kiểm chứng bằng dữ liệu đo trực tiếp.
  • Chuyển tiếp lên cloud chỉ được bật khi cần thiết.
  • Quy trình sao lưu và nâng cấp đã được kiểm thử.
  • Volume datalogger đã được gắn nếu cần xuất CSV.

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

Lên đầu