二十六 Home Assistant 实体-事件

事件实体

事件是在某些事情发生时发出的信号,例如,当用户按下门铃等物理按钮或遥控器上的按钮时。事件实体捕获物理世界中的这些事件,并在Home Assistant中将其作为实体提供。

事件实体是无状态的,这意味着您不必维护状态。相反,当物理世界中发生某些事情时,您可以触发一个事件。Home Assistant将跟踪最后发出的事件,并将其显示为实体的当前状态。

实体的主要状态是最后一个事件发出的时间戳,此外,还会跟踪事件的类型以及事件附带的可选额外状态数据。

事件实体派生自 homeassistant.components.event.EventEntity

属性

  • 提示:属性应始终仅从内存返回信息,不应进行I/O操作(如网络请求)。请实现 update()async_update() 来获取数据。
名称类型默认值描述
event_typeslist[str]必需此实体可以触发的可能事件类型列表。

其他所有实体共有的属性,如 device_classiconname 等也适用。

触发事件

事件实体与其他实体略有不同。Home Assistant管理状态,但集成负责触发事件。这是通过在事件实体上调用 _trigger_event 方法来完成的。

此方法将事件类型作为第一个参数,可选的额外状态数据作为第二个参数。

class MyEvent(EventEntity):
    _attr_device_class = EventDeviceClass.BUTTON
    _attr_event_types = ["single_press", "double_press"]

    @callback
    def _async_handle_event(self, event: str) -> None:
        """处理演示按钮事件。"""
        self._trigger_event(event, {"extra_data": 123})
        self.async_write_ha_state()

    async def async_added_to_hass(self) -> None:
        """向设备API / 库注册回调。"""
        my_device_api.listen(self._async_handle_event)

只有在 event_types 属性中定义的事件类型才能被触发。如果触发了未在 event_types 属性中定义的事件类型,将引发 ValueError

  • 提示:当实体从Home Assistant中移除时,一定要注销任何回调。

可用设备类

可选地指定它是什么类型的实体。

常量描述
EventDeviceClass.BUTTON遥控器上的按钮被按下。
EventDeviceClass.DOORBELL专门用于用作门铃的按钮。
EventDeviceClass.MOTION用于运动传感器检测到的运动事件。

总结

本文档介绍了Home Assistant中的事件实体(Event Entity)相关内容,包括其概念(用于捕获物理世界中的事件信号)、无状态特性(由Home Assistant管理状态,集成负责触发事件)、属性(如事件类型列表)、触发事件的方法(通过 _trigger_event 方法,且只能触发定义在 event_types 中的事件类型)以及可用的设备类(如按钮、门铃、运动传感器等类型),为开发人员在Home Assistant中处理事件相关的集成提供了指导和规范。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值