
Home Assistantselect.select_previous动作详解让选择实体在选项中向后回退【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.ioselect.select_previous是 Home Assistant 内置的select域动作用于把某个 select 实体移动到其选项列表中的上一个选项典型场景是逐级回退浏览预设列表例如灯光场景预设、洗衣机程序、温控预设。本文将基于 home-assistant.io 仓库中 select.select_previous 动作参考文档 的完整内容分别讲解可视化界面与 YAML 两种调用方式、cycle参数行为、目标Target选择规则、边界条件并给出可直接复制的自动化示例帮助你掌握在自动化与脚本中向前/向后步进选项的标准写法。动作概览作用于 select 实体的上一步在 Home Assistant 中select域表示一组预定义的可选值实体当前状态总是这组选项中的某一个。select.select_previous的含义非常直接将目标 select 实体移动到它选项列表中的上一个位置。官方文档给出的典型用途是逐项回退浏览一组预设presets。该动作的定义元数据如下摘自 select.select_previous.markdown 的 front matter动作名select.select_previous所属域select官方描述Selects the previous option of a select entity选择一个 select 实体的上一个选项关联动作select.select_first、select.select_last、select.select_next、select.select_option它与select.select_next是天然的一对前者向后回退后者向前推进。与select.select_first/select.select_last的组合则可以实现跳到列表起点 / 终点的效果。从可视化界面调用无需写 YAML如果你习惯在界面中搭建自动化和脚本Home Assistant 会一步步引导你完成配置无需任何 YAML 知识见 actions/ui_header.md。官方文档给出的完整操作步骤如下进入SettingsAutomations scenes。打开一个现有的自动化或脚本或选择Create automationCreate new automation新建。如果是新建自动化在When触发条件部分添加一个触发器。脚本Script不需要触发器——它们在被其他东西调用时运行。在Then do执行动作部分选择Add action添加动作。选择你要控制的对象在By target下参见下文 目标Target选择选中要回退的 select 实体。在该目标对应的动作列表中选择Select previous option。可选如果你不希望第一个选项回绕到最后一个请关闭Cycle选项。点击Save保存。UI 中的参数选项说明是否必填Cycle是否允许选择从第一个选项回绕到最后一个默认启用Enabled by default否在 YAML 中使用该动作如果你直接编写 YAML或希望确切了解 Home Assistant 底层做了什么YAML 技术参考会列出字段名、类型与必填项见 actions/yaml_header.md。YAML 中的动作名即select.select_previous一个最基础的示例是action: select.select_previous target: entity_id: select.washing_machine_program这段配置把select.washing_machine_program移动到它的上一个选项。在 YAML 中action后面还可以跟data字段来传递参数action: select.select_previous target: entity_id: select.washing_machine_program data: cycle: falseYAML 参数字段说明类型必填默认值cycle选择是否从第一个选项回绕到最后一个boolean否truecycle: true默认意味着当你已经位于第一个选项再执行本动作时会直接跳到最后一个选项形成一个循环cycle: false则会让选择停在第一个选项不再回绕。目标Target选择该动作必须有目标target目标是动作的作用对象见 actions/targets.md。你可以把动作指向单个实体、设备、区域、楼层或标签Home Assistant 会对目标背后的每一个匹配的select实体执行该动作Entity实体某个具体的select实体例如select.living_room。Device设备属于某个设备的全部select实体。Area区域某个房间/区域内的全部select实体。Floor楼层某个楼层上的全部select实体。Label标签共享某个标签的全部select实体。你还可以在同一个动作中混合多种目标类型例如同时添加一个具体实体和一个区域让动作一次性作用于两者。Good to know边界行为与注意事项官方文档明确列出了以下几点值得注意的行为这是实际使用中最容易踩坑的地方仅适用于 select 实体本动作只对select域的实体生效对其他域例如input_select之外的普通实体无效。当前选项未知时的行为如果实体的当前选项是 unknown未知执行本动作时会选择最后一个选项。这一点与select.select_next恰好相反——后者在当前选项未知时会选择第一个选项见 select.select_next.markdown 的 Good to know 部分。回绕行为默认开启默认情况下越过第一个选项后会回绕到最后一个将cycle设为false则停在第一个选项不再继续。实战示例用按钮每次回退一个选项官方文档提供了一个完整的自动化示例——每次按下按钮就把灯光场景预设向前一个即上一个选项移动触发器Trigger按钮被按下动作ActionSelect previous option目标Target灯光场景预设automation: - alias: Step to the previous light scene preset triggers: - trigger: state entity_id: input_button.previous_scene actions: - action: select.select_previous target: entity_id: select.light_scene_preset解析一下这段配置triggers监听input_button.previous_scene这个输入按钮的状态变化按下即触发actions中调用select.select_previous目标为select.light_scene_preset每按一次按钮场景预设就回退一档由于cycle默认开启回退到第一个选项后再按一次会直接跳到最后一个选项。与之对称如果你想要下一步效果把动作替换为select.select_next即可参见 select.select_next.markdown 中的同构示例。更多实用组合除了逐项回退还可以把本动作与其他 select 动作组合出更完整的状态控制逻辑1. 回退后停在第一个选项不循环action: select.select_previous target: entity_id: select.thermostat_preset data: cycle: false适合不希望从第一项又绕回最后一项的场景。2. 用select.select_first一键重置到起点每天早上把某个预设重置为第一个选项示例来自 select.select_first.markdownautomation: - alias: Reset the thermostat preset each morning triggers: - trigger: time at: 06:00:00 actions: - action: select.select_first target: entity_id: select.thermostat_preset3. 与input_select助手的对应关系如果你使用的是旧式input select 助手input_select域对应的动作是input_select.select_previous其参数语义与本动作一致默认从第一个选项回绕到最后一个cycle设为false则停在第一个选项见 input_select.select_previous.markdown。仓库变更日志显示2025.3 版本曾专门修正过input_select.select_previous动作中cycle字段的描述见 core-2025.3 变更日志可见该字段对行为的影响需要精确理解。动手试一试在正式编写自动化之前你可以在SettingsToolsActions开发工具中直接搜索该动作填写字段并点击Perform action在真实实体上观察效果全程无需编写一行 YAML见 actions/try_it.md。关联动作select.select_previous通常与以下动作配合使用均为同一select域文档位于source/_actions/目录下动作说明select.select_first将 select 实体设置为第一个选项select.select_last将 select 实体设置为最后一个选项select.select_next将 select 实体移动到下一个选项select.select_option直接指定要选择的某个选项值参考资料动作主文档source/_actions/select.select_previous.markdown对称动作source/_actions/select.select_next.markdown、source/_actions/select.select_first.markdown旧式助手动作source/_actions/input_select.select_previous.markdown公共段落模板source/_includes/actions/targets.md、yaml_header.md、ui_header.md、try_it.md【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考