Home Assistant 接入 CHNT DDSU666 电表实战
前情提要
最近发现家庭电费一直高居不下,需要搞清楚电能在各房间、各路设备之间的流向分布,于是决定把电表数据拉进 Home Assistant 做可视化与自动化。前一篇文章已经讲过如何完成 CHNT DDSU666 的初始化协议切换,本文继续沿着这条线,聚焦在网关与 Home Assistant 侧的实际配置。
网关准备与串口对齐
使用 485 转 WiFi 网关时,务必让串口和链路参数与电表保持一致,避免在透明传输过程中出现丢帧:
- 串口参数设为
9600 / 8 / 1 / NONE - 报文打包间隔设为
0 ms - 报文打包长度设为
1460,避免被提前拆包 - Modbus 网关模式保持
OFF,确保所有请求透明透传 - 离线缓存置为
ON,断链时暂存请求防止报文撞车 - 轮询开关保持
ON,超时设为200 ms - 同步波特率(RFC2217)开启,便于主站按需动态调节
修改完成后重启网关,再次对照电表当前工作状态确认串口指标无误,随后即可开始写入测试报文。
Home Assistant 中启用 Modbus 集成
- 确认 Home Assistant 版本已启用
modbus官方集成(无需额外安装)。 - 在配置目录的
configuration.yaml或其分离文件中添加 modbus 配置,完成后重启 Home Assistant。 - 通过开发者工具的“状态”页面确认相关传感器实体已经创建。
建议先使用 Modbus Poll、mbtget 等工具做一次连通性验证,确保从网关读取数据没有 CRC 或超时问题,再让 Home Assistant 接管。
Modbus 配置清单
以下 YAML 片段可直接放入 Home Assistant 的配置文件中,确保缩进与格式保持一致:
modbus:
- name: entry_em
type: rtuovertcp
host: 10.9.11.54
port: 502
delay: 1
message_wait_milliseconds: 1000
sensors:
- name: Entry Electricity Voltage
unique_id: entry_em_voltage
device_class: voltage
unit_of_measurement: V
slave: 1
scan_interval: 5
address: 0x2000
input_type: holding
data_type: float32
precision: 1
- name: Entry Electricity Current
unique_id: entry_em_current
device_class: current
unit_of_measurement: A
slave: 1
scan_interval: 5
address: 0x2002
input_type: holding
data_type: float32
precision: 3
- name: Entry Electricity Power
unique_id: entry_em_power
device_class: power
unit_of_measurement: W
slave: 1
scan_interval: 5
address: 0x2004
input_type: holding
data_type: float32
- name: Entry Electricity Reactive Power
unique_id: entry_em_reactive_power
device_class: reactive_power
unit_of_measurement: W
slave: 1
scan_interval: 5
address: 0x2006
input_type: holding
data_type: float32
- name: Entry Electricity Power Factor
unique_id: entry_em_power_factor
device_class: power_factor
unit_of_measurement: "%"
slave: 1
scan_interval: 5
address: 0x200A
input_type: holding
data_type: float32
scale: 100
precision: 1
- name: Entry Electricity Frequency
unique_id: entry_em_frequency
device_class: frequency
unit_of_measurement: Hz
slave: 1
scan_interval: 5
address: 0x200E
input_type: holding
data_type: float32
precision: 3
- name: Entry Electricity Energy
unique_id: entry_em_energy
device_class: energy
state_class: total_increasing
unit_of_measurement: kWh
slave: 1
scan_interval: 5
address: 0x4000
input_type: holding
data_type: float32
precision: 3
group:
entry_electricity_system:
name: Entry Electricity System
icon: mdi:meter-electric
entities:
- sensor.entry_electricity_voltage
- sensor.entry_electricity_current
- sensor.entry_electricity_power
- sensor.entry_electricity_reactive_power
- sensor.entry_electricity_power_factor
- sensor.entry_electricity_frequency
- sensor.entry_electricity_energy
配置能源追踪
- 在 Home Assistant 前端进入“设置 → 设备与服务 → 能源”。
- 在“电网使用”模块中新增实体,选择
sensor.entry_electricity_energy作为电网消耗源。 - 根据需要设置成本计算方式,可按固定单价或时间段费率;也可以补充自动化,根据电价时段写入
input_number供能源面板读取。 - 如果希望统计不同房间或回路的支路能耗,可在能源面板中新增子表,或在 Home Assistant 中各自创建模数测量实体再继续填充。
完成后,能源仪表板会开始滚动采集电表上报的累计电量,配合电压、电流与功率等传感器即可实现实时监控和历史趋势分析。
效果截图

后续思路
- 持续观察 Modbus 日志,确保无超时重连,必要时调整
message_wait_milliseconds。 - 结合家中其他大功率设备(空调、热水器)布点,扩展更多 DDSU666 或其它子表,实现更细颗粒度的用电分摊。
- 利用 Home Assistant 的自动化功能,在功率因数异常或电流突变时推送提醒,及时定位异常负载。
版权属于:一名宅。
本文链接:https://zhaiyiming.com/archives/home-assistant-chnt-ddsu666.html
转载时须注明出处及本声明