本帖最后由 mantoui 于 2020-12-22 12:16 编辑
家里的热水器,触控开关带温度数字显示的普通热水器,且放在厨房,每次在卫生间想开的时候比较麻烦,就做一个一下改造
用到如下设备:
- 一个5v1a的充电器 自备
- 一个5v转3.3v 2.77
- 一个ESP-01S 7.00
- 一个光敏电阻传感器模块 2.92
- 一个SG90 MG90 9g舵机 6.5
- 一个导电海绵条
- 杜邦线若干
简单说一下原理:
利用舵机模拟用户手指触摸开关,(正极链接导电海绵条,模拟电位)
利用光敏传感器读取热水器指示灯是否亮起,以此来判断是否开启
接线方式
1. 5v直接向舵机 光敏传感器供电,同时正极链接 导电海绵条,
2. 使用3.3v转接板后向 ESP-01S供电
3. 光敏传感器用热缩管抱一下,传感器留一个小口
4. GPIO0 控制舵机
5. GPIO2 读取光敏传感器信息
ESPHOME代码代码如下:
esphome:
name: esp01s_duoji_a
platform: ESP8266
board: esp01_1m
wifi:
ssid: "****"
password: "****"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Esp01S Duoji A Fallback Hotspot"
password: "jDCjJVxeZQAv"
captive_portal:
# Enable logging
logger:
# Enable Home Assistant API
ota:
password: "****"
# 舵机服务
api:
password: "****"
services:
- service: control_servo
variables:
level: float
level_reset: float
then:
- servo.write:
id: my_servo
level: !lambda 'return level / 100.0;'
- delay: 600ms
- servo.write:
id: my_servo
level: !lambda 'return level_reset / 100.0;'
servo:
- id: my_servo
output: pwm_output
# 舵机控制
output:
- platform: esp8266_pwm
id: pwm_output
pin: GPIO0
frequency: 50 Hz
# 光线感应配置
binary_sensor:
- platform: gpio
pin:
number: GPIO2
inverted: True
name: LED显示状态
HA 配置代码: 这部分我用的 button-card 请自行修改
aspect_ratio: 1/0.57
icon: 'mdi:hot-tub'
name: 热水器
entity: binary_sensor.ledxian_shi_zhuang_tai
state:
- color: '#fff'
styles:
card:
- filter: opacity(50%)
icon:
- filter: grayscale(100%)
value: 'off'
- color: var(--paper-item-icon-active-color)
styles:
card:
- background-color: var(--paper-item-icon-active-color)
color: '#333'
icon:
- color: '#333'
value: 'on'
double_tap_action:
action: more-info
tap_action:
action: call-service
service: esphome.esp01s_duoji_a_control_servo
service_data:
level: 50
level_reset: 0
type: 'custom:button-card'
特别说明:
level: 50 #压下的角度
level_reset: 0 #压下后抬起的角度
当热水器未开启时
当热水器开启时
|