给 ESP32 接上电磁阀一份 ESPHome 配置跑通水阀与燃气阀【免费下载链接】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用 ESPHome 控制电磁阀不用写一行 C 代码加一个继电器模块和几行 YAML就能把 ESP32 的 GPIO 变成手机可远程开关的水阀或气阀还能顺手做出定时灌溉与泄漏互锁保护。先看懂控制链路电磁阀是水、气、油路里的开关线圈通电产生磁力顶开阀芯通路就开了。麻烦在于线圈通电瞬间通常要 200mA 以上而 ESP32 单个 GPIO 只能安全驱动约 20mA直接带不动。所以中间垫一层继电器模块——ESP32 只负责给继电器信号继电器触点再去闭合电磁阀那条大电流回路。整条链路就三层GPIO → 继电器 → 电磁阀。硬件清单ESP32 开发板如 NodeMCU-32S直流电磁阀5V 或 12V 按场景选单路继电器模块如 SRD-05VDC-SL-C杜邦线12V 阀另配电源接线关系ESP32 继电器模块 电磁阀 GPIO2 ---- IN1 5V ---- VCC GND ---- GND COM ---- 电源正极 NO ---- 电磁阀正极 GND ---- 电源负极记住一句话COM 永远接电源侧NO 是继电器吸合后的输出端电磁阀跨在 NO 与负极之间。5 分钟跑通第一个开关下面是最小可用配置保存为solenoide_valve.yaml。esphome、wifi、api、ota 四段是设备基础设置真正干活的是 switch 部分esphome: name: solenoide-valve platform: ESP32 board: nodemcu-32s wifi: ssid: your_wifi_ssid password: your_wifi_password api: ota: switch: - platform: gpio name: Water Valve pin: GPIO2 id: water_valve inverted: false restore_mode: RESTORE_DEFAULT_OFF写之前先想清楚三个参数inverted部分继电器模块是低电平有效。如果 Home Assistant 里开阀门反而不开改成true。restore_mode掉电后阀的状态。水路建议RESTORE_DEFAULT_OFF断电即关最安全。id设备内引用名后面写脚本和联动时直接用它不用再按名字找。刷入后HA 里会多一个可远程开关的开关实体点一下就能听到继电器吸合声。定时灌溉、互锁与泄漏急停单个开关只是起点真实安装建议再补三样东西。第一样定时灌溉。用 script 声明一串动作一句话概括开阀、等 30 秒、关阀mode: single防止重复触发叠加执行script: - id: water_timer mode: single then: - switch.turn_on: water_valve - delay: 30s - switch.turn_off: water_valve第二样水电气路互锁。同一块板上既有水阀又有气阀时用 gpio switch 的interlock声明互斥对象interlock_wait_time是切换等待时间。源码逻辑在写状态时执行先关掉所有互锁对象等待结束后再真正输出电平实现在 gpio_switch.cppswitch: - platform: gpio name: Gas Valve pin: GPIO4 id: gas_valve interlock: [water_valve] interlock_wait_time: 500ms第三样泄漏急停。把燃气探测器的输出接一个 GPIO置位瞬间立即关阀binary_sensor: - platform: gpio name: Leak Sensor pin: GPIO12 device_class: gas on_press: then: - switch.turn_off: gas_valve如果想在关阀同时给手机推消息可在then里追加一个homeassistant.service动作调用通知服务。switch 与 binary_sensor 的完整配置项分别在 esphome/components/switch/init.py 和 esphome/components/binary_sensor/init.py 中定义esphome/components/script/ 目录下能看到 script 的所有模式。switch 不够用时valve 实体switch 是 0/1 概念电磁阀的开或关完全够用。但如果你的阀支持比例控制0~10V 或带位置反馈更合适的载体是 ESPHome 的 valve 实体它自带position0~100 的位置量、on_open/on_closed触发器以及valve.open/valve.close/valve.stop动作还支持device_class: water或gas在 HA 里会渲染成带位置滑块的实体。需要说明当前仓库的 esphome/components/valve/ 只提供框架尚未内置面向具体电磁阀的 platform通断式电磁阀直接用 switch 即可valve 留给比例阀和自研平台扩展。故障排查清单阀不动作按顺序查供电电压是否匹配阀的标称电压COM 与 NO 是否接反GPIO 编号与杜邦线是否一致继电器低电平有效的话尝试inverted: true。启动日志里dump_config会打印实际绑定的引脚可对照接线核对。控制延迟或时好时坏先查电源再查网络。12V/200mA 的阀从模块 5V 脚取电配个劣质 USB 头容易拉低电压导致吸合无力给电磁阀单独供电最稳。信号弱的节点适当调大传感器类组件的update_interval也能减少不必要的流量。掉电后阀门状态不对是restore_mode没设好。气路建议ALWAYS_OFF每次上电强制关阀用安全换一点便利。从接线到第一份 YAML你只做了两件事让 GPIO 驱动继电器再用配置声明怎么驱动。后续无论联动、定时还是急停都是同一个模式——把动作写进 YAML 而已。想深入某个组件的完整配置项直接翻仓库esphome/components/下对应目录场景踩坑也欢迎到 ESPHome 社区发帖交流。【免费下载链接】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),仅供参考