Home Assistant remote.delete_command 动作完全指南:删除已学习遥控命令的 UI 与 YAML 实战
2026/9/17 16:49:06 网站建设 项目流程

Home Assistant remote.delete_command 动作完全指南:删除已学习遥控命令的 UI 与 YAML 实战

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

remote.delete_command是 Home Assistant Remote(遥控器)集成提供的核心动作之一,用于从支持该能力的 remote 实体中删除一条或多条已学习的红外(IR)/射频(RF)命令。本文基于 home-assistant.io 官方文档仓库中的 remote.delete_command 动作参考,系统讲解该动作的适用前提、UI 可视化配置步骤、YAML 完整参数与自动化示例,并结合 Remote 集成文档 与 Broadlink 集成文档 中的真实用法,帮助你在自动化与脚本中准确清理过时、错误或需要重新学习的遥控命令。

一、动作概述:删除一条或多条已学习的命令

Delete remote command(删除遥控命令)动作会从支持的 remote 实体中删除一条命令或一个命令列表。它通常在以下场景中使用:

  • 学习命令时出错,需要删掉重新学习;
  • 某条命令已不再需要,希望清理遥控器的命令数据库;
  • 命令被修改或更换,需要先删除旧版本再通过remote.learn_command重新录入。

值得注意的是,是否支持删除命令,取决于具体的 remote 集成以及所选的 remote 实体(原文档明确指出 "Deleting support depends on the remote integration and the selected remote entity")。也就是说,并非所有遥控器实体都实现了删除能力,使用前应查阅对应集成的文档确认。

在动作体系中,remote.delete_command与 Learn remote command、Send remote command 构成完整闭环:

动作作用
remote.learn_command向支持学习能力的遥控实体录入一条或多条命令
remote.send_command通过遥控实体发送已保存的命令
remote.delete_command删除已保存的命令

从源码结构看,Remote 实体域(domain)由remote域定义,Remote 集成文档 明确其 "Provides actions to turn remotes on or off, toggle them, send commands, learn commands, and delete commands",即管理每个遥控器的状态,并提供开关、切换、发送、学习与删除命令的动作集合。

二、在 UI 界面中配置该动作

按照 UI 操作说明 的指引,要从自动化(automation)或脚本(script)中删除遥控命令,按以下步骤操作:

  1. 进入设置>自动化与场景(Settings > Automations & scenes)。
  2. 打开现有的自动化或脚本,或选择创建(Create)新建一个。
  3. 如果是新建自动化,需要在当……时(When)部分添加一个触发器;脚本则不需要触发器,脚本由其他东西调用时运行。
  4. 然后执行(Then do)部分,选择添加动作(Add action)。
  5. 选择要控制的对象:在按目标(By target,参见下方"动作的目标"一节)下,选择要删除命令的 remote 实体、设备、区域、楼层或标签。
  6. 从该目标对应的动作列表中,选择删除遥控命令(Delete remote command)。
  7. 命令(Command)中输入要删除的命令。
  8. 可选:在设备(Device)中输入包含该命令的设备 ID。
  9. 点击保存(Save)。

UI 中的可选项

选项说明是否必填
设备(Device)将从其删除命令的设备 ID
命令(Command)要删除的单条命令或命令列表

三、YAML 用法与完整参数说明

在 YAML 中,该动作以remote.delete_command引用。最基础的写法如下:

action: remote.delete_command target: entity_id: remote.living_room data: device: television command: mute

上述示例的作用是:从remote.living_room实体中,删除television设备的mute命令。

YAML 数据参数(Options in YAML)

参数说明是否必填类型
device将从其删除命令的设备 IDstring
command要删除的单条命令或命令列表string

关于类型说明:command参数在官方参考文档中标为 string 类型且必填,但结合下方"删除多个命令"的示例可以确认,它同时支持 YAML 列表形式(多条命令一起删除)。device参数为可选,当遥控器只对应单个设备时可不填;当遥控器管理多个设备(如电视、机顶盒、投影仪)时,用它精确定位命令所属的设备。

删除多条命令

command参数支持命令列表,一次动作即可批量删除:

action: remote.delete_command target: entity_id: remote.living_room data: device: television command: - power - input_hdmi_1

四、动作的目标(Targets)

该动作必须指定一个目标(target),目标是动作作用的对象。根据 动作目标说明,你可以把动作指向:

  • 实体(Entity):某个具体的 remote 实体,如remote.living_room
  • 设备(Device):属于某设备的所有 remote 实体;
  • 区域(Area):某个房间或区域内的所有 remote 实体;
  • 楼层(Floor):某个楼层上的所有 remote 实体;
  • 标签(Label):共享某标签的所有 remote 实体。

你还可以在同一次动作中混合多种目标类型,例如同时指定一个具体实体和一个区域,让动作一次性作用于两者覆盖的所有匹配 remote 实体。

五、自动化实战示例

示例一:按下一个辅助按钮删除单条已学习命令

当用户单独创建的辅助(helper)按钮被按下时,删除已学习的 mute 命令。

  • 触发器(Trigger):状态(State)
    • 实体(Entity):删除静音(input_button.delete_mute
  • 动作(Action):删除遥控命令(Delete remote command)
    • 目标(Target):客厅遥控器
    • 设备(Device):television
    • 命令(Command):mute

对应 YAML:

automation: alias: "Delete TV mute command" triggers: - trigger: state entity_id: input_button.delete_mute actions: - action: remote.delete_command target: entity_id: remote.living_room data: device: television command: mute

示例二:按下一个辅助按钮批量删除多条命令

当用户单独创建的辅助按钮被按下时,删除几条准备重新学习的电视命令。

  • 触发器(Trigger):状态(State)
    • 实体(Entity):删除电视命令(input_button.delete_tv_commands
  • 动作(Action):删除遥控命令
    • 目标(Target):客厅遥控器
    • 设备(Device):television
    • 命令(Command):power、input_hdmi_1

对应 YAML:

automation: alias: "Delete TV commands" triggers: - trigger: state entity_id: input_button.delete_tv_commands actions: - action: remote.delete_command target: entity_id: remote.living_room data: device: television command: - power - input_hdmi_1

这两个示例展示了把remote.delete_commandinput_button辅助按钮结合的典型模式:通过"状态"触发器监听按钮按下,触发删除动作。你也可以把同样的逻辑放进脚本,供其他自动化调用。

六、真实集成示例:Broadlink 中的命令删除

为了说明该动作在真实集成中的用法,可以看仓库中 Broadlink 集成文档 的 "Deleting commands" 一节。该集成明确支持remote.delete_command,用于删除通过remote.learn_command学习到的命令,并给出以下参数约定:

数据属性可选说明
entity_id遥控器的 ID
device设备名称
command要删除的命令名称

删除单条命令的脚本示例:

script: delete_tv_power: sequence: - action: remote.delete_command target: entity_id: remote.bedroom data: device: television command: power

批量删除多条命令的脚本示例:

script: delete_tv_commands: sequence: - action: remote.delete_command target: entity_id: remote.bedroom data: device: television command: - power - source - menu

注意:Broadlink 文档中此处devicecommand均标注为必填,与动作参考文档(device可选)略有差异——这印证了具体参数要求由集成实现决定,编写配置时应以所用集成的文档为准。

从版本历史看,remote.delete_command在 Broadlink 集成中的实现最早出现于 2021.2 版本发布说明(release-20212.markdown 中记录 "Implement remote.delete_command in the Broadlink integration"),说明这是一个随各集成逐步落地的能力。

七、注意事项(Good to know)

根据官方动作参考文档,使用remote.delete_command时需要记住以下几点:

  • 目标限制:该动作只作用于支持删除命令的 remote 实体,目标中不支持的实体会被跳过或报错。
  • 删除即移除:删除命令会将其从 remote 集成的命令数据库中移除。如果之后还要发送这条命令,必须先重新学习。
  • 命名取决于集成:具体的设备 ID 和命令名称取决于所选的 remote 集成,不同集成对设备名、命令名的约定可能不同;命令不被接受时,应查阅所用集成的文档核对命名。
  • 重新学习:要再次添加被删除的命令,请使用 Learn remote command 动作。该动作支持指定命令类型(ir/rf)、是否存为备选代码(alternative)以及学习超时时间(timeout)等参数,学习完成后即可用 Send remote command 发送。
  • 发送前确认存在:与发送命令类似,如果遥控器不可用,删除动作同样无法正常完成;删除前可通过开发者工具或实体状态确认实体在线。

八、相关动作一览

remote.delete_command在动作参考文档中标记的相关动作(related actions)为:

  • Learn remote command:学习命令,删除后重新录入的命令入口;
  • Send remote command:发送已学习的命令,可配合num_repeats(重复次数)、delay_secs(重复间隔)、hold_secs(按住时长)等参数使用。

三者配合可以覆盖"学习 → 发送 → 删除"的完整遥控命令生命周期管理:先用learn_command录入,日常用send_command触发,需要清理或重录时用delete_command删除。掌握了remote.delete_command的 UI 与 YAML 两种配置方式,你就能在自动化与脚本中自如地维护遥控命令库,避免误存、错存命令长期占用遥控器存储空间。

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

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

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

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

立即咨询