按钮实体
按钮实体是一种可以向设备或服务触发事件/操作,但从Home Assistant的角度来看是无状态的实体。它可以类比为一个真实的瞬时开关、按钮或其他形式的无状态开关。然而,它并不适合用于实现实际的物理按钮;按钮实体的唯一目的是在Home Assistant内部提供一个虚拟按钮。
一个开关按钮实体派生自 homeassistant.components.button.ButtonEntity
,可用于控制设备功能,例如(但不限于):
- 升级固件
- 重启设备
- 冲泡一杯咖啡
- 重置某些内容(如计数器、过滤器使用情况)
如果你想表示可以打开和关闭的东西(因此具有实际状态),则应该使用开关实体。如果你想在Home Assistant中集成一个真实的、物理的、无状态的按钮设备,可以通过触发自定义事件来实现。实体按钮实体不适用于这些情况。
属性
由于此集成是无状态的,它不为自身提供任何特定属性。其他所有实体共有的属性,如 device_class
、icon
、name
等仍然适用。
方法
按下
press
方法可用于向设备或服务触发一个动作。当用户按下按钮或调用按下按钮的服务时,Home Assistant会调用此方法。
class MyButton(ButtonEntity):
# 实现以下方法之一
def press(self) -> None:
"""处理按钮按下。"""
async def async_press(self) -> None:
"""处理按钮按下。"""
可用设备类别
可选地指定它是哪种类型的实体。它可能会映射到谷歌设备类型。
常量 | 描述 |
---|---|
ButtonDeviceClass.IDENTIFY | 按钮实体用于识别设备。 |
ButtonDeviceClass.RESTART | 按钮实体用于重启设备。 |
ButtonDeviceClass.UPDATE | 按钮实体用于更新设备的软件。应避免使用此设备类别,请考虑使用更新实体代替。 |