- A+
- 前言
- 一、硬件篇
- 1. 硬件清单
- 2.雨露传感器
- 二、工具篇
- 三、组装篇
- 1.固件烧写
- 2. 硬件连接
- 3. OTA升级
- 四、自动化篇
- 1. 在HA中添加设备
- 2. 配置自动化脚本
- 总结
前言
本项目的起因是周末在家洗衣服,晾在窗外的晾衣架上,本来是个艳阳高照的天气,突然下起了雨,而在屋内写代码的我对此一无所知,等发现的时候,快晾干的衣服已经在滴水了,因此萌生了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的方式升级固件,而无需取下。
固件的编辑、编译、下载流程参考 软件篇
配置文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
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中添加设备
1 |
[crayon-65c4e572826c1271638493 inline="true" class="has-numbering" onclick="mdcp.copyCode(event)"]添加设备的方法与人体感应器的添加方法相同,此处不再赘述。 |
[/crayon]
- 1
2. 配置自动化脚本
创建两个自动化脚本,分别命名为下雨提醒和雨停提醒,创建好后再开始编辑。
下雨提醒脚本设置如下:
触发条件设置为 雨滴传感器检测到湿度 并持续2s ,延时是防止传感器抖动误报,
环境条件中 增加时间,设为7:00-20:00,睡眠期间免打扰。
动作中,添加调用服务,通过语音播报下雨提醒, 服务选择 tts, 实体选择音频输出设备,消息填写语音播报的信息。
由于雨滴传感器检测下雨后,并不会保持下雨的状态,而是会连续的触发,为了防止重复触发提醒,添加一个动作,下雨提醒后关闭自身。再添加一个动作,开启雨停提醒脚本。
雨停提醒脚本设置如下:
触发条件为检测到雨滴传感器变干,并持续一段时间,这里为了方便测试,设置为10s,实际可以设置的长一些。
添加动作,设置雨停的语音提醒。
添加一个动作,检测到雨停时,停用自身,并且启用下雨提醒的自动化脚本,继续检测下雨的状态。
通过上述两条自动化脚本,可以实现检测到下雨后触发语音提醒,并且每次下雨只提醒一次。
以上脚本只是一个示例,可以通过定义自动化脚本,实现更多好玩的功能。
总结
看到这里,我们的下雨感应器就做好了,接下来计算一下成本
2024年1月18日 16:23 沙发
如何确保小盒子不进水呢?传感器与小盒子之间可以接长一点的导线吗?
2024年2月4日 20:06 1层
@海风 可以的,或者在盒子或导线之间做一块隔板