Home Assistant 静音控制指南:使用 media_player.volume_mute 动作实现媒体播放器静音/取消静音
【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io
media_player.volume_mute是 Home Assistant 中用于对媒体播放器实体执行静音(mute)与取消静音(unmute)的核心动作。本文以 source/_actions/media_player.volume_mute.markdown 为骨架,结合仓库中的动作文档体系与集成源码,完整讲解该动作在 UI 与 YAML 两种模式下的用法、参数语义、目标(target)选择机制,并给出“电话响铃自动静音电视”等可直接落地的自动化实战示例,帮助你快速掌握通过自动化、脚本乃至开发者工具(Actions)精确控制任意媒体播放器静音状态的能力。
动作概览:静音的本质是什么
media_player.volume_mute的作用非常单一而明确:将目标媒体播放器的音量静音开关置于开启(muted)或关闭(unmuted)状态。它属于media_player域(domain),与该域下的音量调节动作构成完整的音量控制家族:
- media_player.volume_set:将音量设置为 0~1 之间的指定值;
- media_player.volume_up:音量调高;
- media_player.volume_down:音量调低;
- media_player.volume_mute:静音 / 取消静音(本文主角)。
从官方文档的定义看,该动作“只对支持静音功能的媒体播放器生效”(This action only works with media players that support muting)。也就是说,并非所有媒体播放器实体都具备静音能力,具体是否可用取决于接入的集成与硬件本身——这是使用时首先要记住的边界条件。
在 UI 中配置:图形化构建静音动作
如果你偏好通过界面而非 YAML 编写自动化与脚本,Home Assistant 会引导你一步步完成动作配置:
- 进入Settings>Automations & scenes(自动化与场景);
- 打开一个现有的自动化或脚本,或者选择Create automation>Create new automation(新建自动化);
- 如果是新建自动化,在When(何时)区域添加一个触发条件;脚本不需要触发器,它们在被其他内容调用时才运行;
- 在Then do(然后执行)区域选择Add action(添加动作);
- 选择你要控制的对象。在By target(按目标,详见下文 动作的目标)下选择要控制的媒体播放器;
- 在针对该目标显示的动作列表中,选择Mute/unmute media player(静音/取消静音媒体播放器);
- 将Muted(已静音)开关打开表示静音,关闭表示取消静音;
- 点击Save(保存)。
UI 中的选项
| 选项 | 说明 |
|---|---|
| Muted | 打开以静音媒体播放器,关闭以取消静音 |
整个配置过程无需接触任何 YAML 代码,Home Assistant 会实时生成并校验动作,适合不熟悉底层字段的用户快速搭建。
在 YAML 中使用:字段与参数详解
如果你直接编写 YAML,或者想确切了解 Home Assistant 在底层做了什么,本节提供完整的技术参考,列出 YAML 中使用的字段名、类型与必填性。
基础示例
在 YAML 中,该动作的调用名称为media_player.volume_mute,一个最基本的调用如下:
action: media_player.volume_mute target: entity_id: media_player.living_room data: is_volume_muted: true这个示例的作用是:静音media_player.living_room这台媒体播放器。
YAML 选项参考
| 字段 | 说明 | 必填 | 类型 | 默认值 |
|---|---|---|---|---|
is_volume_muted | 设为true表示静音媒体播放器,设为false表示取消静音 | 是 | boolean | false |
关键点解读:
is_volume_muted是唯一的数据字段。它的语义与 Home Assistant 中媒体播放器实体的is_volume_muted状态属性一一对应:当该属性为true时实体处于静音态,false时处于非静音态。动作本质上就是把这个布尔值写入目标实体。- 默认值为
false(取消静音),但官方标注其为必填项,实战中建议始终显式传值,避免歧义。 - 与 media_player.volume_set 不同,静音动作不涉及音量数值,因此不存在 0~1 的浮点范围校验,只需保证布尔值类型正确。
取消静音
将is_volume_muted改为false即为取消静音:
action: media_player.volume_mute target: entity_id: media_player.living_room data: is_volume_muted: false该动作不会改变音量大小本身——取消静音后音量会恢复到静音前的水平,这正是它区别于volume_set/volume_up/volume_down的地方。
动作的目标(Targets)
该动作必须指定目标(target)。目标是动作的作用对象,你可以将动作指向单个实体、设备、区域、楼层或标签,Home Assistant 会在目标背后命中的每一个media_player实体上执行该动作。
支持的目标类型:
- 实体(Entity):某一个具体的
media_player实体,例如media_player.living_room; - 设备(Device):归属于某台设备的所有
media_player实体; - 区域(Area):某个房间/区域内的所有
media_player实体; - 楼层(Floor):某个楼层上的所有
media_player实体; - 标签(Label):共享某个标签的所有
media_player实体。
你还可以在同一个动作中混用不同类型的目标。例如,在同一动作里同时添加一个具体实体和一个区域作为目标,让动作一次性作用于两者——这在“整屋统一静音”等批量场景中非常实用。
从集成源码看静音能力的实现
仓库中media_player域的集成文档(source/_integrations/media_player.markdown)是本动作的域级背景。更具体的实现线索出现在下游集成中,以 universal 集成 为例,它允许通过配置把静音动作与真实物理开关关联起来:
media_player: - platform: universal name: "Living Room" is_volume_muted: switch.living_room_mute根据该集成文档的说明,is_volume_muted属性既可以返回True,也可以返回开关的on状态来表示“已静音”,而volume_mute动作应当切换该静音设置。文档还特别建议:volume_up、volume_down、volume_mute三个命令与is_volume_muted属性应尽量一起配置,保证音量控制行为完整一致。
在 template 集成 中也能看到同样的属性语义:模板媒体播放器通过条件判断state_attr('media_player.receiver', 'is_volume_muted')来渲染静音状态,并用is_volume_muted: false / true响应静音切换请求。这印证了is_volume_muted作为该域标准状态属性的事实:无论哪种集成,静音动作的布尔参数最终都会落到这一属性上,供前端状态卡片、模板与自动化读取或改写。
可以推断:不同集成的静音实现路径不同(有的直接写入设备属性,有的通过开关状态映射),但对外暴露的动作参数与状态属性保持统一,这正是
media_player.volume_mute能跨集成以相同方式调用的底层原因。
实战:电话响铃时自动静音电视
静音动作最常见的价值场景是:当某些事情需要你注意时(例如来电),自动降低环境噪音。官方文档给出了一个可直接套用的自动化模板。
场景设计:
- 触发条件(Trigger):电话正在响铃(
binary_sensor.phone_ringing状态变为on); - 动作(Action):静音/取消静音媒体播放器;
- 目标(Target):客厅电视(
media_player.living_room); - 已静音(Muted):开启。
- 目标(Target):客厅电视(
完整 YAML:
- alias: "Mute the TV when the phone rings" triggers: - trigger: state entity_id: binary_sensor.phone_ringing to: "on" actions: - action: media_player.volume_mute target: entity_id: media_player.living_room data: is_volume_muted: true将这个自动化保存后,一旦手机响铃,客厅电视便会立即静音;若想接完电话后自动恢复音量,可在该自动化之外再建一个“响铃结束”触发器(to: "off")并调用同样的动作、将is_volume_muted设为false。
立即验证:开发者工具中的 Actions 页
想在不写一行 YAML 的情况下验证静音动作是否生效?进入Settings>Tools>Actions(开发者工具中的“动作”页面),搜索media_player.volume_mute,填写目标实体与is_volume_muted参数,点击Perform action(执行动作),即可在真实实体上立即观察效果——这是排查“为什么没静音”最直接的手段。
排错提示
- 动作只对支持静音的播放器生效。如果目标设备本身不支持静音(例如某些仅支持音量增减的投屏设备),动作不会产生预期效果,且不同集成的表现可能不同;
- 检查目标是否命中:在开发者工具中确认目标实体确实存在、未被禁用,且属于
media_player域; - 区分静音与音量:静音不等于把音量设为 0。如果取消静音后没有声音,请检查
volume_level是否本身就被设为了 0; - 结合相关动作排查:
media_player.volume_mute通常与 media_player.volume_set、volume_up、volume_down协同使用,若静音逻辑异常,可从整个音量链路(音量值、静音状态、设备能力)逐项排查。
总结
media_player.volume_mute通过一个布尔参数is_volume_muted即可完成对任意支持静音的媒体播放器的静音/取消静音控制,UI 向导与 YAML 两种配置路径均简单直接,配合实体/设备/区域/楼层/标签五种目标类型,既能控制单台设备,也能批量作用于整层或全屋。掌握该动作的字段语义与目标机制,再结合“响铃静音”类自动化模板,即可快速构建符合真实生活场景的音量自动化策略。
【免费下载链接】home-assistant.io:blue_book: Home Assistant User documentation项目地址: https://gitcode.com/GitHub_Trending/ho/home-assistant.io
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考