状态和状态对象
设备在 Home Assistant 中以实体表示。实体的状态(例如,灯是开着的,亮度为 50%,颜色为橙色)可以在仪表盘上显示或用于自动化。本页面介绍 状态、状态对象 和 实体状态属性 的概念。
状态与状态对象
在 Home Assistant 中,状态对象是实体在特定时刻的所有属性和状态的当前表示。状态被记录为 状态对象。实体不断跟踪其状态并将其写入状态对象,以便其他实体/模板/前端可以访问它。在示例中——灯是开着的,亮度为 50%,颜色为橙色——on 是灯的实际状态。50% 的亮度和颜色是实体状态属性。
关于状态对象
状态对象表示实体在特定时间点的状态及其属性。所有状态对象都将始终具有实体 ID、状态以及最后更新、最后更改和最后报告的时间戳。
state 前缀表示此信息是状态对象的一部分(与实体相关)。例如,state.state 是实体在给定时间的状态。
关于状态
开发者工具状态页面的截图显示三个处于不同状态(state.state)的灯:on、off 和 unavailable。每个灯都有其自己的实体状态属性,如 supported_color_modes、supported_features。这些属性有自己的状态:supported_color_modes 属性的状态是 color_temp 和 hs,supported_features 属性的状态是 4。
三个灯的不同状态:`on`、`off` 或 `unavailable`。
state.state 是状态对象的核心。状态保存了实体的关键信息。例如,灯是开还是关、当前温度或使用的能量。状态对象存储了与状态相关的 3 个时间戳:last_updated、last_changed 和 last_reported。每个实体恰好有一个状态,状态一次只保存一个值。
关于实体状态属性
状态一次只保存一个值。但是,实体可以在状态对象中存储相关的实体状态属性。例如,灯的状态是 on,相关属性可能是其当前亮度和颜色值。状态变更事件可以用作触发器。当前状态可用于条件。下面的示例显示了三个具有不同实体状态属性的灯。
显示三个具有不同实体状态属性的灯的示例。
实体有一些与其状态无关的属性,例如 friendly_name。有些属性在所有实体上都可用,例如 friendly_name 或 icon。除此之外,每个集成都有自己的属性来表示实体的额外状态数据。例如,灯集成有灯的当前亮度和颜色属性。当属性不可用时,Home Assistant 不会将其写入状态。实体属性是可选的。
使用模板时,属性可以通过其名称访问。例如 state.attributes.assumed_state。
下表列出了可能存在的常见状态属性,具体取决于实体域。
当属性包含空格时,可以这样获取:state_attr('sensor.livingroom', 'Battery numeric')。
上下文
上下文是状态对象和事件中使用的属性。它将动作和状态联系在一起。每当动作或用户交互导致状态更改时,状态对象中会分配一个新的上下文。此上下文将附加到由于更改而发生的所有事件和状态。
示例
-
评估开关entities的
state.last_changed:结果类型:
string,表示日期时间对象,例如
2025-11-11 12:56:10.244125+00:00
-
评估此开关的
state.context.id:结果类型:
string,表示 ID 代码,例如
01K9SF2R36KRV5N4PTC38S6KJ2F
-
评估此开关的
state.context.user_id:结果类型:
string,表示用户 ID 代码,例如01K9SF2R36KRV5N4PTC38SKS4LW6

