Home Assistant 恒温器目标温度设置完全指南:climate.set_temperature 动作详解
【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io
本指南以 Home Assistant 官方文档仓库(home-assistant.io)中的 climate.set_temperature 动作文档 为核心,系统讲解如何通过用户界面与 YAML 两种方式设置温控设备(恒温器、空调等 HVAC 设备)的目标温度,涵盖单点温度与温度区间(heat/cool 模式)的完整参数体系、目标选择(Targets)机制、以及可直接复制的实战自动化示例。读完本篇,你将能够在自动化、脚本中熟练、准确地调用climate.set_temperature,并理解它与hvac_mode、target_temp_high、target_temp_low等参数之间的配合关系。
动作概述
climate.set_temperature是 Home Assistant 内置 Climate 域(domain)提供的标准动作(action),用于设置气候设备的目标温度,例如把房间加热到舒适温度。该动作属于 Climate 集成 的一部分,Climate 集成负责控制与监控 HVAC(供暖、通风和空调)设备及恒温器。
从该动作文档的元信息(front matter)可以看到它的基本定义:
- 动作名称:
climate.set_temperature - 所属域:
climate - 官方描述:设置气候设备的目标温度(Sets the target temperature of a climate device)
- 关联动作:
climate.set_hvac_mode、climate.set_humidity、climate.set_preset_mode
Home Assistant 支持在 UI 中可视化地构建该动作,也支持在 YAML 中直接引用,下面分别说明。
通过用户界面设置目标温度
如果你倾向于可视化地构建自动化与脚本,无需掌握任何 YAML 知识即可完成配置。官方文档给出了完整的操作步骤:
- 进入设置(Settings)>自动化与场景(Automations & scenes)。
- 打开现有的自动化或脚本;若为新建,选择创建自动化(Create automation)>创建新自动化(Create new automation)。
- 若正在配置新的自动化,需在When(触发条件)部分添加触发器;脚本则不需要触发器——它们在被其他内容调用时才运行。
- 在Then do(然后执行)部分,选择添加动作(Add action)。
- 在按目标(By target)下(参见下文 Targets(动作的目标)),选择要控制的温控设备。
- 从该目标展示的动作列表中,选择设置恒温器目标温度(Set thermostat target temperature)。
- 设置要应用的温度选项。
- 选择保存(Save)。
UI 中的选项
在 UI 中,该动作提供以下可选配置项(均为可选,非必填):
| 选项 | 说明 | 是否必填 |
|---|---|---|
| 目标温度(Target temperature) | 温度设定点。当设备以单一温度为目标时使用。 | 否 |
| 目标温度上限(Upper target temperature) | 目标区间中的最高温度。当设备以温度区间为目标时(例如 heat/cool 模式),与目标温度下限一起使用。 | 否 |
| 目标温度下限(Lower target temperature) | 目标区间中的最低温度。当设备以温度区间为目标时(例如 heat/cool 模式),与目标温度上限一起使用。 | 否 |
| HVAC 模式(HVAC mode) | 应用温度前要切换到的 HVAC 模式。若未设置,则保持当前模式。 | 否 |
在 YAML 中使用该动作
如果你直接编写 YAML,或想确切了解 Home Assistant 底层执行逻辑,文档提供了完整的字段级技术参考(字段名、类型、是否必填)。
YAML 参数详解
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
temperature | float | 否 | 温度设定点。当设备以单一温度为目标时使用。不要与target_temp_high、target_temp_low同时使用。 |
target_temp_high | float | 否 | 目标区间中的最高温度。当设备以温度区间为目标时(如 heat/cool 模式),须与target_temp_low一起使用。 |
target_temp_low | float | 否 | 目标区间中的最低温度。当设备以温度区间为目标时(如 heat/cool 模式),须与target_temp_high一起使用。 |
hvac_mode | string | 否 | 应用温度前要切换到的 HVAC 模式。若未设置,则保持当前模式。 |
基础示例:设置单一目标温度
action: climate.set_temperature target: entity_id: climate.living_room data: temperature: 21 hvac_mode: heat该示例将climate.living_room设置为以 21 度为目标进行加热(heat)。
区间示例:heat/cool 模式下的温度范围
action: climate.set_temperature target: entity_id: climate.living_room data: target_temp_high: 24 target_temp_low: 20 hvac_mode: heat_cool该示例将climate.living_room设置为 heat/cool 模式,目标温度区间为 20~24 度。
关于hvac_mode的取值
hvac_mode的可用取值取决于具体温控设备。参考同仓库的 climate.set_hvac_mode 动作文档 以及 Climate 集成文档,常见模式包括:
off:设备关闭heat:加热到目标温度cool:制冷到目标温度heat_cool:在目标温度区间内加热/制冷auto:按日程、学习行为或 AI 自动运行dry:干燥/除湿模式fan_only:仅开启风扇,不进行加热或制冷
需要特别注意的是:若在climate.set_temperature中省略hvac_mode,Home Assistant 会保持当前模式;若提供该参数,则会在应用温度之前先切换模式。
Targets(动作的目标)
该动作必须有目标(target)。目标即动作的作用对象,可以把动作指向单个实体(entity)、设备(device)、区域(area)、楼层(floor)或标签(label),Home Assistant 会对目标背后的每一个匹配的climate实体执行动作。可用的目标类型(来自 targets.md):
- 实体(Entity):单个具体的
climate实体,如climate.living_room。 - 设备(Device):属于某设备的全部
climate实体。 - 区域(Area):某房间/区域内的全部
climate实体。 - 楼层(Floor):某楼层上的全部
climate实体。 - 标签(Label):共享某标签的全部
climate实体。
你还可以在同一个动作中混合多种目标类型,例如同时把某个具体实体和某个区域作为目标,一次执行同时作用于两者。
实战示例:夜间降低温度
官方文档提供了一个非常实用的场景:在就寝时间将温控设备调至较低温度,以在夜间节省能源。
- 触发器(Trigger):时间 22:30
- 动作(Action):设置恒温器目标温度
- 目标(Target):客厅恒温器
- 目标温度(Target temperature):18
完整的自动化 YAML 如下:
automation: - alias: "Lower the living room temperature at night" triggers: - trigger: time at: "22:30:00" actions: - action: climate.set_temperature target: entity_id: climate.living_room data: temperature: 18结合climate.set_hvac_mode文档中的另一个思路,你还可以把"室内温度超过阈值就切换制冷"等模式切换动作与温度设置动作组合使用,构建更复杂的温控逻辑。
理解底层:Climate 实体的状态与属性
为了让climate.set_temperature用得更准确,有必要理解温控实体的状态模型(来自 Climate 集成文档)。
实体状态(State)
HVAC 实体依据具体设备及其能力,可能处于以下状态:
- Off:设备已关闭
- Heat:设备已设置为加热到目标温度
- Cool:设备已设置为制冷到目标温度
- Heat/Cool:设备已设置为在目标温度区间内加热/制冷
- Auto:设备已设置为按日程、学习行为或 AI 自动运行
- Dry:设备已设置为干燥/除湿模式
- Fan only:仅风扇开启,不进行加热或制冷
- Unavailable:实体当前不可用
- Unknown:状态尚未知晓
不同恒温器可用的状态集合不同,具体取决于你使用的设备。
实体属性(Attributes)
Climate 实体还有额外的属性来表示恒温器的运行状态:
| 名称 | 说明 |
|---|---|
hvac_action | 当前运行状态:heating/cooling/idle |
fan_mode | 风扇当前是否开启:on/off |
理解这些状态与属性,有助于你在自动化触发条件中判断"设备当前是否真的在加热/制冷",从而与climate.set_temperature动作形成"感知—决策—执行"的完整闭环。
在开发工具中立即测试
无需编写任何 YAML,你就可以在真实的实体上验证该动作的效果:打开设置(Settings)>工具(Tools)>动作(Actions),搜索climate.set_temperature,填写字段后选择执行动作(Perform action),即可在真实实体上看到结果(参见 try_it.md)。
动作使用要点(Good to know)
- 单一温度 vs. 温度区间:根据设备支持的能力选择其一。若设备支持 heat/cool 模式,则应同时使用
target_temp_high与target_temp_low构成区间;否则使用单个temperature。 temperature与区间参数互斥:不要将temperature与target_temp_high/target_temp_low混用。hvac_mode为可选:省略时保持当前模式,提供时先切换模式再应用温度。- 区间参数成对使用:
target_temp_high与target_temp_low必须一起出现才能构成有效的目标区间。
相关动作
以下动作与本动作配合使用效果最佳:
- 设置恒温器 HVAC 模式(climate.set_hvac_mode):切换温控设备的工作模式,例如在制热、制冷、关闭之间切换。
climate.set_humidity:设置气候设备的湿度目标。climate.set_preset_mode:设置气候设备的预设模式(如节能、舒适等)。
典型组合思路:先用climate.set_hvac_mode把设备切入正确模式,再用climate.set_temperature下发目标温度;或将两者合并——在climate.set_temperature中直接携带hvac_mode参数一步完成。
常见问题排查
如果在实际使用中动作没有生效,可依次检查:
- 目标是否有效:
target.entity_id是否真实存在且处于可用(非Unavailable/Unknown)状态。 - 参数组合是否正确:是否误将
temperature与区间参数混用,或区间参数是否成对出现。 - 设备能力限制:目标设备是否支持你传入的
hvac_mode及单点/区间温度能力——不同温控设备的能力差异较大。 - 模式优先级:若同时传入
hvac_mode与温度参数,注意动作会先切换模式再应用温度,请确认最终期望的行为。
若问题依旧,可前往 Home Assistant 社区论坛(community.home-assistant.io)附上你调用的动作与预期结果寻求帮助,也可以借助 AI 助手用自然语言描述需求来获得动作建议(参见 stuck.md)。
【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考