Home Assistant Netatmo 集成 `set_preset_mode_with_end_datetime` 动作详解:定时切换预设模式(Away / Frost Guard)
2026/9/16 23:06:55 网站建设 项目流程

Home Assistant Netatmo 集成set_preset_mode_with_end_datetime动作详解:定时切换预设模式(Away / Frost Guard)

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

本文是 Home Assistant 官方文档仓库(home-assistant.io)中针对 Netatmo 集成动作netatmo.set_preset_mode_with_end_datetime的完整技术指南。该动作用于将 Netatmo 恒温器或智能暖气阀(Smart Thermostat / Smart Radiator Valve)临时切换为away(离家)或frost_guard(防冻)预设模式,并在你指定的日期时间自动恢复为设备的常规加热计划。读完本文,你将掌握该动作的 UI 配置步骤、完整 YAML 写法、参数约束与取值范围,以及它与其他 Netatmo 温度控制动作(如set_scheduleset_temperature_with_end_datetime)的配合用法。

动作概述与适用场景

netatmo.set_preset_mode_with_end_datetime是 Home Assistant Netatmo 集成在 2023.11 版本中引入的动作(见 source/changelogs/core-2023.11.markdown 中 "Add service set_preset_mode_with_end_datetime in Netatmo integration" 的变更记录)。它解决的核心问题是:

让 Netatmo 气候设备在一段时间内保持某个预设模式,到期后自动回到常规加热计划(schedule)。

典型场景包括:

  • 短期离家:外出几天时切换到away模式,返回当天指定时刻自动恢复日常计划;
  • 夜间防冻保护:在严寒天气里设定frost_guard模式,保护管道不被冻裂,白天自动恢复;
  • 定时节能:在无人时段临时降低供热强度,时间一到自动切回计划。

该动作支持两类设备:

  • Netatmo Smart Thermostat / Smart Modulating Thermostat(智能恒温器)
  • Netatmo Smart Radiator Valve(智能暖气阀)

设备通过climate域暴露给 Home Assistant,因此动作的target.entity_id通常是形如climate.living_room的实体(可参考 source/_integrations/netatmo.markdown 中关于 thermostat 平台的说明)。

在 UI 中配置该动作

该动作可以添加到**自动化(automation)脚本(script)**中。在官方文档中,actions/ui_header.md定义了 UI 操作的标准入口,具体步骤如下:

  1. 进入Settings > Automations & scenes
  2. 打开现有的自动化或脚本,或选择Create automation>Create new automation
  3. 如果是新建自动化,在When部分添加触发器;脚本不需要触发器,它们由其他自动化或流程调用。
  4. Then do部分选择Add action
  5. By target(目标选择器)下选择你要控制的 Netatmo 气候设备(支持按实体、设备或区域指定目标)。
  6. 从该目标可用的动作列表中选择Set preset mode with end date & time
  7. 设置Preset mode(预设模式)与End date & time(结束日期时间)。
  8. 选择Save保存。

UI 选项说明

UI 选项说明
Preset mode要设置的预设模式,可选值为awayfrost guard(防冻)
End date & time预设模式保持有效的截止日期和时间,到达该时刻后设备自动恢复常规计划

YAML 用法与完整示例

在 YAML 中,动作的完整标识为netatmo.set_preset_mode_with_end_datetime。官方文档给出的基础示例如下:

action: netatmo.set_preset_mode_with_end_datetime target: entity_id: climate.living_room data: preset_mode: away end_datetime: "2025-04-20 05:04:20"

该示例将climate.living_room切换为away预设,直到2025-04-20 05:04:20时刻到达后自动恢复常规计划。

在自动化中使用时,动作以列表项形式存在于actions字段下:

automation: - alias: "Set away preset during vacation until noon" triggers: - trigger: time at: "08:00:00" actions: - action: netatmo.set_preset_mode_with_end_datetime target: entity_id: climate.living_room data: preset_mode: away end_datetime: "2025-04-20 12:00:00"

YAML 参数详解

参数类型必填说明
preset_modestring要设置的预设模式,可用值为awayfrost_guard
end_datetimedatetime预设模式保持活跃的截止日期与时间,到达后设备自动回到当前活跃的加热计划

参数要点:

  • preset_mode的取值:官方文档的 UI 选项中写作frost guard,而 YAML 参数表中明确要求使用下划线形式frost_guard。需要注意的是,2025.2 版本中曾修复过该动作中frost_guard拼写错误(见 source/changelogs/core-2025.2.markdown 与 source/_posts/2025-02-05-release-20252.markdown 中 "Fix bug in set_preset_mode_with_end_datetime (wrong typo of frost_guard)" 的记录)。因此在实际配置时,YAML 中必须使用frost_guard,避免因拼写差异导致动作失败。
  • end_datetime的格式:使用标准的日期时间字符串,如"2025-04-20 05:04:20"(建议加引号包裹,避免 YAML 解析歧义),也可以传入模板表达式动态计算结束时间,例如"{{ now() + timedelta(hours=6) }}"

动作行为:到期自动恢复计划

该动作的核心行为在官方文档的 "Good to know" 部分被明确说明:

当结束日期时间到达时,气候设备会返回其活跃的加热计划(active schedule)。

也就是说,该动作与直接切换预设模式不同——它本质上是一个带定时恢复的临时覆盖(temporary override):在设定的时间窗口内使用awayfrost_guard预设,窗口结束后 Netatmo 云端按设备当前活跃的计划(schedule)恢复供热。因此不需要你再额外写一条 "到点恢复" 的自动化,Netatmo 集成会处理到期回切逻辑。

这一设计与同类的其他 Netatmo 温度控制动作保持一致,例如:

  • netatmo.set_temperature_with_end_datetime:设置目标温度直到指定时刻,到期恢复计划;
  • netatmo.set_temperature_with_time_period:按时间段(如wakeupaway等周期)设置温度;
  • netatmo.set_schedule:直接激活某个在 Netatmo App 中创建的加热计划;
  • netatmo.clear_temperature_setting:清除临时温度设置。

这些动作在 source/_actions/ 目录下均有对应文档,可互相配合构建完整的节能场景(例如离家自动切换away预设、回家前恢复温度等)。

与相关动作的对比与组合使用

为帮助你选择正确的动作,下表对比了netatmo.set_preset_mode_with_end_datetime与相邻动作的差异:

动作控制内容是否定时恢复典型用途
netatmo.set_preset_mode_with_end_datetime预设模式(away / frost_guard)是(到期恢复计划)离家、防冻等临时场景
netatmo.set_schedule加热计划名称(需与 Netatmo App 中的计划名完全一致)否(持续生效)主动切换计划,如全员离家时切到 Away 计划
netatmo.set_temperature_with_end_datetime目标温度(7~30 度)是(到期恢复计划)临时精确控温,如睡前调温
netatmo.set_temperature_with_time_period目标温度 + 时间段否(按周期语义)按一天中的时段控温
netatmo.clear_temperature_setting清除临时温度设置取消临时温度覆盖

组合示例:结合set_schedule的文档场景(见 source/_actions/netatmo.set_schedule.markdown),你可以构建如下自动化——当所有人离开家时,把客厅恒温器临时切到away预设并在当晚 21:00 自动恢复计划:

automation: - alias: "Away preset while out, restore schedule at 21:00" triggers: - trigger: state entity_id: zone.home to: "0" actions: - action: netatmo.set_preset_mode_with_end_datetime target: entity_id: climate.living_room data: preset_mode: away end_datetime: "{{ now().date().isoformat() }} 21:00:00"

注意事项与排错建议

  • 预设模式名称awayfrost_guard是 Netatmo 气候设备的标准预设。若设备不支持的预设传入,动作可能失败或行为异常,请先确认你的恒温器/暖气阀型号支持的预设集合。
  • 时间格式end_datetime必须是可解析的日期时间,建议使用带引号的字符串或模板表达式;格式错误会导致配置校验失败。
  • 计划匹配:与set_schedule不同,本动作不要求传入计划名,恢复时使用设备当前活跃的计划,因此无需在 Netatmo App 中做额外配置。
  • 版本要求:该动作自 Home Assistant 2023.11 起可用(见 source/changelogs/core-2023.11.markdown);2025.2 修复了frost_guard拼写问题,建议升级到较新版本以获得稳定行为。
  • 配置后验证:在自动化中保存后,可通过开发者工具中的Actions(动作)面板手动调用该动作并观察实体状态变化(如preset_mode属性是否变为away/frost_guard),再通过日志确认到期后是否恢复计划。

延伸阅读

  • Netatmo 集成整体说明与设备支持列表:source/_integrations/netatmo.markdown
  • 同族动作文档:netatmo.set_temperature_with_end_datetime、netatmo.set_schedule、netatmo.set_temperature_with_time_period、netatmo.clear_temperature_setting
  • 动作通用目标(Targets)说明:见 source/_includes/actions/targets.md

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

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

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

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

立即咨询