按钮组件
NOTE
要将物理按钮连接到 ESPHome,请参见 GPIO 二进制传感器。
ESPHome 支持用于在 Home Assistant 中创建按钮实体的组件。按钮实体在 ESPHome 中表示为 一个无状态的瞬间开关,可以在 Home Assistant 中通过 UI 或自动化触发。
NOTE
需要 Home Assistant Core 2021.12 或更高版本,ESPHome 按钮实体才能正常工作。
基础按钮配置
Section titled “基础按钮配置”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 选项:
- MQTT 组件 中的所有其他选项。
on_press
Section titled “on_press”按下按钮时将触发此自动化。
button: - platform: template # ... on_press: then: - logger.log: Button Pressed配置变量:请参见 Automation。
button.press 动作
Section titled “button.press 动作”这是一个用于在自动化中按下按钮的动作。
- button.press: my_button配置变量:
- id (必填,ID):要设置的按钮的 ID。
NOTE
按钮设计用于从 Home Assistant 触发设备上的动作,并且具有从 Home Assistant 到 ESPHome 的单向流。如果你使用此动作按下按钮,Home Assistant 中不会触发按钮按下事件。如果你想在 Home Assistant 中触发自动化,应改用 Home Assistant 事件。
lambda 调用
Section titled “lambda 调用”在 lambdas 中,可以按下按钮。
press(): 按下按钮。
// 在 lambda 中,按下按钮。 id(my_button).press();