事件
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 启动期间触发这些事件,顺序如下:
homeassistant_start
homeassistant_started
这些事件不会包含额外的数据。
如果您想在 Home Assistant 启动事件上触发自动化,我们建议使用特殊的 Home Assistant 触发器,而不是侦听这些事件。
homeassistant_stop, homeassistant_final_write, homeassistant_close
在 Home Assistant 关闭期间触发这些事件,顺序如下:
homeassistant_stop
homeassistant_final_write
homeassistant_close
这些事件不会包含额外的数据。
请注意,homeassistant_final_write
和 homeassistant_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_state
及 old_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
当场景被重新加载,因此可能已发生更改时触发此事件。
此事件不会包含额外的数据。
script_started
集成:script
当脚本运行时触发此事件。脚本可以由用户调用或由自动化触发。由于所有相关事件将共享与此事件相同的上下文,因此可以追踪所产生的变化。
字段 | 描述 |
---|---|
name |
运行的脚本名称。 |
entity_id |
运行的脚本的标识符。 |