Button 组件
NOTE
如需将物理按钮连接到 ESPHome,请参阅 GPIO 二进制传感器。
ESPHome 支持创建 Home Assistant 中按钮实体的组件。按钮实体在 ESPHome 中表示为无状态的瞬时开关,可以通过 Home Assistant 的 UI 或自动化进行触发。
NOTE
ESPHome 按钮实体需要 Home Assistant Core 2021.12 或更高版本才能正常工作。
按钮基础配置
Section titled “按钮基础配置”ESPHome 中的所有按钮都有一个名称和可选的图标。
# 示例按钮配置button: - platform: ... name: Livingroom Lazy Mood id: my_button
# 可选变量: icon: "mdi:emoticon-outline" on_press: - logger.log: "Button pressed"配置变量:
- id (可选, string): 手动指定用于代码生成的 ID。id 和 name 必须至少指定其中一个。
- name (可选, string): 按钮的名称。id 和 name 必须至少指定其中一个。
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 选项:
- 来自 MQTT 组件的所有其他选项。
on_press
Section titled “on_press”此自动化在按钮被按下时触发。
button: - platform: template # ... on_press: then: - logger.log: Button Pressed配置变量:请参阅 自动化。
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 调用”在 lambda 中,您可以按下按钮。
press(): 按下按钮。
// 在 lambda 中按下按钮。 id(my_button).press();