跳转到内容

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: 60s

NOTE

以上配置应适用于 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): 开发板上的传感器型号,用于设置内部常数因子以将脉冲转换为测量值。 可能的值为 HLW8012CSE7759BL0937。默认为 HLW8012。 CSE7759 使用相同的常数,也可以使用默认值。对于 BL0937,必须设置此选项才能同时校准所有三个测量值。

  • change_mode_every (Optional, int): 在多少次更新后切换电流/电压测量模式。 请注意,切换后的第一个值会被丢弃,因为它通常不准确。当设置为 "never" 时,测量模式将保持在 设置的 initial_mode。默认为 8

  • initial_mode (Optional, string): 初始测量模式。默认为 VOLTAGE。 可能的初始测量模式为 VOLTAGECURRENT

一些设备的 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"

如果使用 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_resistorvoltage_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