本帖最后由 slychen 于 2024-12-27 14:53 编辑
前几天闲着没事也买了块这个板子,根据楼主的描述仔细看了下板子,这板子是采用HWL8012来检测功率,HWL8012是个将电压电流的模拟信号转为脉冲信号给下面的单片机来检测功率的芯片,有三个输出脚分别为CF、CF1、SEL,其中CF1脚是由SEL脚来切换输出检测电流和电压的脉冲信号,CF脚输出有功高频脉冲,这板子只利用了其中CF通过隔离光耦输出到esp8266,估计设计时为了节约隔离光耦成本另两个脚是空置的,但esphome到HLW8012的语法必须要这三个引脚,所以楼主用了几个没用的引脚来分配给它。找了个以前闲置的德力
substitutions:
voltage_divider: "1991" # 电压分压比
current_resistor: "0.000694" # 检流电阻
# HLW8012传感器配置
sensor:
- platform: hlw8012
current_resistor: ${current_resistor} # 检流电阻值
voltage_divider: ${voltage_divider} # 电压分压比
cf_pin:
number: GPIO14 # CF 引脚
mode: INPUT
#inverted: true # 在这里直接反转信号
cf1_pin:
number: GPIO2 # CF1 引脚
mode: INPUT
sel_pin:
number: GPIO0 # SEL 引脚
mode: OUTPUT
power:
name: "HLW8012 Power"
voltage:
name: "HLW8012 Voltage"
current:
name: "HLW8012 Current"
update_interval: 10s
# 开机时间WI-FI信号及信号强度
- platform: uptime
id: uptime_s
update_interval: 300s
internal: true
- platform: wifi_signal
name: "WiFi Signal"
id: wifi_signal_db
update_interval: 30s
internal: true
entity_category: "diagnostic"
- platform: copy
source_id: wifi_signal_db
name: "WiFi Signal"
filters:
- lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
unit_of_measurement: "Signal %"
entity_category: "diagnostic"
text_sensor:
- platform: wifi_info
ip_address:
name: "IP"
id: id_sensor_ip
icon: mdi:ip
- platform: template
name: "Uptime"
lambda: |-
uint32_t dur = id(uptime_s).state;
int dys = 0;
int hrs = 0;
int mnts = 0;
if (dur > 86399) {
dys = trunc(dur / 86400);
dur = dur - (dys * 86400);
}
if (dur > 3599) {
hrs = trunc(dur / 3600);
dur = dur - (hrs * 3600);
}
if (dur > 59) {
mnts = trunc(dur / 60);
dur = dur - (mnts * 60);
}
char buffer[40]; // 增加缓冲区大小
snprintf(buffer, sizeof(buffer), "%ud %02uh %02um %02us", dys, hrs, mnts, dur); // 使用 snprintf
return {buffer};
icon: mdi:clock-start
update_interval: 60s
# GPIO开关配置
switch:
- platform: gpio
id: relay
pin: GPIO15
name: "SWITCH"
restore_mode: ALWAYS_ON
on_turn_on:
- output.turn_on: Orange_led
on_turn_off:
- output.turn_off: Orange_led
- platform: gpio
id: usb
pin: GPIO13
name: "USB_Switch"
on_turn_on:
- output.turn_on: blue_led # USB开启时点亮status_led
on_turn_off:
- output.turn_off: blue_led
# LED和按钮配置
output:
- platform: gpio
id: Orange_led
pin: GPIO12
inverted: true # 反转信号
- platform: gpio
id: blue_led
pin: GPIO05
inverted: true # 反转信号
# 按钮配置
binary_sensor:
- platform: gpio
pin:
number: GPIO04
#inverted: true
mode:
input: true
pullup: true
name: "button"
internal: true #此按钮不在HA中显示
on_multi_click:
- timing: #单击
- ON for at most 1s
- OFF for at least 0.5s
then:
- switch.toggle: relay
- logger.log: "[Single Click] toggle relay"
- timing: #双击
- ON for at most 1s
- OFF for at most 0.3s
- ON for at most 1s
- OFF for at least 0.2s
then:
- switch.toggle: usb
- logger.log: "[Double Click] toggle usb"
- timing: #长按
- ON for 1s to 3s
- OFF for at least 0.5s
then:
- switch.turn_off: usb
- switch.turn_off: relay
- logger.log: "[Single Long Click] both off"
time:
- platform: sntp
id: my_time
|