HA文档 目录

  1. 首页
  2. HA文档
  3. HA文档
  4. 核心机制
  5. 事件(event)

事件(event)

这篇文章是系列文章的第3/8篇:

事件总线是Home Assistant中最核心的机制。组件程序可以在事件总线上触发事件,也可以在事件总线上监听事件(当监听到事件发生时执行相应动作)。

一条被触发的事件,包含事件类型、触发时间、事件附加信息等信息。事件类型代表是什么事件;触发时间是指事件被触发的时间;事件附加信息是一些{KEY:VALUE}格式的信息(专业人士称其为字典结构数据),以表达事件的内容。
比如下面是一条“state_changed”事件类型的事件附加信息(其中包含三部分内容:“状态变化的实体ID”、“变化前的状态属性以及这个状态被设置的时间”,“变化后的状态属性以及新状态被设置的时间”三部分的内容):

在HomeAssitant中,事件是非常灵活的。事件类型可以是任何字符串,事件附加信息可以是任何的字典结构的数据。
为了方便不同的组件之间交互(一个组件可能会监听别的组件程序触发的事件),HomeAssistant预定义了一些事件类型和对应的事件附加信息。

Home assistant预定义了以下事件类型:

    • 事件homeassistant_start
      homeassistant_start事件当所有组件被初始化后被触发。
    • 事件homeassistant_stop
      homeassistant_stop当Home Assistant关闭时被触发。当这个事件发生时,各个组件应当关闭各种打开的连接(网络和文件),释放资源。
    • 事件state_changed
      事件state_changed当实体(entity)状态改变时被触发。state_changed事件附加信息中包含旧的状态和新的状态。其包含的信息为:

      字段 描述
      entity_id 状态改变的实体(entity)的ID。如:light.kitchen
      old_state 状态改变之前的状态。如果是一个新的实体,忽略此字段。
      new_state 状态改变之后的新状态。如果实体从状态机中移除,忽略此字段。
    • 事件time_changed
      事件time_changed被计时器每秒钟触发,其中包含当前时间的信息。

      字段 描述
      Now 当前的UTC时间(世界标准时间)
    • 事件service_registered
      事件service_registered当一个新的服务被注册时触发。其包含的信息:

      字段 描述
      domain 服务所在的域,如:light
      service 可以被调用的服务,如:turn_on
    • 事件call_service
      触发call_service事件用于调用一个服务。

      字段 描述
      domain 服务所在的域,如:light
      service 要被调用的服务,如:turn_on
      service_data 被组织成字典格式的服务调用参数。如:{ ‘brightness’: 120 }
      service_call_id 唯一的调用id,字符串格式。如:23123-4
    • 事件service_executed
      事件service_executed由服务处理程序触发,表示调用的服务已经被执行。

      字段 描述
      service_call_id 服务被调用时输入的唯一调用id,字符串格式。如:23123-4
    • 事件platform_discovered
      事件platform_discovered当自动发现组件(用于网络自动探测发现新的设备)发现一个新平台(platform)时被触发。

      字段 描述
      service 被发现的服务
      discovered 发现的信息,字典(dictionary)格式,如:{ “host”: “192.168.1.10”, “port”: 8889}
      platform 发现的平台,如“xiaomi”
    • 事件component_loaded
      事件component_loaded当一个新的组件(component)加载和初始化完成后被触发。

      字段 描述
      component 被初始化的组件的域。如:light

在HA的web前端中,可以点击下图中红色框的位置,获得系统中被监听的事件,以及每个事件被多少个组件监听(右边);也可以输入事件类型和事件附加信息,手工触发一条事件(中间)。

遇到问题了?快来学习免费在线课程吧,博学老司机在线答疑,找到更多志同道合的HA玩家一起进步

此文不允许转载,如需转载请与BD@hachina.io联系。

以上内容是否对您有帮助? 2 有帮助 0 没帮助