电网数据接入与功率分析
为什么需要电网数据
Home Assistant Energy Dashboard 的电网数据让你看清:
- 每天从电网买了多少电(白天太阳能不够时)
- 每天卖回电网多少电(太阳能盈余时)
- 电费和发电补贴
没有太阳能/电池的用户也可以通过电网数据监控家庭总耗电——了解哪些设备是耗电大户。
智能电表接入
电网数据最直接的来源是智能电表。不同国家/地区的电表类型不同:
方案一:运营商 Zigbee 智能电表 + Home Assistant HEMS
中国电网、南方电网的智能电表支持 Zigbee HEMS 协议。Home Assistant 有 HEMS 集成可以直接读取:
- 找 Home Assistant 兼容的 HEMS 智能电表
- 电表连接到你的 Zigbee 网络
- Home Assistant Settings → Devices & services → Add integration → 搜索 HEMS
方案二:红外抄表器 DIY
大多数国内智能电表有红外通讯口(在电表正面的一个小窗口)。可以用一个 38kHz 红外接收头 + ESP8266 做抄表器:
- ESPHome + 红外接收头模块
- 读电表的 DLMS/COSEM 协议数据
- 推送到 Home Assistant
这个方案成本低(几十块钱),但需要一些硬件动手能力。
方案三:电流互感器(CT)方案
最普及的方案——在家庭总配电箱进线处套一个电流互感器(SCT-013):
- 电流互感器套在主进线上(不用断电,夹住就行)
- 信号送到 ESPHome(NodeMCU/ESP32)
- ESPHome 计算出功率,推送到 Home Assistant
- 精度取决于 CT 质量——好的 CT 精度在 ±5% 以内
适合中国国情:不用依赖运营商电表,自己装、自己管。
电表创建的实体
Home Assistant 从智能电表读取的数据通常包括:
| 实体 | 含义 |
|---|---|
sensor.grid_power | 当前总用电功率(W)= 电网购电 - 卖回电网 |
sensor.grid_energy_consumed | 累计电网购电量(kWh) |
sensor.grid_energy_returned | 累计卖回电网电量(kWh) |
sensor.grid_voltage | 电压(V,通常 220V 左右) |
sensor.grid_current | 电流(A) |
sensor.power_factor | 功率因数 |
sensor.grid_frequency | 频率(Hz,中国 50Hz) |
在 Energy Dashboard 里配置
Settings → System → Energy → Grid consumption
Current grid consumption: sensor.grid_power
Grid energy consumed: sensor.grid_energy_consumed
Grid energy returned: sensor.grid_energy_returned
三个实体分别对应:
- Current:实时功率(正数=购电、负数=卖电)
- Consumed:累计购电(单调递增)
- Returned:累计卖电(单调递增)
分时电价(TOU)数据
如果你有分时电价(Time of Use,国内很多地方峰/平/谷三段电价不同),可以在 Energy Dashboard 里配置:
Settings → System → Energy → Electricity grid → Tariff settings
Peak rate: 1.2 元/kWh
Flat rate: 0.8 元/kWh
Off-peak rate: 0.3 元/kWh
Peak hours: 19:00 - 22:00
Flat hours: 08:00 - 11:00, 15:00 - 18:00, 22:00 - 24:00
Off-peak hours: 00:00 - 07:00
配好后 Energy Dashboard 会自动计算电费账单预估和发电补贴收入。
功率分析自动化
有了电网功率数据,你可以做很多有趣的事情:
场景一:设备功耗估算
不知道家里哪个电器最费电?可以做"开/关某个设备时看总功率变化":
alias: 烤箱开启时记录功率差
trigger:
- platform: state
entity_id: switch.oven
to: "on"
action:
- service: notify.mobile_app_me
data:
title: "烤箱开了"
message: >
当前总功率:{{ states('sensor.grid_power') }}W
场景二:异常用电报警
alias: 异常高耗电提醒
trigger:
- platform: numeric_state
entity_id: sensor.grid_power
above: 5000 # 5kW 以上
for:
minutes: 5
action:
- service: notify.mobile_app_me
data:
title: "耗电异常"
message: >
总功率已达 {{ states('sensor.grid_power') }}W
请检查是否有设备未关
场景三:夜间待机功耗监控
晚上关灯关设备后看看总功率还有多少——这就是待机功耗:
alias: 夜间待机功率记录
trigger:
- platform: time
at: "03:00:00"
condition:
- condition: state
entity_id: person.me
state: home
- condition: state
entity_id: group.all_lights
state: "off"
action:
- service: notify.mobile_app_me
data:
title: "夜间待机功耗"
message: >
当前待机功率:{{ states('sensor.grid_power') }}W
关于 ESPHome 电流互感器方案的小提示
- 选 SCT-013-100A(量程足够覆盖普通家庭)
- 必须夹在主进线上(所有电器都经过这里)
- CT 有方向性——箭头朝电源方向,装反了功率读数会是负数
- 如果有三相电,每相一个 CT,Home Assistant 合并三路数据