状态和状态对象

设备在Home Assistant中被表示为entities实体表示 Home Assistant 中的传感器、执行器或功能。实体用于监控物理属性或控制其他实体。实体通常是设备或服务的一部分。 [Learn more]。实体的状态(例如,灯是否开着,亮度为50%且为橙色)可以在仪表板上显示或用于自动化。本页面探讨了概念_状态_、状态对象_和_实体状态属性

状态与状态对象

在Home Assistant中,状态对象是某一时刻entity实体表示 Home Assistant 中的传感器、执行器或功能。实体用于监控物理属性或控制其他实体。实体通常是设备或服务的一部分。 [Learn more]的当前表现形式,包含其所有属性。此状态记录为_状态对象_。实体不断跟踪其状态并将其写入状态对象,以便其他实体/模板/前端可以访问。在这个例子中——灯是开着的,亮度为50%且为橙色——_开_是灯的实际状态。50%的亮度和颜色是实体状态属性。

关于状态对象

状态对象表示特定时间点实体及其属性的状态。所有状态对象始终会有一个实体ID、一个状态,以及最后更新时间、最后更改时间和最后报告时间的时间戳。 state前缀表示此信息是状态对象的一部分(与实体相关)。例如,state.state是在特定时间的实体状态。

字段 描述
state.state 当前实体状态的字符串表示。示例:off
state.entity_id 实体ID。格式:<domain>.<object_id>。示例:light.kitchen
state.domain 实体的域。示例:light
state.object_id 实体的对象ID。示例:kitchen
state.name 实体的名称。基于friendly_name属性,回退到对象ID。示例:厨房天花板
state.last_changed 状态在状态机中变化的时间(以UTC时间表示)。如果仅状态属性发生变化,则此时间不会更新。示例:2013-09-17 07:32:51.715874+00:00
state.last_reported 状态写入状态机的时间(以UTC时间表示)。无论状态或状态属性是否发生变化,此时间戳均会更新。示例:2013-09-17 07:32:51.715874+00:00
state.last_updated 状态或状态属性在状态机中变化的时间(以UTC时间表示)。如果状态和状态属性都没有变化,则此时间不会更新。示例:2013-09-17 07:32:51.715874+00:00
state.attributes 一个字典,包含与当前状态相关的额外属性。
state.context 一个字典,包含与状态上下文相关的额外属性。

关于状态

截图显示了三盏灯的不同状态(state.state):onoffunavailable。每盏灯都有自己的实体状态属性,例如supported_color_modessupported_features。这些属性各自有自己的状态:supported_color_modes属性的状态为color_temphs,而supported_features属性的状态为4

显示三盏不同状态灯的截图:`on`、`off`或`unavailable` 三盏不同状态的灯:`on`、`off`或`unavailable`。

state.state状态对象的核心。状态保存实体的关键信息。例如,灯是否开着或关着、当前温度或使用的能量量。状态对象存储与状态相关的3个时间戳:last_updatedlast_changedlast_reported。每个实体只有一个状态,并且状态一次只能保存一个值。

关于实体状态属性

状态一次只能保存一个值。然而,实体可以在状态对象中存储相关的实体状态属性。例如,灯的状态是_on_,而相关属性可能是其当前亮度和颜色值。状态变化事件可以用作触发器。当前状态可以在条件中使用。下面的示例显示了三盏灯,它们具有不同的实体状态属性。

显示具有不同状态和属性的三盏灯的截图 示例显示三盏具有不同实体状态属性的灯。

实体具有一些与状态无关的属性,例如friendly_name。某些属性在所有实体上都是可用的,例如friendly_nameicon。此外,每个集成都有自己的属性来表示关于实体的额外状态数据。例如,灯集成具有表示灯的当前亮度和颜色的属性。当属性不可用时,Home Assistant将不会将其写入状态。实体属性是可选的。

在使用模板时,可以通过其名称使用属性。例如state.attributes.assumed_state

表格列出了根据实体域可能存在的常见状态属性。

属性 描述
friendly_name 实体的名称。示例:厨房天花板
icon 用于前端显示实体的图标。示例:mdi:home
entity_picture 应用于替代显示域图标的图片的URL。示例:http://example.com/picture.jpg
assumed_state 布尔值,表示当前状态是否为假设状态。更多信息 示例:True
unit_of_measurement 状态所表达的测量单位。用于对图表进行分组或理解实体。示例:°C
attribution 数据提供者。例如“数据由rejseplanen.dk提供”、“数据由openSenseMap提供”。
device_class 实体所表示的设备类型。用于在UI中显示设备特定信息。
supported_features 实体支持的功能。例如,对于封面,它可能列出openingclosingstoppingsetting position。对于媒体播放器,它可能列出playpausestopvolume control

当属性包含空格时,可以这样检索:state_attr('sensor.livingroom', 'Battery numeric')

上下文

上下文是状态对象和事件中使用的一个属性。它将events每当 Home Assistant 中发生某些事情时,都会触发一个事件。有不同类型的事件,例如状态更改事件、动作触发事件或时间更改事件。所有实体都会产生状态更改事件。每当状态更改时,都会产生状态更改事件。事件可用于触发自动化或脚本。例如,您可以在灯打开时触发自动化,然后在该房间中打开扬声器。事件还可用于触发前端的动作。例如,您可以在按下按钮时触发动作。 [Learn more]states状态保存实体的感兴趣信息,例如灯是开还是关。每个实体只有一个状态,并且状态一次只保存一个值。但是,实体可以存储与该状态相关的属性,例如亮度、颜色或测量单位。 [Learn more]在Home Assistant中联系在一起。每当一个automationHome Assistant 中的自动化允许您自动响应在家中和周围发生的事情。 [Learn more]或用户交互导致状态发生变化时,状态对象中会分配一个新的上下文。这个上下文将附加到因变化而发生的所有事件和状态中。

字段 描述
context_id 上下文的唯一标识符。
user_id 启动更改的用户的唯一标识符。如果动作不是由用户启动的(例如,由自动化启动),则将为None
parent_id 启动更改的父上下文的唯一标识符(如果可用)。例如,如果触发了自动化,则触发器的上下文将设置为父上下文。