HLW8012 功率传感器
hlw8012 传感器平台允许您在 ESPHome 中使用您的 HLW8012 电压/电流和功率传感器
(数据手册)。此传感器常见于 Sonoff POW。CSE7759 和 BL0937 与 HLW8012 类似,可与此组件配合使用。请注意 CSE7759B 有所不同,应使用
CSE7766 组件。
NOTE
安全隐患:一些设备如 Sonoff POWs/Shelly 等,其数字地直接连接到市电电压,因此 GPIO 在正常运行时会带电。我们的建议是标记这些开发板,以防止使用危险的数字引脚。
此传感器有两个数据输出,均使用调制信号的频率编码数值:CF 和 CF1。 CF 的频率与测量的(有功)功率成正比,CF1 与电流/电压成正比。使用 SEL 引脚可以选择使用哪种模式。
ESPHome 将持续循环 SEL 引脚的状态以测量电流和电压,尽管两者无法在同一确切时间点测量。
# 示例配置条目sensor: - platform: hlw8012 sel_pin: GPIOXX cf_pin: GPIOXX cf1_pin: GPIOXX current: name: "HLW8012 Current" voltage: name: "HLW8012 Voltage" power: name: "HLW8012 Power" energy: name: "HLW8012 Energy" update_interval: 60sNOTE
以上配置应适用于 Sonoff POWs (R1)。
-
sel_pin (Required, Pin Schema): SEL 连接的引脚。
-
cf_pin (Required, Pin): CF 连接的引脚。
-
cf1_pin (Required, Pin): CF1 连接的引脚。
-
current (Optional): 使用传感器的电流值,单位为安培。所有选项来自 Sensor。
-
power (Optional): 使用传感器的(有功)功率值,单位为瓦特。所有选项来自 Sensor。
-
voltage (Optional): 使用传感器的电压值,单位为 V (RMS)。 所有选项来自 Sensor。
-
energy (Optional): 使用传感器的总电能值,单位为 Wh。 所有选项来自 Sensor。
-
update_interval (Optional, Time): 检查传感器的间隔。默认为
60s。
高级选项:
-
current_resistor (Optional, float): 用于电流测量的分流电阻值。 默认为 Sonoff POW 的值
0.001 ohm。 -
voltage_divider (Optional, float): 开发板上分压器的值,计算公式为
(R_upstream + R_downstream) / R_downstream。 默认为 Sonoff POW 的值2351。 -
model (Optional, string): 开发板上的传感器型号,用于设置内部常数因子以将脉冲转换为测量值。 可能的值为
HLW8012、CSE7759、BL0937。默认为HLW8012。 CSE7759 使用相同的常数,也可以使用默认值。对于 BL0937,必须设置此选项才能同时校准所有三个测量值。 -
change_mode_every (Optional, int): 在多少次更新后切换电流/电压测量模式。 请注意,切换后的第一个值会被丢弃,因为它通常不准确。当设置为
"never"时,测量模式将保持在 设置的initial_mode。默认为8。 -
initial_mode (Optional, string): 初始测量模式。默认为
VOLTAGE。 可能的初始测量模式为VOLTAGE或CURRENT。
固定 SEL 引脚
Section titled “固定 SEL 引脚”一些设备的 SEL 引脚永久拉高或拉低。如果是这种情况,您可以配置 初始测量模式以匹配设备使用的模式,并禁用模式切换。
# 固定测量模式设备的示例配置条目sensor: - platform: hlw8012 sel_pin: GPIOXX cf_pin: GPIOXX cf1_pin: GPIOXX current: name: "HLW8012 Current" voltage: name: "HLW8012 Voltage" power: name: "HLW8012 Power" update_interval: 60s initial_mode: CURRENT change_mode_every: "never"SEL 引脚反转
Section titled “SEL 引脚反转”如果使用 BL0937 型号,SEL 引脚的功能与默认值相反。当 SEL=0 时测量电流,
当 SEL=1 时测量电压。要适应此变化,请使用以下配置:
# 使用反转 SEL 引脚功能的 BL0937 设备示例配置条目sensor: - platform: hlw8012 model: BL0937 sel_pin: number: GPIOXX inverted: true cf_pin: GPIOXX cf1_pin: GPIOXX current: name: "BL0937 Current" voltage: name: "BL0937 Voltage" power: name: "BL0937 Power" update_interval: 60s您需要:
- 您的 ESPHome 功率测量插座
- 一台可测量电压、电流、功率和功率因数的校准功率计
- 一个大功率电阻性负载,如电暖器或水壶,最好超过 1000W
步骤:
- 在设备的 YAML 配置中找到当前使用的
current_resistor和voltage_divider校准值,或将带有已知校准值的新固件上传到 ESP。 - 将 ESP 功率测量插座插入校准功率计。
- 将负载插入 ESP 插座。
- 打开负载并确保功率计上显示的功率因数 (PF) 为 1.0。如果不是,您需要选择不同的负载。
- 等待功率计和 ESP 上的读数稳定。
- 同时记录功率计和 ESP 的电压读数。
- 同时记录功率计和 ESP 的功率读数。
- 同时记录功率计和 ESP 的电流读数。
- 使用下面的计算器计算 ESP 的新校准值。这些值将帮助它在未来准确测量功率、电压和电流。
- 将新值上传到 ESP。
| Calibration values on the ESP | |
|---|---|
| voltage_divider | |
| current_resistor | |
| current_multiply | |
| ESP measurements | |
|---|---|
| Voltage | V |
| Power | W |
| Current | A |
| Power meter measurements | |
|---|---|
| Voltage | V |
| Power | W |
| Current | A |
| New calibration values | |
|---|---|
| voltage_divider | |
| current_resistor | |
| current_multiply | |
| New ESP measurements | |
|---|---|
| Voltage | V |
| Power | W |
| Current | A |
示例配置:
substitutions: voltage_divider: "2351" current_resistor: "0.001" current_multiply: "1.0"
sensor: - platform: hlw8012 current_resistor: ${current_resistor} voltage_divider: ${voltage_divider} current: name: "HLW8012 Current" filters: - multiply: ${current_multiply} voltage: name: "HLW8012 Voltage" power: name: "HLW8012 Power" energy: name: "HLW8012 Energy" update_interval: 60s