ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Home Assistant input_select.set_options 动作完全指南:动态替换下拉助手(Dropdown Helper)选项列表

Home Assistant input_select.set_options 动作完全指南:动态替换下拉助手(Dropdown Helper)选项列表 Home Assistant input_select.set_options 动作完全指南动态替换下拉助手Dropdown Helper选项列表【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io在 Home Assistant 的自动化与脚本中input_select.set_options是一个用于整体替换下拉助手input select helper选项列表的核心动作。本文以官方文档 source/_actions/input_select.set_options.markdown 为主体结合 input_select 集成文档 与仓库内的动作文档渲染插件源码系统讲解该动作的适用场景、UI 操作步骤、YAML 写法、参数约束、目标target语义与注意事项。读完本文你将能够在自动化、脚本、场景与 YAML 配置中熟练地动态改写任意下拉助手的候选项并理解整表替换行为对当前选中项的影响。动作是什么一个整体换表而非增删一项的动作下拉助手input select是 Home Assistant 中的一种 helper 实体它保存一个从预定义选项列表中选出的值。由于该值与物理设备无关你可以把它当作自动化、脚本和仪表盘之间的共享可选项例如今天谁做饭、恒温器模式或房间场景。input_select.set_options动作的核心语义只有一句话用一组全新的选项替换该助手的完整选项列表。文档明确指出Use this action to replace the full list of options for one or more input selects.因此它适合整体变更候选集的场景比如根据当前房间状态把模式选择助手的选项从[Auto, Off]换成[Auto, Off, Cool, Heat]在自动化运行时把食谱选择助手的列表替换为当天可选的菜谱与其他动作配合动态重建一个下拉菜单的候选项。与它形成对照的是input_select.select_option在现有列表中选择一个选项不可越界和input_select.select_next切换到下一个选项详见文末相关动作一节。前置条件创建一个下拉助手使用该动作之前必须先拥有一个input_select实体。你可以通过两种方式创建方式一界面创建进入Settings Devices services Helpers选择Create helper选择Dropdown类型按向导填写名称与选项即可。方式二configuration.yaml 声明# Example configuration.yaml entry input_select: who_cooks: name: Who cooks today options: - Paulus - Anne Therese initial: Anne Therese icon: mdi:panda living_room_preset: options: - Visitors - Visitors with kids - Home Alone各配置键的含义依据 input_select 集成文档键必填类型说明options是list可供选择的选项列表name否string助手的友好名称initial否mapHome Assistant 启动时的初始值默认为options的第一个元素icon否icon前端中显示在该输入元素前的图标需要注意一个 YAML 陷阱由于 YAML 将布尔值视为等价任何形式的On、Yes、Y、Off、No、N不区分大小写作为选项名时都会在未加引号的情况下被替换为True或False。文档建议对这类选项名使用引号包裹。状态恢复方面如果设置了合法的initial值集成会以此值启动否则会恢复 Home Assistant 停止前的状态。从用户界面使用该动作如果你习惯可视化构建自动化或脚本官方文档给出了完整的分步流程进入Settings Automations scenes打开现有自动化或脚本或选择Create automation Create new automation新建自动化时在When部分添加触发器脚本不需要触发器它们在被调用时运行在Then do部分选择Add action在By target目标中选择要修改的下拉助手实体在针对该目标显示的动作列表中选择Set input select options输入要设置的Options选择Save保存。界面参数UI 中只有一个输入项Options——要设置的完整选项列表至少需要一个选项At least one option is required。在 YAML 中使用该动作在 YAML 中该动作以input_select.set_options引用。基础示例如下取自原文档action: input_select.set_options target: entity_id: input_select.who_cooks data: options: - Alice - Bob - Paulus该示例将input_select.who_cooks助手的选项替换为上面列出的三个值。YAML 参数详解参数必填类型说明options是list要设置的完整选项列表至少需要一个选项在 UI 中该参数同样名为options语义与 YAML 完全一致。本文档的 YAML 参数表由仓库中的 Jekyll 插件 plugins/options_yaml.rb 渲染它复用与集成配置块相同的config-vars布局、类型链接与 Required/Optional 徽标。真正的校验逻辑位于 plugins/configuration.rb#L60-L151该函数会强制要求每个参数声明合法的type与description并在缺省时抛出ArgumentError——这意味着文档页面上展示的每一个参数项都经过了结构校验可作为准确的技术参考。在自动化中动态设置选项由于set_options是一个普通动作你可以在任何自动化中动态调用它。官方集成文档给出了直接在configuration.yaml中声明自动化的完整示例# Example configuration.yaml entry automation: - alias: example automation triggers: - trigger: event event_type: MY_CUSTOM_EVENT actions: - action: input_select.set_options target: entity_id: input_select.who_cooks data: options: [Item A, Item B, Item C]当事件MY_CUSTOM_EVENT触发时该自动化会把input_select.who_cooks的选项替换为 Item A/B/C。联动玩法示例同样来自官方集成文档下拉助手可以与 MQTT 双向联动——一个自动化订阅thermostatMode主题收到载荷后通过input_select.select_option把option: {{ trigger.payload }}写入助手另一个自动化监听助手状态变化再通过mqtt.publish把当前值发布回同一主题retain: true。如果需要动态更换主题对应的模式集合则可将select_option换成set_options实现主题变、选项集变的完整闭环。在场景Scene中设置选项下拉助手的选项列表同样可以在场景中设置。设置时必须同时指定新的state# Example configuration.yaml entry scene: - name: Example2 entities: input_select.who_cooks: options: - Alice - Bob - Paulus state: Bob激活该场景时input_select.who_cooks的选项会被替换为 Alice/Bob/Paulus且当前选中值被设置为Bob。仅设置单一目标选项的场景写法为input_select.who_cooks: Paulus。动作的目标Targets语义该动作必须有目标。目标是动作的作用对象你可以把动作指向单个实体、设备、区域、楼层或标签Home Assistant 会对目标背后的每个匹配input_select实体执行该动作Entity实体一个具体的input_select实体如input_select.who_cooksDevice设备属于某设备的所有input_select实体Area区域某个房间/区域内的所有input_select实体Floor楼层某一楼层上的所有input_select实体Label标签共享某标签的所有input_select实体。你也可以在同一个动作中混用不同类型的目标例如同时指定一个具体实体和一个区域让动作对两者一并生效。目标语义的完整说明见仓库模板 source/_includes/actions/targets.md所有input_select系列动作页面都复用了该模板。关键行为整表替换与选中项保留规则原文档在Good to know一节明确了两条行为约定该动作替换的是整个选项列表而不是在现有列表中追加或删除某项当前选中的选项只有在仍然属于新列表时才会被保留。如果新列表不包含当前选中值Home Assistant 会相应调整选中状态——因此换表之后应显式地或通过后续的input_select.select_option确认期望的选中值尤其是当新列表与旧列表无交集时。这一点与向场景写入 options 时必须同时指定 state的约束相互印证换表与定值是两个必须显式表达的动作。相关动作这些动作与input_select.set_options配合使用效果最佳链接指向本仓库中的对应文档input_select.select_option在现有选项列表中选中某个具体选项option参数为必填字符串且必须是该助手已配置的选项之一input_select.reload重新加载input_select集成配置通常在修改configuration.yaml后调用。典型组合是先set_options换表再select_option定值例如场景切换类自动化中保证换表后状态一致。快速验证与排错立即试跑进入Settings Tools Actions搜索input_select.set_options填入目标实体与options列表选择Perform action即可在不写一行 YAML 的情况下观察实际实体的变化。常见问题排查界面中找不到 Dropdown 助手选项下拉助手由default_config:提供若你在configuration.yaml中移除了它则 Helpers 界面不再出现Dropdown。解决方式为添加input_select:配置并重启 Home Assistant之后再从界面创建助手详见 集成文档 Troubleshooting。动作执行后选中值不符合预期检查新选项列表是否仍包含原选中项不包含时按前述规则会失去原选中值请显式设置期望状态。options为空导致动作失败该参数至少需要一个选项空列表不符合参数约束。小结input_select.set_options是动态构建下拉助手候选集的唯一官方入口UI 与 YAML 两条路径的语义完全一致核心是以完整新列表覆盖旧列表且换表后需关注选中项的去留。将其与select_option、select_next、MQTT 事件与场景机制组合使用即可在自动化体系中构建出高度灵活、可实时变化的选择型 UI 控件。如需进一步了解助手的创建、状态恢复与配置项细节可直接查阅 input_select 集成文档。【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表