news 2026/9/17 10:33:54

Home Assistant Sensibo 集成:用 sensibo.get_device_capabilities 查询设备模式能力,精准配置 Climate 设备

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Home Assistant Sensibo 集成:用 sensibo.get_device_capabilities 查询设备模式能力,精准配置 Climate 设备

Home Assistant Sensibo 集成:用 sensibo.get_device_capabilities 查询设备模式能力,精准配置 Climate 设备

【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io

本文以 Home Assistant 文档仓库中sensibo.get_device_capabilities动作页为核心,完整讲解这一动作的用途、UI 与 YAML 两种配置方式、参数取值、响应数据结构,以及它与sensibo.full_statesensibo.enable_climate_react等动作的协作关系。读完你可以掌握:如何在自动化和脚本中先"查询能力"再"下发状态",从而避免向 Sensibo 设备写入 API 不接受的大小写敏感取值。

为什么需要"先查能力,再下发状态"

Sensibo 集成(集成文档)通过 Sensibo 云 API 轮询设备(默认每分钟一次),并暴露 climate 等实体。它的几个专用动作对取值有硬性要求:

  • sensibo.full_state:一次性向设备下发完整状态(mode、温度、风扇、摆动、灯光等);
  • sensibo.enable_climate_react:配置 Climate React,当温度、体感温度或湿度越过阈值时自动切换到你定义的高/低状态。

这两个动作都要求所传数值与 Sensibo API 完全一致,且大小写敏感(case-sensitive)。不同型号的空调/控制器支持的风扇档位、摆动模式各不相同(例如摆动模式取值是fixedMiddleTopfixedCenter这类驼峰命名,而不是fixed_middle_top)。如果凭感觉写值,指令可能被 API 拒绝或行为不符合预期。sensibo.get_device_capabilities就是为这个问题设计的:它返回指定 HVAC 模式下设备实际支持的设置及其允许取值列表,你可以直接把返回值复制进其他动作、自动化或脚本中。

两点关键性质(见动作文档):

  1. 它把结果作为**响应数据(response data)**返回,用于在脚本/自动化中做后续模板处理;
  2. 它是只读查询,不会改变设备上的任何设置。

在 UI 中配置该动作

按照文档给出的步骤,在"设置 > 自动化与场景"中配置:

  1. 进入Settings > Automations & scenes(自动化与场景);
  2. 打开一个已有的自动化或脚本,或选择Create automation>Create new automation新建;
  3. 如果是新建自动化,在When(触发条件)部分添加触发器;脚本不需要触发器,由其他机制调用时执行;
  4. Then do(执行动作)部分选择Add action
  5. By target(按目标)下选择你的 Sensibo climate 设备实体;
  6. 在该目标可用的动作中选择Sensibo: Get device mode capabilities
  7. 选择要查询的HVAC mode
  8. 选择Save保存。

参数说明

UI 与 YAML 中的选项一致,核心只有一个必填参数:

参数类型必填说明
hvac_modestring要查询能力所用的 HVAC 模式,取值:coolheatdryfanauto

注意该参数只有这五个模式(不含off),因为它查询的是"某种工作模式下设备支持哪些设置",而off模式没有需要查询的运行参数。目标实体通过通用的target机制指定(文档中通过domain="climate"引入的 Targets 部分说明:只能选择 Sensibo 集成提供的 climate 实体)。

YAML 配置示例

在 YAML 中该动作写作sensibo.get_device_capabilities,文档给出的基础示例如下:

action: | action: sensibo.get_device_capabilities target: entity_id: climate.living_room data: hvac_mode: cool response_variable: capabilities

其中response_variable: capabilities把动作返回的能力映射存入名为capabilities的变量,供同一脚本/自动化中的后续步骤或模板引用,而不仅仅是查看。

响应数据结构与大小写敏感问题

动作返回一个映射(mapping),描述设备在所选 HVAC 模式下支持的设置,以及每个设置的允许取值列表。根据设备不同,可能包括:

  • 风扇档位(fan levels);
  • 摆动模式(swing modes);
  • 水平摆动模式(horizontal swing modes);
  • 目标温度(target temperatures);
  • 灯光选项(light options)。

文档特别强调:返回的取值大小写敏感,必须原样复制。这一点从相关动作的示例中可以直观看到。在 sensibo.enable_climate_react 文档 中,完整状态(full state)的字段是驼峰命名的ontargetTemperaturemodefanLeveltemperatureUnitswinghorizontalSwinglight,取值如fixedBottomfixedLeftstopped

action: | action: sensibo.enable_climate_react target: entity_id: climate.living_room data: high_temperature_threshold: 24 high_temperature_state: on: true targetTemperature: 21 mode: cool fanLevel: high temperatureUnit: C swing: stopped horizontalSwing: stopped light: "on" low_temperature_threshold: 19 low_temperature_state: on: true targetTemperature: 23 mode: heat fanLevel: high temperatureUnit: C swing: stopped horizontalSwing: stopped light: "on" smart_type: temperature

sensibo.full_state(见其文档)中的字段则采用下划线命名(target_temperaturefan_modeswing_modehorizontal_swing_modelight),但取值本身仍然大小写敏感(如集成文档示例中的swing_mode: fixedMiddleTophorizontal_swing_mode: fixedCenter,见 Sensibo 集成文档 的 Examples 部分):

automation: alias: "Example full state" triggers: - trigger: time at: "18:00:00" actions: - action: sensibo.full_state data: mode: "heat" target_temperature: 23 fan_mode: "medium" swing_mode: "fixedMiddleTop" horizontal_swing_mode: "fixedCenter" light: "off" target: entity_id: climate.hvac_device

这正是get_device_capabilities的价值所在:不同设备的fanLevel/swing合法集合不同,与其记忆这些值,不如先跑一次查询、把允许值列表拉下来再填写。同时记住两条规则(来自 full_state 文档的 "Good to know"):只下发你的设备支持的字段;所有取值必须与 Sensibo API 期望的完全一致

推荐的实战工作流

结合文档仓库中该动作的"related actions"引用关系(sensibo.full_statesensibo.enable_climate_react均在元数据中把本动作列为相关动作),一套典型配置流程是:

  1. 查询:在脚本或自动化中调用sensibo.get_device_capabilities,指定hvac_mode(如cool),用response_variable保存结果;
  2. 确认取值:查看返回的允许值映射,确认目标模式下的风扇档位、摆动模式、温度范围等;
  3. 下发:把确认过的取值填入sensibo.full_state(一次性完整状态)或sensibo.enable_climate_react的高/低状态 map 中;
  4. 验证:打开Settings > Tools > Actions(开发者工具的动作页面,即文档中 "Try it yourself" 部分所指入口),搜索该动作、填写字段并Perform action,无需写 YAML 即可在真实设备上验证效果。

同一动作家族中还有几个可配合使用的动作:sensibo.assume_state(仅更新 Sensibo 侧认为的设备开/关状态,不向设备发命令,用于物理遥控导致失步时纠正,见其文档)、sensibo.enable_timersensibo.enable_pure_boost。另外从集成文档可见:该集成为云轮询(Cloud Polling)架构、需先在 Sensibo 网站注册 API key 完成配置流,且部分实体默认禁用、需手动启用——理解这些背景有助于解释为何"能力"随设备型号而差异明显。

小结

sensibo.get_device_capabilities是 Sensibo 集成中"只读、返回响应数据、大小写敏感"三特征兼具的查询动作:它以hvac_mode(cool/heat/dry/fan/auto)为唯一必填参数,返回所选模式下设备支持的设置及允许取值。把它放在full_stateenable_climate_react之前执行,是保证下发取值与 Sensibo API 完全匹配的最可靠方式。本文所有配置示例均可在仓库对应文档中找到原文:动作主文档、full_state、enable_climate_react 与 Sensibo 集成说明。

【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/17 10:33:13

内存态匿名段分析实战:绕过DexProtector检测并还原Dex

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/17 10:28:58

Atlas记忆策略实战:让自定义Agent记住什么、忘掉什么

Atlas记忆策略实战:让自定义Agent记住什么、忘掉什么 【免费下载链接】atlas Source control for agents. Use multiple coding agents, track their changes and query them in one place 项目地址: https://gitcode.com/GitHub_Trending/atlas115/atlas Atl…

作者头像 李华
网站建设 2026/9/17 10:28:23

STM32与ESP-01S手写AT指令和MQTT报文接入云平台

STM32 和 ESP-01S 这套组合,做物联网课设、毕业设计、设备联网改造都绕不开。很多人拿到 ESP-01S 后第一反应是找现成云平台 SDK,或者直接套 MQTT 库,结果一换芯片、一换平台就抓瞎。我这里记录的是手打代码的方式:STM32 只负责串…

作者头像 李华