十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

Home Assistant 中 input_text.reload 动作详解:从 YAML 热加载文本助手而不重启

Home Assistant 中 input_text.reload 动作详解:从 YAML 热加载文本助手而不重启 Home Assistant 中 input_text.reload 动作详解从 YAML 热加载文本助手而不重启【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io导读input_text.reload是 Home Assistant 内置的一个服务Service文档中统称 action用于在不重启 Home Assistant 的情况下从configuration.yaml重新加载你配置的Input text文本输入助手。本篇文章以仓库中的 input_text.reload 动作文档 为主线结合 Input text 集成文档 与其姊妹动作 input_text.set_value完整讲解该动作的适用场景、UI 与 YAML 两种用法、权限与目标限制以及与其他 helper 类 reload 动作的共性。读完本文你将能熟练地在自动化、脚本与开发工具中触发文本助手的 YAML 配置重载并理解它背后与 Home Assistant 配置加载机制的关系。1. 为什么要用 input_text.reload在 Home Assistant 中Input text是一种 helper助手类型的集成它创建一个存储文本值的实体该值与物理设备无关可被自动化、脚本和仪表盘当作可调节的文本设置来使用例如保存状态消息、名称或代码也可以设置为password模式以遮蔽输入内容。具体集成说明见 Input text 集成文档。文本助手有两种创建途径通过 UI 创建在Settings Devices services Helpers中创建这类助手由系统内部存储管理通过 YAML 创建在configuration.yaml中声明例如# Example configuration.yaml entries input_text: text1: name: Text 1 initial: Some Text text2: name: Text 2 min: 8 max: 40 text3: name: Text 3 pattern: [a-fA-F0-9]* text4: name: Text 4 mode: password问题在于当你修改了configuration.yaml中input_text:段落的内容后常规做法是重启 Home Assistant 才能让改动生效。而input_text.reload动作专门解决这一痛点——它只重载 YAML 中配置的 input text helpers全程无需重启。一个关键边界需要牢记这也是原文档明确指出的行为差异通过 UI 创建的 helpers 不受 reload 影响。也就是说该动作只作用于 YAML 配置来源的文本助手通过 UI 创建的 helper 由 Home Assistant 自动管理重载动作不会触碰它们。从源码结构看这类“仅重载 YAML 配置、不动 UI 创建项”的设计同样出现在 input_boolean、input_button、input_datetime、input_number、input_select 等一整套 helper 类动作中它们的文档措辞几乎一致见 input_boolean.reload、input_button.reload、input_datetime.reload、input_number.reload、input_select.reload可以推断它们共享同一套“配置热重载”的底层机制。2. 前置知识input_text 的 YAML 配置参数要正确使用 reload先要理解它重载的对象。下面是从 Input text 集成文档 中完整继承的配置参数表它们是 YAML 方式定义文本助手时的全部可用键配置键说明必填类型默认值input_text输入的别名可配置多个条目是map—name文本输入在界面上的友好名称否string—min文本值允许的最小长度否integer0max文本值允许的最大长度255 是实体状态允许的最大字符数上限否integer100initialHome Assistant 启动时的初始值否string—icon显示在前端输入元素前的图标否icon—pattern用于客户端校验的正则表达式否string空mode取text或passwordpassword 模式用于安全输入否stringtext配套的**状态恢复Restore state**规则也值得了解如果为initial设置了合法值集成启动时会以该值作为初始状态否则它会恢复 Home Assistant 停止前该实体保存的旧状态。这意味着 reload 之后未设置initial的实体通常仍会保留其运行时的当前值。另外input_text实体在 Scene场景 中也可以直接指定状态例如# Example configuration.yaml entry scene: - name: Example1 entities: input_text.example: Hello!3. 从 UI 使用 reload 动作原文档给出了在自动化或脚本中通过界面添加该动作的完整操作步骤这里完整保留前往Settings Automations scenes。打开一个现有的自动化或脚本或选择Create automationCreate new automation新建。如果是新建自动化需在When部分添加一个触发器脚本不需要触发器它们在被其他东西调用时运行。在Then do部分选择Add action。在搜索框中搜索并选择Input text: Reload input texts。选择Save保存。UI 中的选项该动作在 UI 中没有额外选项。值得说明的是ui_header 文档片段 指出如果你偏好可视化构建自动化与脚本Home Assistant 会一步步引导你完成动作配置——选择目标、微调选项、保存全程无需 YAML 知识。而 reload 动作恰好是“零选项”的典型它没有 targets、没有参数点选即用。4. 在 YAML 中使用 reload 动作在 YAML 中该动作的引用名称为input_text.reload。原文档给出的基础示例如下action: input_text.reload在自动化或脚本的actions段中写法通常是automation: - alias: Reload input text helpers after config change triggers: - trigger: event event_type: homeassistant.start actions: - action: input_text.reloadinput_text.reload执行后会立即从你的 YAML 配置中重新加载文本助手——新增、修改或删除的 YAML 定义随之生效。YAML 中的选项该动作在 YAML 中同样没有任何额外选项。这一点可以从动作文档与 yaml_header 技术参考 的对应关系中得到印证当某个动作在 YAML 中没有字段时文档会明确标注“no additional options”。也就是说调用它不需要data:或target:参数直接声明动作名即可。从实现角度看这也是合理的reload 属于“全局配置热重载”类动作动作本身没有业务参数它只负责让 Home Assistant 重新解析configuration.yaml中对应的input_text:段落并更新实体注册表。5. 关键行为与权限限制原文档对 reload 动作的行为边界描述得非常清楚这里逐条展开不支持 targets在 UI 中该动作不会提示你选择区域、设备、实体或标签。因为重载是针对整个input_textYAML 配置块而不是针对单个实体所以不存在“选择某个文本助手来重载”的概念。仅管理员可执行只有拥有管理员权限的用户才能运行此动作。这与 helper 配置属于系统级配置的事实一致——重载会改动实体集普通用户不应有此权限。重载范围仅限 YAMLUI 创建的 helpers 不受影响见第 1 节。不需要重启这是该动作存在的核心价值——修改 YAML 后立即生效缩短了配置迭代周期。6. 验证与调试在开发工具中直接触发除了在自动化/脚本中使用你还可以在Settings Tools Actions即开发者工具中直接搜索并执行该动作填写字段后点击Perform action即可在真实实体上观察效果无需编写任何 YAML参见 try_it 文档片段。一个典型的“改配置 热重载”工作流是编辑configuration.yaml在input_text:下新增或修改一个文本助手定义。打开Settings Tools Actions搜索input_text.reload执行Perform action。回到Settings Devices services Helpers确认新增/修改的文本助手已经出现。若想验证实体当前值可调用配套的 input_text.set_value 动作设置新值并观察实体状态变化。7. 与 input_text.set_value 的配合input_text.reload在动作文档中声明的关联动作是 input_text.set_valuereload 与 set_value 互相引用为 related actions相关机制见 related 文档片段。两者分工明确reload负责“结构”层面的更新——让 YAML 中定义的文本助手及其name、min、max、pattern、mode等约束生效set_value负责“内容”层面的更新——为指定实体设置文本值action: input_text.set_value target: entity_id: input_text.welcome_message data: value: Hello!需要特别注意的是 set_value 的取值约束这也是 reload 后配置立即生效的体现新值必须符合该文本助手配置的min与max长度范围若配置了pattern还必须匹配该正则表达式。也就是说如果你通过 reload 收紧了一个文本助手的长度限制或模式校验那么此后 set_value 写入的值也必须满足新的约束。一个完整的自动化示例继承自集成文档展示了 set_value 在 YAML 动作中的典型用法# Example configuration.yaml entry using input_text in an action in an automation input_text: bedroom: name: Brightness automation: - alias: Bedroom Light - Custom triggers: - trigger: state entity_id: input_select.scene_bedroom actions: - action: input_text.set_value target: entity_id: input_text.bedroom data: value: {{ states(input_select.scene_bedroom) }}8. 常见问题与排障提示改了 YAML 但 reload 后没生效先检查语法input_text:段落缩进、键名是否正确。reload 只负责加载不会给出详细的 YAML 解析报告语法错误通常在 Home Assistant 日志中体现。想重载 UI 创建的 helper不需要也做不到——UI 创建的 helper 由系统自动管理不参与 YAML reload。非管理员执行失败这是预期行为reload 仅限管理员权限。找不到“Text”helper 选项根据集成文档的 Troubleshooting 章节Text helper 由default_config:提供如果你在configuration.yaml中移除了default_config:则需要显式添加input_text:并重启 Home Assistant之后才能从 UI 创建文本助手。这也再次说明input_text的 YAML 声明以及 reload 动作与default_config配置体系之间的依赖关系。9. 小结input_text.reload是 Home Assistant helper 体系中一个体积小但高价值的运维动作它让 YAML 配置的文本助手可以在不重启的情况下热加载配合input_text.set_value可完成“结构更新 内容写入”的完整闭环。理解它的使用边界仅 YAML、无 targets、仅管理员和与配置参数的联动min/max/pattern等约束在 reload 后立即生效能让你在维护自动化配置时更加得心应手。如需进一步深入可继续阅读Input text 集成文档配置参数、状态恢复、场景与自动化示例input_text.set_value 动作文档配套的值设置动作input_select.reload 动作文档 等同族 reload 动作对比理解 helper 热重载机制【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表