Đồng hồ đo điện năng MQTT cho Home Assistant: Thiết lập YAML thủ công
Cấu hình thủ công đồng hồ đo điện năng MQTT trong Home Assistant
Một đồng hồ đo điện năng MQTT có thể công bố điện áp, dòng điện, công suất tác dụng và điện năng đã tiêu thụ/đã phát lên một broker trong mạng nội bộ của bạn. Home Assistant đăng ký dữ liệu đó và chuyển các giá trị JSON thành các thực thể cảm biến (sensor entity) có thể dùng trong dashboard, automation và Energy Dashboard.
Hướng dẫn này giải thích phương pháp MQTT thủ công cho các đồng hồ đo điện năng IAMMETER:
- cấu hình MQTT broker trong WebUI của đồng hồ;
- kết nối Home Assistant với cùng broker đó;
- khai báo các cảm biến MQTT cần thiết trong YAML;
- thêm điện năng đã tiêu thụ và đã phát vào Energy Dashboard.
MQTT thủ công cho bạn toàn quyền kiểm soát tên thực thể, topic, template và metadata. Nếu bạn muốn Home Assistant tự động tạo thiết bị và thực thể, hãy dùng MQTT Discovery thay thế.
MQTT thủ công và MQTT Discovery là hai phương pháp khác nhau
Cả hai phương pháp đều dùng MQTT broker, nhưng cách thiết lập trong Home Assistant thì khác nhau.
| Tính năng | MQTT thủ công | MQTT Discovery |
|---|---|---|
| Cấu hình broker phía đồng hồ | Bắt buộc | Bắt buộc |
| Tích hợp MQTT trong HA | Bắt buộc | Bắt buộc |
| Khai báo cảm biến bằng YAML | Bắt buộc | Không bắt buộc |
| Tên thực thể và template | Do người dùng kiểm soát hoàn toàn | Do đồng hồ tạo |
| Tự động tạo thiết bị/thực thể | Không | Có |
| Phù hợp nhất với | Hệ thống MQTT tùy chỉnh và định nghĩa thực thể riêng | Thiết lập Home Assistant nhanh nhất |
Trong hướng dẫn này, hãy để HA MQTT Discovery ở trạng thái tắt trong WebUI của đồng hồ. Công tắc đó chỉ cần thiết khi bạn muốn Home Assistant tự động phát hiện thiết bị.
Những gì bạn cần
- một đồng hồ đo điện năng IAMMETER với firmware hiện hành;
- một MQTT broker mà cả đồng hồ và Home Assistant đều truy cập được;
- địa chỉ, cổng, tên người dùng và mật khẩu của broker;
- số sê-ri của đồng hồ;
- quyền truy cập vào cấu hình YAML của Home Assistant.
Broker có thể chạy trên cùng máy với Home Assistant, trong add-on Mosquitto broker, trên một máy chủ LAN khác hoặc trên một máy chủ từ xa. Hãy dùng broker nội bộ nếu bạn muốn toàn bộ đường truyền dữ liệu nằm trong mạng LAN.
Tất cả các đồng hồ IAMMETER hiện hành đều hỗ trợ MQTT thủ công. Các model một pha, hai kênh và ba pha công bố cấu trúc mảng JSON khác nhau, vì vậy template giá trị phải khớp với payload thực tế.
Bước 1: Cấu hình MQTT broker trong WebUI của đồng hồ
Mở WebUI nội bộ của đồng hồ và vào Settings. Cấu hình:
| Cài đặt | Giá trị |
|---|---|
| Run Mode | MQTT |
| Address | Tên miền/IP và cổng của MQTT broker |
| Username | Tên người dùng broker, nếu có yêu cầu |
| Password | Mật khẩu broker, nếu có yêu cầu |
| HA MQTT Discovery | Tắt đối với hướng dẫn MQTT thủ công này |
Lưu các cài đặt và để đồng hồ kết nối lại.

WebUI của firmware hiện hành hỗ trợ trực tiếp các cài đặt broker này. Bạn không cần cấu hình tên người dùng và mật khẩu thông qua quy trình API nội bộ trước đây.
Để xem hướng dẫn cấu hình đầy đủ phía đồng hồ và các bước dành cho firmware cũ, hãy đọc công bố dữ liệu IAMMETER lên MQTT broker.
Chế độ MQTT và IAMMETER Cloud
Khi Run Mode của đồng hồ được đổi sang MQTT, đồng hồ sẽ công bố dữ liệu đo lên broker của bạn thay vì tải lên IAMMETER Cloud. Vì vậy, MQTT thủ công và IAMMETER Cloud không thể chạy đồng thời trên cùng một đồng hồ.
Nếu bạn cần dùng Home Assistant và IAMMETER Cloud cùng lúc, hãy dùng tích hợp HTTP nội bộ hoặc Modbus TCP thay thế. So sánh các phương pháp hiện có trong hướng dẫn tích hợp đồng hồ đo điện năng với Home Assistant.
Bước 2: Kiểm tra MQTT topic và payload
IAMMETER công bố dữ liệu đo theo thời gian thực tới:
device/{SN}/realtime
Thay {SN} bằng số sê-ri của đồng hồ. Ví dụ:
device/80123456/realtime
Trước khi cấu hình cảm biến Home Assistant, hãy đăng ký topic bằng một MQTT client và xác nhận rằng các bản tin đang đến. Điều này giúp tránh việc xử lý lỗi YAML bị lẫn với các vấn đề về broker, thông tin đăng nhập, tường lửa hoặc topic.
JSON của đồng hồ một pha
Đồng hồ một pha dùng mảng Data. Năm giá trị đầu tiên là:
| Vị trí trong mảng | Đại lượng đo |
|---|---|
Data[0] |
Điện áp |
Data[1] |
Dòng điện |
Data[2] |
Công suất tác dụng |
Data[3] |
Điện năng đã tiêu thụ |
Data[4] |
Điện năng đã phát |
Ví dụ:
{
"method": "uploadsn",
"SN": "12345678",
"Data": [228.91, 1.61, 225, 15066.47, 0]
}
JSON của đồng hồ nhiều kênh và ba pha
Đồng hồ nhiều kênh và ba pha dùng mảng Datas. Mỗi mảng lồng nhau đại diện cho một pha hoặc một kênh đo:
Datas[0] → pha/kênh A
Datas[1] → pha/kênh B
Datas[2] → pha/kênh C, nếu có
Trong mỗi mảng pha/kênh, các vị trí phổ biến là:
| Vị trí trong mảng | Đại lượng đo |
|---|---|
[0] |
Điện áp |
[1] |
Dòng điện |
[2] |
Công suất tác dụng |
[3] |
Điện năng đã tiêu thụ |
[4] |
Điện năng đã phát |
[5] |
Tần số, nếu được cung cấp |
[6] |
Hệ số công suất, nếu được cung cấp |
Luôn kiểm tra bản tin MQTT thực tế từ model và firmware của bạn trước khi sao chép template. Xem định nghĩa đầy đủ dữ liệu JSON của IAMMETER.
Bước 3: Kết nối Home Assistant với broker
Trong Home Assistant:
- Vào Settings → Devices & services.
- Chọn Add integration.
- Tìm MQTT.
- Nhập đúng địa chỉ, cổng, tên người dùng và mật khẩu của broker mà đồng hồ đang dùng.
- Xác nhận rằng tích hợp MQTT kết nối thành công.
Nếu Home Assistant đã dùng broker này, đừng thêm một tích hợp MQTT trùng lặp. Các cảm biến khai báo thủ công sẽ dùng kết nối broker sẵn có.
Bước 4: Thêm cảm biến MQTT thủ công trong YAML
Các ví dụ dưới đây dùng cấu trúc cấu hình mqtt: sensor: hiện hành của Home Assistant. Hãy thay số sê-ri trong mọi state_topic.
YAML cho đồng hồ đo điện năng một pha
mqtt:
sensor:
- name: "IAMMETER Voltage"
unique_id: "iammeter_12345678_voltage"
state_topic: "device/12345678/realtime"
value_template: "{{ value_json.Data[0] | float(0) }}"
unit_of_measurement: "V"
device_class: voltage
state_class: measurement
- name: "IAMMETER Current"
unique_id: "iammeter_12345678_current"
state_topic: "device/12345678/realtime"
value_template: "{{ value_json.Data[1] | float(0) }}"
unit_of_measurement: "A"
device_class: current
state_class: measurement
- name: "IAMMETER Active Power"
unique_id: "iammeter_12345678_active_power"
state_topic: "device/12345678/realtime"
value_template: "{{ value_json.Data[2] | float(0) }}"
unit_of_measurement: "W"
device_class: power
state_class: measurement
- name: "IAMMETER Imported Energy"
unique_id: "iammeter_12345678_import_energy"
state_topic: "device/12345678/realtime"
value_template: "{{ value_json.Data[3] | float(0) }}"
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
- name: "IAMMETER Exported Energy"
unique_id: "iammeter_12345678_export_energy"
state_topic: "device/12345678/realtime"
value_template: "{{ value_json.Data[4] | float(0) }}"
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
unique_id cho phép Home Assistant quản lý cài đặt thực thể trong giao diện. Hãy giữ mọi ID duy nhất và ổn định. Đừng thay đổi ID chỉ để đổi tên thực thể hiển thị.
YAML cho đồng hồ đo điện năng ba pha
Ví dụ sau tạo các thực thể cho pha A. Hãy sao chép khối này cho pha B và C, đổi Datas[0] thành Datas[1] và Datas[2], đồng thời dùng tên và unique_id riêng biệt.
mqtt:
sensor:
- name: "IAMMETER Voltage A"
unique_id: "iammeter_80123456_voltage_a"
state_topic: "device/80123456/realtime"
value_template: "{{ value_json.Datas[0][0] | float(0) }}"
unit_of_measurement: "V"
device_class: voltage
state_class: measurement
- name: "IAMMETER Current A"
unique_id: "iammeter_80123456_current_a"
state_topic: "device/80123456/realtime"
value_template: "{{ value_json.Datas[0][1] | float(0) }}"
unit_of_measurement: "A"
device_class: current
state_class: measurement
- name: "IAMMETER Active Power A"
unique_id: "iammeter_80123456_active_power_a"
state_topic: "device/80123456/realtime"
value_template: "{{ value_json.Datas[0][2] | float(0) }}"
unit_of_measurement: "W"
device_class: power
state_class: measurement
- name: "IAMMETER Imported Energy A"
unique_id: "iammeter_80123456_import_energy_a"
state_topic: "device/80123456/realtime"
value_template: "{{ value_json.Datas[0][3] | float(0) }}"
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
- name: "IAMMETER Exported Energy A"
unique_id: "iammeter_80123456_export_energy_a"
state_topic: "device/80123456/realtime"
value_template: "{{ value_json.Datas[0][4] | float(0) }}"
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
Với WEM2067 và các model nhiều kênh khác, chỉ tạo số khối kênh tương ứng với payload Datas thực tế.
Tránh hai khối mqtt: cấp cao nhất
Nếu configuration.yaml đã có một mục mqtt:, hãy thêm các cảm biến vào mục sẵn có. YAML không thể chứa an toàn hai khóa cấp cao nhất cùng tên.
Với cấu hình lớn, bạn có thể giữ các cảm biến MQTT trong một tệp được include, nhưng phải tuân theo cấu trúc include và quy tắc thụt lề của Home Assistant.
Bước 5: Kiểm tra cấu hình và nạp các cảm biến
Sau khi lưu YAML:
- chạy kiểm tra cấu hình của Home Assistant;
- sửa mọi lỗi về YAML, thụt lề hoặc template;
- khởi động lại Home Assistant nếu cần;
- mở Developer tools → States;
- xác nhận rằng mỗi thực thể MQTT có giá trị, đơn vị, device class và state class hợp lý.
Giá trị của thực thể sẽ thay đổi sau khi có bản tin mới đến trên device/{SN}/realtime.
Bước 6: Thêm điện năng đã tiêu thụ và đã phát vào Energy Dashboard
Energy Dashboard của Home Assistant yêu cầu các thực thể điện năng tích lũy. Các ví dụ YAML dùng:
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
Vào Settings → Dashboards → Energy và chọn:
- IAMMETER Imported Energy cho điện năng tiêu thụ từ lưới;
- IAMMETER Exported Energy cho điện năng phát lên lưới.
Với đồng hồ ba pha, hãy chọn cấu trúc thực thể phù hợp với cách lắp đặt và thiết kế dashboard của Home Assistant. Bạn có thể hiển thị riêng điện năng từng pha hoặc tạo một thực thể tổng phù hợp, nhưng đừng cộng các giá trị lại với nhau khi chưa xác nhận cách đồng hồ báo cáo điện năng từng pha và điện năng thuần cho chế độ đấu dây đã chọn.
Đừng chọn thực thể công suất tác dụng đo bằng watt vào trường điện năng của Energy Dashboard. Công suất là tốc độ tức thời; dashboard yêu cầu giá trị kWh tích lũy.
Chọn chu kỳ công bố MQTT
Firmware IAMMETER hiện hành hỗ trợ chu kỳ công bố MQTT ngắn nhất là 2 giây. Chu kỳ ngắn nhất không phải lúc nào cũng là cài đặt tốt nhất.
Gợi ý để bắt đầu:
| Trường hợp sử dụng | Chu kỳ gợi ý |
|---|---|
| Tự động hóa nội bộ cần phản hồi nhanh | 2–5 giây |
| Dashboard năng lượng theo thời gian thực | 5–12 giây |
| Giám sát thông thường | 10–60 giây |
Hãy cân nhắc năng lực của broker, mức tăng của recorder trong Home Assistant, độ ổn định của mạng và số lượng thực thể. Một bản tin chứa nhiều giá trị pha có thể cập nhật nhiều cảm biến Home Assistant cùng lúc.
Các model IAMMETER được hỗ trợ
Tất cả đồng hồ đo điện năng IAMMETER hiện hành đều hỗ trợ MQTT thủ công. Khác biệt chính của chúng trong Home Assistant là cấu trúc payload và số kênh đo.
| Model | Cấu trúc điển hình | Thông tin sản phẩm |
|---|---|---|
| WEM3080 | Một mảng Data |
Đồng hồ đo điện năng một pha |
| WEM2067 | Mảng Datas nhiều kênh |
Đồng hồ hai kênh cho điện mặt trời gia đình |
| WEM3080T | Mảng Datas ba kênh |
Đồng hồ đo điện năng ba pha |
| WEM3050T | Mảng Datas ba kênh |
Đồng hồ ba pha/hai pha gia đình |
| WEM3080TD | Dữ liệu nhiều kênh theo model/cách đấu dây | WEM3080TD |
| WEM3046T / WEM3046TE | Dữ liệu ba kênh với đo bằng CT ngoài 5 A | Đồng hồ ba pha dùng CT 5 A |
WEM3046T và WEM3046TE đo đầu ra thứ cấp 5 A của các CT ngoài. Hãy áp đúng tỷ số CT để có được giá trị phía sơ cấp. Đây là đặc điểm của hệ thống đo, không phải hạn chế của MQTT hay Home Assistant.
Xử lý sự cố
Không có bản tin MQTT nào đến
- Kiểm tra địa chỉ và cổng broker trong WebUI của đồng hồ.
- Xác nhận tên người dùng và mật khẩu.
- Kiểm tra log của broker để tìm lỗi xác thực hoặc kết nối.
- Xác nhận rằng đồng hồ có thể đến được broker qua các quy tắc tường lửa hoặc VLAN.
- Đăng ký topic
device/{SN}/realtimebằng một MQTT client độc lập.
Bản tin đến nhưng các thực thể Home Assistant không khả dụng
- Xác nhận rằng Home Assistant đã kết nối với cùng broker.
- Kiểm tra chính xác topic và số sê-ri.
- So sánh
DatavớiDatastheo payload thực tế. - Kiểm tra thụt lề YAML và template.
- Kiểm tra log của Home Assistant sau khi reload hoặc khởi động lại.
Một số thực thể hiển thị 0 hoặc sai đại lượng đo
- Đừng sao chép template
Datacủa đồng hồ một pha cho payloadDatas. - Kiểm tra vị trí trong mảng theo định nghĩa JSON.
- Xác nhận chỉ số pha/kênh.
- Với WEM3046T/WEM3046TE, xác nhận tỷ số CT ngoài.
Không thấy các thực thể điện năng trong Energy Dashboard
Xác nhận cả ba trường:
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
Đồng thời xác nhận rằng thực thể đã nhận dữ liệu số hợp lệ và xuất hiện trong Developer tools → States.
Xuất hiện thiết bị hoặc cảm biến trùng lặp
MQTT thủ công và MQTT Discovery có thể tạo ra các thực thể riêng biệt từ cùng một đồng hồ. Nếu bạn đang dùng phương pháp YAML, hãy giữ HA MQTT Discovery ở trạng thái tắt trừ khi bạn thực sự muốn cả hai bộ thực thể và đã dự kiến tên thực thể duy nhất.
Hướng dẫn liên quan
- Công bố dữ liệu IAMMETER lên MQTT broker của bạn
- Dùng MQTT Discovery thay cho YAML
- So sánh tất cả phương pháp tích hợp IAMMETER–Home Assistant
- Định nghĩa dữ liệu JSON của IAMMETER
- Nâng cấp firmware IAMMETER
Cập nhật: 19 tháng 7, 2026.