GPIO 开关
gpio 开关平台允许你将节点上的任何引脚用作开关。例如,你可以将一个继电器连接到 GPIO 引脚并通过该平台控制它。
# Example configuration entryswitch: - platform: gpio pin: GPIOXX name: "Living Room Dehumidifier"-
pin(必填,Pin Schema):用于开关的 GPIO 引脚。
-
interlock(可选,列表):一组互锁的其他 GPIO 开关列表。参见 互锁。
-
interlock_wait_time(可选,Time):对于互锁模式,设置在其他互锁组项目被禁用后 等待多长时间再重新激活。 对于电机来说非常有用,因为立即反方向启动可能会引发问题。
-
Switch 中的所有其他选项。
低电平有效开关
Section titled “低电平有效开关”要创建一个低电平有效开关(默认关闭的开关),请使用 Pin Schema:
# Example configuration entryswitch: - platform: gpio pin: number: GPIOXX inverted: true要创建点动开关,例如短暂切换引脚状态的开关,你可以使用
on_turn_on 触发器。
以下示例使用单个继电器来激活遥控器按钮。该按钮只能 启动或停止电机。按钮或遥控器本身无法知道它是 打开还是关闭了门。继电器模拟按钮按下 500ms。
# Example configuration entryswitch: - platform: gpio pin: GPIOXX id: relay name: "Gate Remote" icon: "mdi:gate" on_turn_on: - delay: 500ms - switch.turn_off: relay
在某些情况下,必须确保两个输出永远不会同时处于活动状态。
ESPHome 具有一个名为互锁的功能,可以防止两个 GPIO 开关同时处于活动状态。
只需为”互锁组”中的 每个开关 设置一个 interlock 选项,
并列出该组中的所有开关。
# Example configuration entry# Prevent relay #1 and relay #2 from being activated at the same time.switch: - platform: gpio pin: GPIOXX name: "Relay #1" id: relay1 interlock: [relay2]
- platform: gpio pin: GPIOXX name: "Relay #2" id: relay2 interlock: [relay1]或者使用一些 YAML 锚点可以进一步简化配置:
# Example configuration entryswitch: - platform: gpio # etc id: relay1 interlock: &interlock_group [relay1, relay2] - platform: gpio # etc id: relay2 interlock: *interlock_groupWARNING
这些是软件互锁。因此,软件 bug(始终有可能发生)仍可能 同时激活两个开关。同样,在重置时(在 ESPHome 的代码运行之前), 继电器 GPIO 引脚可能处于上拉激活状态,因此继电器可能在 ESPHome 能够手动 停用它们之前就已经激活。
因此,强烈建议使用硬件互锁(如 SPDT 型继电器)来确保 两个 GPIO 永远不会同时处于活动状态。
另请参见 interlock_wait_time,用于在激活开关之前让互锁组等待一段时间。