跳转到内容

Button 组件

NOTE

如需将物理按钮连接到 ESPHome,请参阅 GPIO 二进制传感器

ESPHome 支持创建 Home Assistant 中按钮实体的组件。按钮实体在 ESPHome 中表示为无状态的瞬时开关,可以通过 Home Assistant 的 UI 或自动化进行触发。

NOTE

ESPHome 按钮实体需要 Home Assistant Core 2021.12 或更高版本才能正常工作。

ESPHome 中的所有按钮都有一个名称和可选的图标。

# 示例按钮配置
button:
- platform: ...
name: Livingroom Lazy Mood
id: my_button
# 可选变量:
icon: "mdi:emoticon-outline"
on_press:
- logger.log: "Button pressed"

配置变量:

  • id (可选, string): 手动指定用于代码生成的 ID。idname 必须至少指定其中一个。
  • name (可选, string): 按钮的名称。idname 必须至少指定其中一个。

NOTE

如果您为设备设置了 friendly_name,并且希望按钮使用该名称,可以设置 name: None

  • icon (可选, icon): 手动设置前端界面中按钮使用的图标。

  • internal (可选, boolean): 将此组件标记为内部组件。内部组件不会暴露给前端(如 Home Assistant)。仅指定 id 而不指定 name 会隐式地将此选项设为 true。

  • disabled_by_default (可选, boolean): 如果为 true,则此实体不应添加到任何客户端的前端(通常是 Home Assistant),除非用户手动启用(通过 Home Assistant UI)。

  • entity_category (可选, string): 实体的类别。 可用选项列表请参阅 https://developers.home-assistant.io/docs/core/entity/#generic-properties。 设置为 "" 可移除默认实体类别。

  • device_class (可选, string): 按钮的设备类别。 可用选项列表请参阅 https://www.home-assistant.io/integrations/button/#device-class

  • 如果启用了 Webserver 并选择了版本 3,则支持 Webserver 组件的所有其他选项。请参阅 Webserver 版本 3

自动化:

  • on_press (可选, Automation): 按钮按下时执行的自动化。请参阅 on_press

MQTT 选项:

此自动化在按钮被按下时触发。

button:
- platform: template
# ...
on_press:
then:
- logger.log: Button Pressed

配置变量:请参阅 自动化

这是一个在自动化中按下按钮的动作

- button.press: my_button

配置变量:

  • id (必填, ID): 要设置的按钮 ID。

NOTE

按钮设计用于从 Home Assistant 触发设备上的操作,具有从 Home Assistant 到 ESPHome 的单向流程。如果您使用此动作按下按钮,不会在 Home Assistant 中触发按钮按下事件。如果您想在 Home Assistant 中触发自动化,应该使用 Home Assistant 事件代替。

lambda 中,您可以按下按钮。

  • press() : 按下按钮。
// 在 lambda 中按下按钮。
id(my_button).press();