Home Assistant 温控模式切换实战:`climate.set_hvac_mode` 动作完全指南
2026/9/16 20:42:04 网站建设 项目流程

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 中配置该动作

如果你偏好可视化配置,可以在自动化或脚本编辑器中通过表单完成设置。官方文档给出的操作路径如下:

  1. 进入设置 > 自动化与场景(Settings > Automations & scenes)。
  2. 打开一个现有的自动化或脚本,或选择创建自动化>创建新自动化
  3. 如果是在搭建新自动化,需在When(何时)部分添加触发器;脚本则不需要触发器——脚本由其他自动化或事件调用时才执行。
  4. Then do(则执行)部分选择添加动作(Add action)
  5. 选择要控制的设备:在按目标(By target)下(详见下文"目标机制"),选择要控制的温控设备。
  6. 从该目标可用的动作列表中,选择设置恒温器 HVAC 模式(Set thermostat HVAC mode)
  7. 设置要应用的HVAC 模式
  8. 点击保存

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_modestring要设置的 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两个字段;而autodryfan_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

这个例子展示了标准的自动化三段式结构:triggersnumeric_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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询