事件

Home Assistant 的核心是事件总线。事件总线允许任何集成触发或侦听事件。

事件和状态变化

所有 entities实体表示 Home Assistant 中的传感器、执行器或功能。实体用于监控物理属性或控制其他实体。实体通常是设备或服务的一部分。 [Learn more] 都会生成状态变化事件。每当 state状态保存实体的感兴趣信息,例如灯是开还是关。每个实体只有一个状态,并且状态一次只保存一个值。但是,实体可以存储与该状态相关的属性,例如亮度、颜色或测量单位。 [Learn more] 变化时,就会生成一个状态变化事件。状态变化事件只是事件总线上的一种事件类型,但还有其他类型的事件,例如用于协调各种集成的 内置事件

状态变化事件与事件实体

状态变化事件不应与 事件实体 混淆。事件实体是一种特定类型的实体,它本身会生成事件状态变化,与其他实体相同。

任何状态变化都会在事件总线上以 state_changed 事件的形式宣布,包含实体的先前状态和新状态。

常见字段

所有事件共享这些基本字段。

字段 描述
event_type 事件的类型。例如:call_service
origin 事件的来源。REMOTE(来自 API,例如 Webhook)或 LOCAL(其他所有情况)。
time_fired 事件被触发的时间。例如:2022-01-28T12:19:53.736380+00:00
context 包含 上下文 的字典。例如:{ 'id': '123', "parent_id": null, 'user_id': 'abc'}

此外,所有事件都包含一个包含事件特定信息的 data 字典。以下是这些信息的描述。

内置事件 (核心)

call_service

当执行服务操作时触发此事件。

字段 描述
domain 操作的域。例如:light
service 执行的服务操作。例如:turn_on
service_data 包含调用参数的字典。例如:{ 'brightness': 120 }
service_call_id 唯一调用 ID 的字符串。例如:23123-4

component_loaded

当加载并初始化新的集成时触发此事件。

请注意,虽然此事件会在 Home Assistant 启动时针对每个加载的集成触发,但 Home Assistant 的自动化引擎最后启动。因此,此事件不能用于在启动时运行自动化,因为它会错过这些事件。

字段 描述
component 刚刚初始化的集成的域。例如:light

core_config_updated

当核心配置更新时触发此事件,例如,当位置发生变化时。

不会包含额外的数据。

data_entry_flow_progressed

当数据输入流发生变化时触发此事件,前端用于重新加载流状态。

字段 描述
handler 流处理程序。
flow_id 流的标识符。

homeassistant_start, homeassistant_started

在 Home Assistant 启动期间触发这些事件,顺序如下:

  1. homeassistant_start
  2. homeassistant_started

这些事件不会包含额外的数据。

如果您想在 Home Assistant 启动事件上触发自动化,我们建议使用特殊的 Home Assistant 触发器,而不是侦听这些事件。

homeassistant_stop, homeassistant_final_write, homeassistant_close

在 Home Assistant 关闭期间触发这些事件,顺序如下:

  1. homeassistant_stop
  2. homeassistant_final_write
  3. homeassistant_close

这些事件不会包含额外的数据。

请注意,homeassistant_final_writehomeassistant_close 不能与自动化一起使用,因为在触发这些事件时,自动化引擎可能已经停止。

如果您想在 Home Assistant 停止事件上触发自动化,我们建议使用特殊的 Home Assistant 触发器,而不是侦听这些事件。

logbook_entry

字段 描述
name 实体的名称。例如:厨房灯
message 消息。例如:被打开了
domain 可选,条目的域。例如:light
entity_id 可选,被记录的实体的标识符。

service_registered

当在 Home Assistant 中注册新的服务操作时触发此事件。

字段 描述
domain 提供此操作的集成的域。例如:light
service 服务操作的名称。例如:turn_on

service_removed

当从 Home Assistant 中删除服务操作时触发此事件。

字段 描述
domain 提供此操作的集成的域。例如:light
service 服务操作的名称。例如:turn_on

state_changed

当状态发生变化时触发此事件。它包含实体标识符和实体的 new_stateold_state,具体为 状态对象

字段 描述
entity_id 已更改的实体的标识符。例如:light.kitchen
old_state 状态更改前实体的先前状态。如果状态是第一次设置,则省略。
new_state 实体的新状态。如果状态已被移除,则省略。

themes_updated

当设置或重新加载主题后触发此事件。不会包含额外的数据。

user_added

当添加用户时触发此事件。

字段 描述
user_id 新用户的标识符。

user_removed

当删除用户时触发此事件。

字段 描述
user_id 被删除用户的标识符。

内置事件(默认集成)

automation_reloaded

集成:automation

当自动化被重新加载,因此可能已发生更改时触发此事件。

此事件不会包含额外的数据。

automation_triggered

集成:automation

当自动化被触发时,触发此事件。

字段 描述
name 自动化的名称。
entity_id 自动化的标识符。

scene_reloaded

集成:homeassistant

当场景被重新加载,因此可能已发生更改时触发此事件。

此事件不会包含额外的数据。

script_started

集成:script

当脚本运行时触发此事件。脚本可以由用户调用或由自动化触发。由于所有相关事件将共享与此事件相同的上下文,因此可以追踪所产生的变化。

字段 描述
name 运行的脚本名称。
entity_id 运行的脚本的标识符。