ESPHome 30元一个下午搭好漏水检测报警
【免费下载链接】esphomeESPHome is a system to control your ESP32, ESP8266, BK72xx, RP2040 by simple yet powerful configuration files and control them remotely through Home Automation systems.项目地址: https://gitcode.com/GitHub_Trending/es/esphome
洗衣机底下积水这事,往往是第二天早上才发现,水早渗到地板了。这篇文章用一块 ESP8266 开发板加一个水浸传感器、一个蜂鸣器,总预算 35 元以内,大约一个半小时内搭好一套漏水检测系统:全程只需复制粘贴 YAML 配置,ESPHome 会把配置编译成固件刷进芯片,通电后设备持续感知探头干湿状态,漏水时本地蜂鸣器报警,并通过局域网把告警推给 Home Assistant,不需要写任何代码。
为什么选 ESPHome
现成的漏水报警器大多只能本地响铃,离家在外收不到消息;带手机通知的 WiFi 款普遍贵一倍,不少还要订阅云服务。ESPHome 的思路不同:你用 YAML 声明「哪个引脚接了传感器、漏水时做什么」,工具自动生成、编译并上传完整固件。
这样做的好处:
- 告警走本地 MQTT 和 Home Assistant,不依赖云端
- 配置是纯文本,可备份、可复制改几行重新刷入
- 传感器状态是一个二进制传感器(只有「开/关」两态的信号组件,这里表示漏水与否),Home Assistant 能直接拿它做自动化
- 同一套配置换个房间、换个探头就能复用
整套 ESPHome 水浸传感器配置加起来不到 20 行 YAML。
准备工作:物料与接线
购买清单
| 名称 | 作用 | 预估价格区间 |
|---|---|---|
| ESP8266 NodeMCU v2 开发板 | 主控,负责 WiFi 通信与逻辑 | 10~15 元 |
| 水浸传感器模块(带 D0 数字输出) | 探头感知水,D0 输出高/低电平 | 5~10 元 |
| 有源蜂鸣器(3.3V) | 本地声音告警,通电即响 | 3~5 元 |
| 杜邦线 + 小面包板、5V/1A 电源 | 连接与供电 | 5~10 元 |
买传感器认准「带 D0 数字输出」:只有模拟口(A0)的模块需要比较器电路才能判断干湿,不适合这种直接接 GPIO 的方案。
如何接线不短路
传感器三根线,面包板插接即可:
- 传感器 5V → 开发板 5V(按模块标注来)
- 传感器 GND → 开发板 G
- 传感器 D0 → D2(即 GPIO4)
蜂鸣器三根线:V+ → 3V3,GND → G,信号脚 → D1(即 GPIO5)。引脚要避开 D0/D3(GPIO0/GPIO2),它们参与 ESP8266 启动流程,外接负载可能导致开发板起不来。各引脚的详细说明见 GPIO 组件文档。
搭建过程:四段 YAML
安装 esphome 命令行工具后运行esphome dashboard,在网页端新建设备,按下面四段粘贴配置。
第一步:设备身份与 WiFi
esphome: name: leak-detector esp8266: board: nodemcuv2 wifi: ssid: "HomeWiFi" password: "你的WiFi密码" ap: # 连不上网时,设备自动变成热点,方便排查 ssid: "leak-detector-fallback"第二步:漏水传感器,防误触发的关键在 filters
binary_sensor: - platform: gpio pin: number: GPIO4 # D2,接传感器 D0 mode: INPUT_PULLUP # 内部上拉,不用外接电阻 name: "Kitchen Leak" device_class: moisture # HA 会按「干湿」类传感器处理 filters: - delayed_on: 1s # 连续 1 秒有水才上报,滤掉溅水 - delayed_off: 10s # 持续干燥 10 秒才判恢复filters 是 Binary Sensor 内置的去抖过滤,逻辑见 filter 源码。
刷入固件后先做一次验证:把探头蘸水。状态没变化(一直是 off)说明模块输出逻辑相反,在 pin 下加一行inverted: true再部署一次即可。
第三步:让蜂鸣器只在漏水时响
switch: - platform: gpio pin: GPIO5 # D1 name: "Alarm Buzzer" id: alarm_buzzer再给第二步的 binary_sensor 补上两个动作:
on_state: # 传感器变 on(检测到漏水)时触发 - switch.turn_on: alarm_buzzer - delay: 10s - switch.turn_off: alarm_buzzer on_release: # 漏水消除后触发,收尾 - switch.turn_off: alarm_buzzer验证时如果状态变了但蜂鸣器不响,先拿 3.3V 直接给蜂鸣器通电试一下:不响说明是坏的或 5V 起鸣的型号,换 3V~5V 工作的有源蜂鸣器;再检查 D1 焊接或插接是否松动。
第四步:Home Assistant 漏水告警
设备接入 MQTT 后,把事件交给 Home Assistant 就能推送到手机:
mqtt: broker: "192.168.1.100" # 你的 HA 里 MQTT 服务地址在 Home Assistant 里建一条自动化:触发条件选binary_sensor.kitchen_leak变 on,动作选「发送手机推送」。这一步完成后,人在外面也能收到通知。
不灵敏或误报怎么调
| 现象 | 调整 |
|---|---|
| 偶尔误报 | delayed_on从 1s 加到 2~3s |
| 潮湿环境长期漂移 | 裁掉传感器外围电路板只留金属探头,非探头侧贴防水胶布 |
| 恢复太慢 | delayed_off调小到 5s |
实际跑起来是什么样
刷机加调参约一个半小时。日常状态下设备静默工作,Home Assistant 里能看到一个「Kitchen Leak」开关状态实体;探头一沾水,约 1 秒后蜂鸣器响 10 秒,手机推送同时到达;擦干后状态按delayed_off延时复位。断电恢复后蜂鸣器默认不响,不会半夜误鸣。
扩展思路
- 多房间:同一份 YAML 当模板,改名字和引脚逐间部署,HA 里把各点位收进一张仪表盘卡片;配置多时可用 packages 机制把每间房拆成单独文件再
!include - 电池供电:想进一步省电可研究 deep_sleep 机制,周期性唤醒采样,代价是告警会延迟
- 记录趋势:水浸状态本身只有两态,若想在 HA 里做历史分析和趋势图,可以另加一个模拟量传感器做辅助参考
本文配置兼容 ESPHome 2024.x 及以上版本(平台块使用新的esp8266:顶层写法),换用 ESP32、BK72xx 等平台时替换为对应平台块,并按该板型文档选择引脚即可。
【免费下载链接】esphomeESPHome is a system to control your ESP32, ESP8266, BK72xx, RP2040 by simple yet powerful configuration files and control them remotely through Home Automation systems.项目地址: https://gitcode.com/GitHub_Trending/es/esphome
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考