尧图精选

ESPHome 漏水检测实战:40 元做出本地加远程双通道告警,两小时接线完工

🕒 发布时间:2026/9/14 2:18:24 📁 来源:尧图网络
ESPHome 漏水检测实战40 元做出本地加远程双通道告警两小时接线完工【免费下载链接】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凌晨两点手机收到 Home Assistant 推来的 ESPHome 漏水检测告警「厨房检测到漏水」。我看了眼摄像头画面是洗衣机排水管渗水了。整套系统就是一块 NodeMCU、一颗漏水探头、一只蜂鸣器硬件不到 50 元零代码从拆箱到第一次告警成功大概两小时。装好之后它再不用人管水渗出来本地蜂鸣器响手机收到推送就算断网现场至少还能听见动静。三层拆解ESPHome 漏水检测系统到底在干什么这套系统没什么神秘成分。探头干湿与否本质只是一根线的电平变化ESPHome 这边把它分成三层各干各的事感知层探头相当于一个水当钥匙的开关。干燥时输出线是高电平被水浸到就被拉低。配置里它就是一个gpio类型的二进制传感器组件实现在 esphome/components/binary_sensor/标上device_class: moisture之后前端会显示正确的图标和状态语义。决策层不写 if-else交给规则引擎。状态过滤delayed_on/delayed_off加上 on_state 动作就是全部判断逻辑规则语法定义在 esphome/automation.py。你只负责声明变 ON 做什么、回 OFF 做什么。执行层两条独立通道。本地用 gpio 开关驱动蜂鸣器远程用mqtt.publish把事件推到主题上。一条通道挂了另一条还在。漏水检测物料清单必须 3 件可选 2 件先说结论别囤货下面这些够用。必须件角色物料替代方案参考价大脑NodeMCU ESP8266nodemcuv2任意带 WiFi 的 ESP32约 20 元感知数字漏水探头带 DO 数字输出FC-28 比较器模块约 8 元执行5V 有源蜂鸣器带三极管的蜂鸣器模块约 4 元可选件角色物料替代方案参考价供电5V/1A USB 电源18650 充电板需配低功耗约 10 元扩展额外从节点多块独立板 ESP-NOW约 15 元/个探头一定挑带数字输出的有 DO 引脚那种它是现成的开关信号。纯模拟量的裸探头要多接比较器才能判断干湿折腾程度完全不对等。 NodeMCU 接线与烧录从裸板到上线四步走顺序固定接线、烧录、联网、验证。每步都有明确的通过标准过了再进下一步。接线探头对 GPIO14蜂鸣器对 GPIO5探头 VCC、GND、DO 三根线分别接开发板的 3V3、GND、GPIO14蜂鸣器正极接 5V负极接 GPIO5。有源蜂鸣器工作时电流大约 20 毫安GPIO 直接驱动没有压力不用额外加三极管。注意这类探头的 DO 普遍是干时高、湿时低所以配置里要加inverted: true后面会看到。烧录主配置一次写齐下面这段定义设备名、板型、WiFi 和 MQTT 服务器还留了一个断网时自动回退用的 APesphome: name: leak-detector esp8266: board: nodemcuv2 wifi: ssid: YourWiFi password: YourPassword ap: # 断网时自动回退成热点方便现场调试 ssid: leak-fallback mqtt: broker: 192.168.1.100 # 换成你家的 broker 地址命令行侧就一句pip install esphome之后每次改配置esphome run leak.yaml一条命令完成编译、烧录和重启。联网日志里看到两条关键信息烧完板子自动重启连网。跑一下esphome logs leak-detector看到 WiFi 连接成功、MQTT broker 握手成功这两条就算通过。此时 Home Assistant 里应该能看到设备本身探头和蜂鸣器实体在下一步定义。上线验证拿水试一下这段把探头声明为水浸类二进制传感器、蜂鸣器声明为开关500ms 和 1 秒的延迟过滤专门防误报和前面的配置在同一个文件里改完重烧即可binary_sensor: - platform: gpio name: 厨房漏水 pin: number: GPIO14 mode: INPUT_PULLUP # 用内部上拉外面不用再接电阻 inverted: true # 探头湿时拉低取反后 ON 就是检测到水 device_class: moisture filters: - delayed_on: 500ms # 持续湿 500ms 才上报滤掉飞溅 - delayed_off: 1s # 持续干 1 秒才恢复防边缘抖动 switch: - platform: gpio name: Alarm Buzzer id: alarm_buzzer pin: GPIO5验证很简单探头泡水几秒传感器变 ON取出等约一秒回到 OFF。懒得接水的话拿杜邦线把 DO 和 GND 短一下效果等同检测到水。两个方向都通就算上线了。蜂鸣器本地告警怎么写两级策略一次配完告警策略分两级触发逻辑用白话说就是如果传感器是 ON就做这三件事如果回到 OFF就把蜂鸣器关掉。本地和远程是并行发出的不互相等待on_state: - switch.turn_on: alarm_buzzer # 第一级本地告警立刻出声 - mqtt.publish: topic: home/alerts/water_leak payload: 厨房检测到漏水 # 第二级远程推送手机收到 - logger.log: 检测到水本地远程告警已触发 on_release: - switch.turn_off: alarm_buzzer为什么本地优先推送依赖网络而漏水和断电断网经常结伴出现最坏情况下只有蜂鸣器还活着。想要更吵可以在 on_state 里加一段循环蜂鸣的 repeat 动作我这边常亮常响已经够用了就不展开了。⚠️ 漏水检测踩坑实录我实际翻过的三个车这三个坑文档里都不写每个都花了点时间才找出来。抖动误报。我一开始没加任何过滤水花溅到探头上状态一分钟翻四次Home Assistant 通知刷得我烦。后来发现 ESPHome 的二进制传感器自带 delayed_on 过滤加上 500ms 之后毛刺全没了。如果你装在淋浴区那种潮湿位置可以直接加到 1s报警慢一点不亏。供电不稳。我最早用了一个杂牌 5V 口同时给蜂鸣器和主控供电蜂鸣器一响日志里就出现 brownout 复位——WiFi 模块发射瞬间电流大电压被拉垮了。后来换成 5V/1A 的独立电源再没出过问题。想省钱的至少在主控电源两端并一颗 100uF 电容。断网兜底。我最初以为断网时推送还能靠缓存发出去显然不能。后来加了一个 status 类型的二进制传感器设备状态变 OFF 时本地蜂鸣响 60 秒。逻辑就是说不上话至少让现场的人听见。注意 status 在开机组件未就绪时也会是 OFF这段逻辑开机时会触发一次可以忍也可以加一个运行时长超过 10 分钟才允许触发的条件binary_sensor: - platform: status name: Device Status on_state: - if: condition: - binary_sensor.is_off: Device Status then: - switch.turn_on: alarm_buzzer # 断网兜底本地告警 - delay: 60s - switch.turn_off: alarm_buzzer进阶从 1 个点扩到全屋一个点只是起点演进路径三步不用一次做完单板多探头厨房和洗衣机挨得近就让一块板带两颗探头配置里多写一个 gpio 二进制传感器换个引脚号即可。配置按房间分包文件越来越长之后用packages拆成每房间一个文件主配置只负责引用改哪里都不会互相打架packages: kitchen: !include kitchen_leak.yaml bathroom: !include bathroom_leak.yaml多板无线组网点位离得远了就多加几块板板间走 ESP-NOW 协议或者干脆每块板各自上报 MQTT。再往上想电池供电就得上低功耗加深度睡眠定期唤醒采样那是另一个话题此处点到为止。收束又是凌晨厨房的灯灭了。但我清楚那根排水管再渗一次蜂鸣器会比手机响得更早。本文配置基于 ESPHome 2026.10 代码库验证所用语法向下兼容 2023.12 及以上版本。【免费下载链接】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),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →