HLW8012 功率传感器
hlw8012 传感器平台允许您在 ESPHome 中使用 HLW8012 电压/电流和功率传感器
(数据手册)。此传感器常见于 Sonoff POW 产品中。CSE7759 和 BL0937 与 HLW8012 类似,
也可使用此组件。请注意 CSE7759B 不同,应与
CSE7766 组件配合使用。
NOTE
安全隐患:某些设备(如 Sonoff POW、Shelly 等)的数字 GND 直接连接到市电 电压,因此GPIO 在正常运行期间会带电。我们的建议是标记这些电路板,以阻止 使用危险数字引脚。
此传感器有两个数据输出,均使用调制信号的频率来编码值:CF 和 CF1。 CF 的频率与测得的(有功)功率成正比,CF1 与电流/电压成正比。通过 SEL 引脚,可以选择使用哪种模式。
ESPHome 会持续循环切换 SEL 引脚状态以测量电流和电压,但两者无法 在同一精确时刻测量。
# Example configuration entrysensor: - 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 POW(R1)。
-
sel_pin(必选,Pin Schema): SEL 连接的引脚。
-
cf_pin(必选,Pin): CF 连接的引脚。
-
cf1_pin(必选,Pin): CF1 连接的引脚。
-
current (可选): 以安培为单位使用传感器的电流值。来自 Sensor 的所有选项。
-
power (可选): 以瓦特为单位使用传感器的(有功)功率值。来自 Sensor 的所有选项。
-
voltage (可选): 以 V(RMS)为单位使用传感器的电压值。 来自 Sensor 的所有选项。
-
energy (可选): 以 Wh 为单位使用传感器的总能量值。 来自 Sensor 的所有选项。
-
update_interval (可选,Time): 检查传感器的间隔。默认为
60s。
高级选项:
-
current_resistor (可选,float): 电流测量分流电阻的值。 默认为 Sonoff POW 的值
0.001 ohm。 -
voltage_divider (可选,float): 板上分压器的值,格式为
(R_upstream + R_downstream) / R_downstream。 默认为 Sonoff POW 的值2351。 -
model (可选,string): 板上的传感器型号,用于设置将脉冲转换为测量值的内部常数因子。 可能的值为
HLW8012、CSE7759、BL0937。默认为HLW8012。 CSE7759 使用相同的常数,默认设置也能工作。BL0937 必须设置才能同时校准所有三项测量。 -
change_mode_every (可选,int): 经过多少次更新后在电流/电压测量模式之间循环切换。 注意,切换后的第一个值会被丢弃,因为它通常不准确。设置为
"never"时测量模式将保持 设定的initial_mode。默认为8。 -
initial_mode (可选,string): 初始测量模式。默认为
VOLTAGE。 可能的初始测量模式为VOLTAGE或CURRENT。
固定 SEL 引脚
Section titled “固定 SEL 引脚”某些设备的 SEL 引脚被永久拉高或拉低。如果是这种情况,您可以配置 初始测量模式以匹配设备使用的模式,并禁用模式切换。
# Example configuration entry for device with fixed measurement modesensor: - 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 时测量电压。要适配此更改,请使用以下配置:
# Example configuration entry for device BL0937 using inverted SEL pin functionalitysensor: - 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 在未来准确测量功率、电压和电流。
- 将新值上传到 ESP。
| ESP 上的校准值 | |
|---|---|
| voltage_divider | |
| current_resistor | |
| current_multiply | |
| ESP 测量值 | |
|---|---|
| 电压 | V |
| 功率 | W |
| 电流 | A |
| 功率计测量值 | |
|---|---|
| 电压 | V |
| 功率 | W |
| 电流 | A |
| 新的校准值 | |
|---|---|
| voltage_divider | |
| current_resistor | |
| current_multiply | |
| 新的 ESP 测量值 | |
|---|---|
| 电压 | V |
| 功率 | W |
| 电流 | 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