跳转到内容

按钮组件

NOTE

要将物理按钮连接到 ESPHome,请参见 GPIO 二进制传感器。

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

NOTE

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

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

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

配置变量:

  • id (可选,字符串):手动指定用于代码生成的 ID。id 和 name 至少指定一个。
  • name (可选,字符串):按钮的名称。id 和 name 至少指定一个。

NOTE

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

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

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

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

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

  • device_class (可选,字符串):按钮的设备类别。 可用选项列表请参见 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

配置变量:请参见 Automation。

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

- button.press: my_button

配置变量:

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

NOTE

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

在 lambdas 中,可以按下按钮。

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