Home Assistant Sensibo 集成指南:使用 sensibo.full_state 一键下发空调完整状态
【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io
导读
本篇文章聚焦 Home Assistant 中 Sensibo 集成提供的sensibo.full_state动作(action),讲解如何通过一次调用把完整的空调工作状态(HVAC 模式、目标温度、风速、摆动方向、指示灯等)一次性下发到 Sensibo 设备,替代逐个设置参数的繁琐操作。读完本文,你将掌握该动作在自动化界面与 YAML 中的两种配置方式、全部可选参数的取值与类型、取值大小写敏感的注意事项,以及结合sensibo.get_device_capabilities查询设备支持项的最佳实践。
动作背景:为什么需要“完整状态”下发
Sensibo 是一个通过云端控制空调(HVAC)的智能控制器,其设备包括 Sensibo Sky、Sensibo Air、Sensibo Air Pro、Sensibo Pure 空气净化器、Sensibo Elements 空气监测仪及 Room Sensor 等(详见 Sensibo 集成文档)。在 Home Assistant 中,Sensibo 集成通过climate实体暴露设备控制能力,同时提供了一批扩展动作,其中sensibo.full_state的作用是:在一条命令里把空调的完整状态一次性发送给设备,而无需逐个修改每个设置项。
该动作的典型应用场景包括:
- 每天定时恢复某个“标准工作状态”(例如晚间 18:00 将客厅空调切到制热、23 ℃、中风、固定摆风);
- 回家 / 离家场景切换时,把温度、风速、摆风、指示灯一次到位;
- 从其他系统(脚本、模板开关、语音助手)同步设备状态。
注意:
sensibo.full_state与sensibo.assume_state是两种不同语义的动作。assume_state只更新 Sensibo 云端对设备“开/关”状态的认知,不向设备发送任何控制指令(当设备同时被实体遥控器控制、导致 Sensibo 与设备状态不同步时使用);而full_state则会把整套状态真实下发到设备。两者在 sensibo.assume_state 中作为相关动作相互关联。
动作的前置条件:查询设备能力
full_state的所有取值必须与 Sensibo API 期望的值完全一致,且区分大小写,并且只能提供你的设备实际支持的字段。因此官方强烈建议先调用sensibo.get_device_capabilities动作,拿到当前设备在指定 HVAC 模式下的合法取值清单,再把这些值复制到full_state中。
sensibo.get_device_capabilities会以 响应数据(response data) 的形式返回该模式下的支持项(如风速档位、摆风模式、水平摆风模式、目标温度范围、指示灯选项等),且该动作不会对设备做任何更改。其 YAML 调用示例为:
action: sensibo.get_device_capabilities target: entity_id: climate.living_room data: hvac_mode: cool response_variable: capabilities其中hvac_mode为必填项,类型为字符串,取值从cool、heat、dry、fan、auto中选择。执行后,cool 模式下设备支持的设置项会保存在名为capabilities的变量中(详见 sensibo.get_device_capabilities)。返回的取值是大小写敏感的,复制时应原样保留。
从自动化界面调用该动作
在 UI 中配置该动作的操作步骤如下:
- 进入 {% my automations title="设置>自动化与场景" %}。
- 打开一个现有的自动化或脚本,或选择创建自动化>创建新自动化。
- 如果是新建自动化,在**何时(When)**区域添加触发器;脚本不需要触发器,它们在被其他对象调用时运行。
- 在那么做(Then do)区域,选择添加动作(Add action)。
- 选择你要控制的设备。在**按目标(By target)**下(见下文动作的目标),选择 Sensibo 空调 climate 实体。
- 在该目标显示的动作列表中,选择Sensibo: Set full state(设置完整状态)。
- 选择HVAC 模式,并设置你的设备支持的其他选项。
- 选择保存。
UI 中的可用选项
| 选项 | 说明 | 是否必填 |
|---|---|---|
| HVAC 模式 | 要设置的 HVAC 模式,从 cool、heat、fan、auto、dry、off 中选择 | 是 |
| 目标温度 | 要设置的目标温度(若设备支持) | 否 |
| 风速模式 | 要设置的风速模式(若设备支持) | 否 |
| 摆动模式 | 要设置的垂直摆动模式(若设备支持) | 否 |
| 水平摆动模式 | 要设置的水平摆动模式(若设备支持) | 否 |
| 指示灯 | 打开、关闭或调暗设备指示灯(若设备支持) | 否 |
YAML 配置方式与完整参数说明
在 YAML 中,该动作的标识为sensibo.full_state。一个基础示例:
action: sensibo.full_state target: entity_id: climate.living_room data: mode: heat target_temperature: 23参数一览(YAML)
| 参数 | 说明 | 必填 | 类型 |
|---|---|---|---|
mode | 要设置的 HVAC 模式,从 cool、heat、fan、auto、dry、off 中选择 | 是 | 字符串 |
target_temperature | 要设置的目标温度(若设备支持) | 否 | 整数 |
fan_mode | 要设置的风速模式(若设备支持) | 否 | 字符串 |
swing_mode | 要设置的摆动模式(若设备支持) | 否 | 字符串 |
horizontal_swing_mode | 要设置的水平摆动模式(若设备支持) | 否 | 字符串 |
light | 打开、关闭或调暗设备指示灯,从 on、off、dim 中选择 | 否 | 字符串 |
动作的目标(targets)
该动作必须指定目标,目标是动作的作用对象。你可以把动作指向单个实体、设备、区域、楼层或标签,Home Assistant 会对其背后所有匹配的 climate 实体执行该动作:
- 实体:某个具体的 climate 实体,例如
climate.living_room; - 设备:属于某设备的全部 climate 实体;
- 区域:某个房间/区域内的全部 climate 实体;
- 楼层:某个楼层上的全部 climate 实体;
- 标签:共享某个标签的全部 climate 实体。
也可以在同一个动作中混合选择不同类型的目标,例如同时指定一个具体实体和一个区域(详见 targets 模板)。
自动化实战:每晚 18:00 一键恢复空调完整状态
官方在 Sensibo 集成文档 中给出了对应的完整自动化示例,该示例每天 18:00 将空调恢复到制热 23 ℃、中风、固定摆风的完整状态:
- 触发器:每天 18:00
- 动作:Sensibo: Set full state(设置完整状态)
- 目标:客厅(living room)空调
对应 YAML 如下:
automation: alias: "Example full state" triggers: - trigger: time at: "18:00:00" actions: - action: sensibo.full_state target: entity_id: climate.hvac_device data: mode: heat target_temperature: 23 fan_mode: medium swing_mode: fixedMiddleTop horizontal_swing_mode: fixedCenter light: "off"从示例可见,swing_mode: fixedMiddleTop、horizontal_swing_mode: fixedCenter这类取值保持了 Sensibo API 风格的驼峰命名,印证了“取值必须与 API 期望完全一致且区分大小写”的要求——这正是先调用sensibo.get_device_capabilities获取准确取值的原因。
快速验证与排障
手动试运行
无需编写任何 YAML,你可以直接在 {% my developer_services title="设置>工具>动作" %} 中搜索该动作,填写字段后点击执行动作(Perform action),在真实实体上立即查看效果(参见 try_it 模板)。
常见问题
- 取值不对 / 动作失败:检查取值是否为你的设备所支持,并且大小写是否与
sensibo.get_device_capabilities返回的内容完全一致;只提供设备支持的字段。 - 设备无法选择任何 HVAC 模式:这通常是设备在 Sensibo 云端未正确注册
remote(遥控器)导致。首次设置设备时,需要在 Sensibo App 中为设备定义遥控器(自动或手动),否则设备虽会出现在 Home Assistant 中,但无法使用任何 HVAC 模式(详见 Sensibo 集成排障章节)。 - 数据未更新:Sensibo 集成每分钟对所有设备执行一次云端轮询;若因网络或 API 故障导致轮询失败,可在解决连接问题后使用
homeassistant.update_entity动作手动触发更新。
相关动作
- sensibo.get_device_capabilities:返回指定 HVAC 模式下设备支持的设置项及其合法取值,是使用
full_state前必查的动作。 - sensibo.assume_state:仅更新 Sensibo 云端对设备开/关的认知,不向设备发送控制指令,适用于设备被实体遥控器等其他方式控制、导致状态不同步的场景。
【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考