GPIO 开关
gpio 开关平台允许您使用节点上的任何引脚作为开关。例如,您可以将 Relay 连接到 GPIO 引脚并通过此平台使用它。
# 示例配置条目switch: - platform: gpio pin: GPIOXX name: "Living Room Dehumidifier"-
pin(必填,引脚模式):用于开关的 GPIO 引脚。
-
interlock(可选,列表):互锁组中其他 GPIO 开关的列表。请参阅互锁。
-
interlock_wait_time(可选,时间):对于互锁模式,设置在互锁组中的其他项目被禁用后等待多长时间再重新激活。 对于电机等设备很有用,立即向相反方向开启可能会导致问题。
-
所有其他选项来自 Switch。
低电平有效开关
Section titled “低电平有效开关”要创建低电平有效开关(默认关闭的开关),请使用引脚模式:
# 示例配置条目switch: - platform: gpio pin: number: GPIOXX inverted: true要创建点动开关,例如短暂切换引脚状态的开关,您可以使用 on_turn_on 触发器。
这是一个使用单个 Relay 来激活遥控器按钮的示例。按钮只能启动或停止大门的电机。按钮或遥控器本身无法知道它是打开还是关闭大门。Relay 模拟按钮按下 500ms。
# 示例配置条目switch: - platform: gpio pin: GPIOXX id: relay name: "Gate Remote" icon: "mdi:gate" on_turn_on: - delay: 500ms - switch.turn_off: relay
在某些情况下,需要确保两个输出永远不会同时激活。
ESPHome 有一个功能可以防止两个 GPIO 开关同时激活,称为互锁。只需给”互锁组”中的每个开关一个 interlock 选项,
其中包含组中所有开关的列表。
# 示例配置条目# 防止 relay #1 和 relay #2 同时被激活。switch: - platform: gpio pin: GPIOXX name: "Relay #1" id: relay1 interlock: [relay2]
- platform: gpio pin: GPIOXX name: "Relay #2" id: relay2 interlock: [relay1]或使用一些 YAML 锚点,您可以进一步简化配置:
# 示例配置条目switch: - platform: gpio # 等等 id: relay1 interlock: &interlock_group [relay1, relay2] - platform: gpio # 等等 id: relay2 interlock: *interlock_groupWARNING
这些是软件互锁。因此,软件错误(这总是可能发生的)仍然可能同时激活两个开关。同样,在复位时(在任何 ESPHome 代码运行之前), Relay 的 GPIO 引脚可能有上拉电阻处于激活状态,因此 Relay 可能在 ESPHome 能够手动禁用它们之前就已经激活。
因此,强烈建议使用硬件互锁(如 SPDT 型 Relay)来确保两个 GPIO 永远不会同时激活。
另请参阅 interlock_wait_time 以使互锁组在激活开关之前等待一定时间。