前言
本项目的起因是周末在家洗衣服,晾在窗外的晾衣架上,本来是个艳阳高照的天气,突然下起了雨,而在屋内写代码的我对此一无所知,等发现的时候,快晾干的衣服已经在滴水了,因此萌生了DIY一个能够检测下雨,并且语音提醒的东东。
首先看一下演示视频
HomeAssistant下雨检测演示视频
接下来,咱们进入正题。
一、硬件篇
本项目使用到的硬件和自制人体感应器部分基本相同,此处只是罗列出来,不再过多介绍了。传送门
1. 硬件清单
- ESP-01S 串口WIFI模块
- 5V2A充放电一体模块
- 1.8V-5V转3.3V升降压模块
- type-C 转接板
- 按键及键帽
- 锂电池
- 细导线
- 杜邦线
- 雨露传感器
2.雨露传感器
Water Sensor是一个利用湿度方式检测有没有水分的传感器,可用于天气状况的监测,可以检测有没有下雨。将传感器放置在室外,当有雨水滴到检测面上时,湿度将增大,随之电压升高,并转成数字信号DO和模拟信号AO输出。除了检测雨水外,雾水和水蒸气也都能检测。
二、工具篇
- 电烙铁
- 热熔胶枪
- 固件烧录器
三、组装篇
1.固件烧写
为ESP-01S烧录ESP-Home固件,硬件安装好后,可以通过OTA的方式升级固件,而无需取下。
固件的编辑、编译、下载流程参考 软件篇
配置文件如下:
esphome:
name: esp01s_rain
platform: ESP8266
board: esp01_1m
wifi:
ssid: "TP-LINK_C770"
password: "tzacwbc418"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Esp01S Rain Fallback Hotspot"
password: "HgQQT5PNt4Z5"
captive_portal:
# Enable logging
logger:
# Enable Home Assistant API
api:
ota:
web_server: ##web控制,添加了这2行,就可以在网页端打开设备ip
port: 80
binary_sensor: #定义传感器
- platform: gpio
pin:
number: 0
inverted: yes
name: "rain sensor"
device_class: moisture
id: motion_01
on_press:
- switch.turn_off: motion_01_light
on_release:
- switch.turn_on: motion_01_light
switch:
- platform: gpio
pin: GPIO2
name: "rain light"
id: motion_01_light
restore_mode: ALWAYS_ON
2. 硬件连接
硬件接线图如下所示:
连接方式与人体感应器基本相同,需要注意的是人体感应开关需要5V供电,而雨滴传感器只需要3.3V即可。
硬件全家福如下图所示:
- 连接TypeC 转接板到电源模块输入端
- 连接电池
- 连接电源输出到5V -3.3V降压模块的输入端
- 5V-3.3V降压模块输入端引出两路杜邦线
- 使用杜邦线连接ESP-01S 和雨滴传感器
- 使用杜邦线连接雨滴传感器DO脚到ESP-01 IO0
- 检查焊接无误后,连接电池
最后一步,安装外壳,我是用了一个75mm75mm25mm的塑料盒子、安装电源模块的时候,我没有把按键接出来,而是在壳子上开了一个洞。
3. OTA升级
打开web调试页面,IP地址可以到路由器管理页面查找,可以在web界面做简单的调试、OTA升级等功能。
在OTA Update处选择固件文件,然后点击update
升级完成后,页面显示如下,点击F5刷新页面即可。
代码如下(示例):
四、自动化篇
1. 在HA中添加设备
添加设备的方法与人体感应器的添加方法相同,此处不再赘述。
2. 配置自动化脚本
创建两个自动化脚本,分别命名为下雨提醒和雨停提醒,创建好后再开始编辑。
下雨提醒脚本设置如下:
触发条件设置为 雨滴传感器检测到湿度 并持续2s ,延时是防止传感器抖动误报,
环境条件中 增加时间,设为7:00-20:00,睡眠期间免打扰。
动作中,添加调用服务,通过语音播报下雨提醒, 服务选择 tts, 实体选择音频输出设备,消息填写语音播报的信息。
由于雨滴传感器检测下雨后,并不会保持下雨的状态,而是会连续的触发,为了防止重复触发提醒,添加一个动作,下雨提醒后关闭自身。再添加一个动作,开启雨停提醒脚本。
雨停提醒脚本设置如下:
触发条件为检测到雨滴传感器变干,并持续一段时间,这里为了方便测试,设置为10s,实际可以设置的长一些。
添加动作,设置雨停的语音提醒。
添加一个动作,检测到雨停时,停用自身,并且启用下雨提醒的自动化脚本,继续检测下雨的状态。
通过上述两条自动化脚本,可以实现检测到下雨后触发语音提醒,并且每次下雨只提醒一次。
以上脚本只是一个示例,可以通过定义自动化脚本,实现更多好玩的功能。
总结
看到这里,我们的下雨感应器就做好了,接下来计算一下成本
相关的资料和文件在此处下载,同时也会上传到我的个人公众号中,回复“下雨感应器”即可免费领取。
如果你对HomeAssistant和智能家居的内容感兴趣,欢迎关注我的个人微信公众号,获取更多精彩内容。