本帖最后由 myxvhgiile 于 2025-12-13 12:57 编辑
最近想搞一个智能插座,在站内找到了 和家亲飞利浦SPB9010W刷ESPHOME接入教程 (https://bbs.hassbian.com/thread-28759-1-1.html) 这篇帖子,觉得比较适合我,于是买了两个飞利浦SPB9010W来研究一下。
在研究上面帖子里面给出的代码时发现sensor platform使用的是cse7766,这我就很奇怪,明明说飞利浦SPB9010W所用的电量计是HLW8032,为什么sensor却用cse7766。
在一番检索下才发现,esphome已集成hlw8032 sensor platform,只不过从commit log (https://github.com/esphome/esphome/commit/c7382fc494796dc89f19967c50c61d3c9319e27f) 可以看到是在5天前,不得不说要是再早些天我也就之能用cse7766代替了。
目前hlw8032 sensor platform只是在dev分支,还没有正式发版,我猜可能下个版本就会带上了,我提前体验了一下,并在这里略作分享:
参考上述帖子中和HLW8032 Power Sensor 文档 (https://next.esphome.io/components/sensor/hlw8032/),实现功能如下:
- GPIO4 蓝色 LED 表示 Wi-Fi 连接状态,熄灭表示未连接,点亮表示成功连接;
- GPIO16 白色 LED 表示 Home Assistant 连接状态,闪烁表示未连接,熄灭表示成功连接;
- GPIO14 继电器控制插孔是否输出,上电默认关闭输出;
- GPIO5 开关用于控制翻转继电器输出状态;
- 电压分压值使用帖子中所说的 1.88,实测差距不大就没再调整;
- 电流分流电阻值配置为 0.002欧姆。
用手里的一个PTC加热板简单测了一下电压、电流差距不大:
电流实测
电压实测
代码如下:
esphome:
name: philips-spb9010w
esp8266:
board: esp01_1m
# Enable Home Assistant API
api:
encryption:
key: <your api key>
status_led:
pin: 16
ota:
- platform: esphome
password: <your ota password>
safe_mode:
web_server:
port: 80
wifi:
networks:
- ssid: <your ssid>
password: <your wifi password>
min_auth_mode: WPA2
power_save_mode: none
on_connect:
- light.turn_on: wifi_state_led
on_disconnect:
- light.turn_off: wifi_state_led
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "PHILIPS-SPB9010W"
password: "12345678"
captive_portal:
# Example configuration entry
substitutions:
update_interval: 60s
# Disable logging over USB
logger:
level: INFO
baud_rate: 0
external_components:
- source:
type: git
url: https://github.com/esphome/esphome
ref: dev
components: [ hlw8032 ]
uart:
rx_pin: GPIO3
baud_rate: 4800
parity: EVEN
sensor:
- platform: hlw8032
voltage:
name: "HLW8032 Voltage"
id: hlw8032_voltage
current:
name: "HLW8032 Current"
id: hlw8032_current
power:
name: "HLW8032 Power"
id: hlw8032_power
apparent_power:
name: "HLW8032 Apparent Power"
id: hlw8032_apparent_power
power_factor:
name: "HLW8032 Power Factor"
id: hlw8032_power_factor
voltage_divider: 1.88
current_resistor: 0.002
light:
- platform: binary
name: "Wi-Fi State"
id: wifi_state_led
output: wifi_state_led_optput
internal: true
output:
- id: wifi_state_led_optput
platform: gpio
pin: GPIO4
switch:
- platform: gpio
name: "Power Control"
pin: GPIO14
id: relay
restore_mode: ALWAYS_OFF
binary_sensor:
- platform: gpio
pin:
number: GPIO5
mode: INPUT_PULLUP
inverted: true
name: "Toggle Relay"
internal: true
on_press:
then:
- switch.toggle: relay
- lambda: |
ESP_LOGI("Toggle Relay", "Relay turned %s",
id(relay).state ? "ON" : "OFF");
filters:
- delayed_on_off: 10ms
其中external_components的部分是为了提前使用尚未发布的hlw8032 sensor platform,等正式发版后就不需要了。
ps: 不知道为什么帖子里面的超链接编辑的时候看是正常的,一保存就没有了,所以我就直接把链接放到括号里了
|