Home Assistant 温控模式切换实战:climate.set_hvac_mode动作完全指南
【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io
climate.set_hvac_mode是 Home Assistant 中 climate 域(温控类设备)的核心动作之一,用于将恒温器、空调等设备切换到指定的 HVAC(暖通空调)工作模式,例如制热(heat)、制冷(cool)或关闭(off)。本文以官方用户文档 source/_actions/climate.set_hvac_mode.markdown 为骨架,系统讲解如何在自动化与脚本中调用该动作、目标(Targets)机制如何工作、常见 HVAC 模式的语义差异,并给出可直接复制的 YAML 示例,帮助你在实际项目中精准控制温控设备。
动作概览:它解决什么问题
在 Home Assistant 的实体体系中,climate 域统管恒温器、空调、地暖、热泵等设备。这类设备通常具备多种工作模式,而climate.set_hvac_mode就是改变设备工作模式的统一入口。官方文档(front matter)对其定义如下:
- 动作名(action):
climate.set_hvac_mode - 所属域(domain):climate
- 功能描述:设置温控设备的 HVAC 模式(Sets the HVAC mode of a climate device)
典型使用场景包括:天热时把客厅空调切到制冷、睡前把卧室恒温器切到制热、离家时直接把整个供暖系统切到off。它不负责设置温度(那是 climate.set_temperature 的职责),也不负责开关设备电源(那是 climate.turn_on / climate.turn_off 的职责),它专注于"模式"这一维度。
在 UI 中配置该动作
如果你偏好可视化配置,可以在自动化或脚本编辑器中通过表单完成设置。官方文档给出的操作路径如下:
- 进入设置 > 自动化与场景(Settings > Automations & scenes)。
- 打开一个现有的自动化或脚本,或选择创建自动化>创建新自动化。
- 如果是在搭建新自动化,需在When(何时)部分添加触发器;脚本则不需要触发器——脚本由其他自动化或事件调用时才执行。
- 在Then do(则执行)部分选择添加动作(Add action)。
- 选择要控制的设备:在按目标(By target)下(详见下文"目标机制"),选择要控制的温控设备。
- 从该目标可用的动作列表中,选择设置恒温器 HVAC 模式(Set thermostat HVAC mode)。
- 设置要应用的HVAC 模式。
- 点击保存。
UI 中的选项
| 选项 | 说明 |
|---|---|
| HVAC 模式 | 要设置的 HVAC 模式,例如 heat(制热)、cool(制冷)或 off(关闭)。可用模式取决于具体温控设备。 |
这是该动作在 UI 中唯一的表单字段,属于必选项。界面上可选值的下拉列表由目标设备自身的能力(hvac_modes属性)动态生成。
在 YAML 中使用该动作
如果你直接编写 YAML(例如手写automations.yaml或脚本),或者想精确了解 Home Assistant 在底层执行的操作,可以阅读本节的技术参考——它列出了 YAML 中使用的字段名、类型以及必填要求。
基础示例
action: climate.set_hvac_mode target: entity_id: climate.living_room data: hvac_mode: heat这个例子把climate.living_room切换为制热模式。结构上分为三个部分:
action:要调用的动作名,即climate.set_hvac_mode;target:动作的作用对象(目标);data:动作的附加参数,这里传入要设置的hvac_mode。
YAML 字段参考
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
hvac_mode | string | 是 | 要设置的 HVAC 模式,例如 heat、cool 或 off。可用模式取决于具体温控设备。 |
hvac_mode是唯一的数据字段且必填。从源码结构看,它会被直接透传给 climate 实体的底层服务调用,因此传入了设备不支持的枚举值时,设备集成层会拒绝执行或报错——这也解释了为何文档反复强调"可用模式取决于设备"。
目标机制(Targets)
该动作必须指定目标(target)。目标是动作的作用对象,你可以把动作指向单个实体、设备、区域、楼层或标签,Home Assistant 会对该目标下所有匹配的 climate 实体执行动作。支持的目标类型如下:
- 实体(Entity):单个具体的 climate 实体,例如
climate.living_room; - 设备(Device):属于某个设备的所有 climate 实体;
- 区域(Area):某个房间/区域内的所有 climate 实体;
- 楼层(Floor):某个楼层上的所有 climate 实体;
- 标签(Label):共享某个标签的所有 climate 实体。
你还可以在同一个动作中混合使用不同类型的目标,例如同时添加一个具体实体和一个区域,让该动作同时作用于两者。这一机制大大减少了重复配置:与其为家里每一台空调各写一条动作,不如给它们打上climate_downstairs之类的标签,然后一条动作批量切换。
常见 HVAC 模式解析
官方文档"Good to know"一节明确指出:可用模式取决于温控设备,常见模式包括:
| 模式 | 语义 |
|---|---|
off | 关闭温控,设备不进行任何加热或制冷 |
heat | 制热模式,仅当温度低于目标值时启动加热 |
cool | 制冷模式,仅当温度高于目标值时启动制冷 |
heat_cool | 自动恒温(双模式),同时支持加热与制冷,通常在上下目标温度区间内保持恒温 |
auto | 自动模式,由设备根据预设策略自行决定加热或制冷 |
dry | 除湿模式,多用于空调,以降低室内湿度为目标 |
fan_only | 仅送风模式,不加热也不制冷 |
实践要点:heat_cool模式通常需要配合上下目标温度一起使用——此时应改用 climate.set_temperature 并传入target_temp_high/target_temp_low两个字段;而auto、dry、fan_only等模式并非所有设备都支持,写自动化前建议先在设备自带的官方应用中确认其能力清单。
实战示例:高温天气自动切换制冷
官方文档给出了一个完整的自动化场景:当室内温度超过阈值时,自动把恒温器切到制冷模式。
- 触发器:室内温度升至 26 °C 以上
- 动作:设置恒温器 HVAC 模式
- 目标:客厅恒温器
- HVAC 模式:cool
对应 YAML 如下:
automation: - alias: "Switch the thermostat to cooling on a hot afternoon" triggers: - trigger: numeric_state entity_id: sensor.living_room_temperature above: 26 actions: - action: climate.set_hvac_mode target: entity_id: climate.living_room data: hvac_mode: cool这个例子展示了标准的自动化三段式结构:triggers用numeric_state监听温度传感器数值,当超过 26 °C 时触发;actions调用climate.set_hvac_mode把客厅恒温器切到制冷。你可以直接把sensor.living_room_temperature换成你实际的温度传感器实体 ID,把climate.living_room换成目标温控实体。
与相关动作组合使用
该动作通常与以下 climate 域动作配合,形成完整的温控方案(文档 front matter 中亦列出了这些关联动作):
| 关联动作 | 用途 | 参考文档 |
|---|---|---|
climate.set_temperature | 设置目标温度(单点温度或上下温度区间),可同时附带切换模式 | climate.set_temperature |
climate.set_preset_mode | 设置预设模式(如 eco、away),常用于离家节能 | climate.set_preset_mode |
climate.turn_on | 打开温控设备 | climate.turn_on |
climate.turn_off | 关闭温控设备 | climate.turn_off |
实际项目中常见的组合思路:
- 离家节能:人离开时先用
climate.set_preset_mode切到away预设,或直接climate.set_hvac_mode切到off; - 回家预冷/预热:结合
climate.set_hvac_mode(切换到 cool/heat)与climate.set_temperature(设置目标温度)两步联动; - 季节切换:季节变化时通过一条自动化把全屋空调统一从
heat切换到cool,此时可利用目标机制按区域或标签批量作用。
在线测试与排障
写完自动化前,可以先在动作工具台直接验证效果,无需写任何 YAML:进入设置 > 工具 > 动作(Settings > Tools > Actions),搜索climate.set_hvac_mode,填写字段并点击执行动作(Perform action),即可在真实实体上观察模式切换是否生效。
排查要点:
- 目标实体填错:确认
entity_id是 climate 域实体(以climate.开头),可在设置 > 设备与服务中核实; - 模式不被支持:传入设备不支持的 HVAC 模式会导致执行失败,可先通过实体状态面板查看该设备的
hvac_modes属性确认可用值; - 设备无此功能:部分温控设备不支持关闭或模式切换,此时应改用该设备支持的动作(参见 climate.turn_on / climate.turn_off 中的"Good to know"说明)。
掌握climate.set_hvac_mode的目标机制、模式语义与 YAML 写法,你就能把温度控制精确地嵌入到各种自动化场景中,实现真正智能的温控管理。
【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考