自从把PS5接在客厅主力电视上之后,我一直在跟“开机三连”较劲:先摸黑找电视遥控器按开机,再按PS5手柄唤醒主机,等画面出来后如果没自动切到对应的HDMI输入,还要再翻一次遥控器……这种体验说不上崩溃,但每天都重复一遍就很烦。AnyPS5 就是趁周末把这套动作改造成全自动联动的折腾记录,核心思路很简单:把PS5、电视、音响当成一个整体去管理,用 HDMI CEC 加红外宏命令解决“谁该醒、谁该切、谁该响”的问题。如果你家里也是 PS5 配普通电视加外接音响,或者你想给家里人做一套“开机只需按一下”的简化方案,这篇内容应该能直接拿来参考。
1. 为什么做 AnyPS5:从“开机三连”到一键触发
1.1 多设备场景里的真实痛点
多数人家里接游戏主机的环境不是一套完整的家庭影院,而是客厅那台日常电视,再外接一条回音壁或者一对有源音箱。这就带来了一个很典型的组合:PS5 有自己的手柄电源键,电视有电视遥控器,音响大概率只有红外遥控,甚至没有遥控。于是每次玩游戏前,人的动作会变成:开电视、切输入源、开音响、按手柄开机。四个动作里只要有一个顺序不对,比如先开了主机再开电视,电视就会因为“当前没有信号输入”而跳到一个空的黑屏画面,逼着你再手动切一次。
AnyPS5 的目标不是把这些遥控器都丢掉,而是把这些动作压缩成一个触发点:你只需要按一下手柄上的 PS 键,后面的电视上电、输入源切换、音响唤醒全部自动完成。反向也一样,主机进入待机时,电视和音响也跟着进入低功耗状态,不用再单独关两个设备。
1.2 联动方案的边界与原则
做这套联动之前,我先给自己定了几条原则,避免把简单问题搞复杂。
第一,能用标准协议解决的,不引入额外硬件。PS5 和电视之间的联动本来就有 HDMI CEC,开了这个功能之后,主机状态变化是可以作为触发信号被电视感知的,不需要在 PS5 上装任何传感器。
第二,补盲区用红外,不用改装。电视非原厂遥控的输入源切换、老音响的开机,这些都是 CEC 覆盖不到或覆盖不完全的地方。红外学习遥控器作为“执行器”去补发这些命令,是最稳妥、风险最低的办法。
第三,不碰主机的电源线。网上很多智能家居方案喜欢给所有设备装智能插座,靠通断电来控制。但这个思路对游戏主机来说非常不友好,容易跳过正常的待机流程,甚至有损坏存储介质的风险。所以 AnyPS5 里所有跟电源相关的操作,都只作用于电视和音响这类普通家电,绝对不让 PS5 直接断交流电。
这三条原则决定了整套方案的结构:CEC 提供状态感知和主机唤醒,红外提供最终执行,电视充当中间的桥接设备。接下来我把每一层都拆开说明。
2. 拆开看 AnyPS5 的技术内核:CEC 负责唤醒,红外负责切换
2.1 HDMI CEC 到底是什么,为什么它能成为触发源
HDMI CEC 是 HDMI 标准里的一组控制指令,物理上跑在 HDMI 线缆里的一条低速信号线上,逻辑上让所有接入同一台电视的 HDMI 设备可以互相发消息。它的厉害之处在于:不需要额外接线,不需要配置 IP,只要设备支持并且开关打开,就能在一个总线里通信。
跟 AnyPS5 直接相关的 CEC 指令主要有三类。第一类是“One Touch Play”,电视开机或某个播放设备开机时广播,让整个链路里的设备跟着上电。第二类是“Active Source”,一个播放设备真正开始输出画面时,把自己标记为当前信号源,电视收到后会把自己切到那条输入。第三类是“System Standby”,一个设备进入待机时广播,告诉其他设备一起待机。
PS5 在 CEC 体系里的逻辑地址通常是播放设备,电视的逻辑地址是 0,功放或音响是 5。实际调试时,如果能看到设备列表,就可以确认 PS5 是否已经被电视识别成播放设备。只要 PS5 被识别,它按手柄开机时发出的 Active Source 消息,就能被电视抓到并触发输入源自动切换。这也是 AnyPS5 整个自动化里最可靠的一条链路,因为它是 HDMI 标准的一部分,不是靠某个厂商的私有生态。
2.2 红外宏:补上 CEC 管不到的那部分
CEC 的局限也很明显:它只能控制支持 CEC 的设备。普通电视的原厂遥控功能里,尤其是“切换到第三个 HDMI 输入”这种命令,不一定会作为 CEC 指令开放给其他设备;更别说老音响了,很多音响只认红外遥控,连 HDMI 口都没有。
所以 AnyPS5 选择用带红外学习功能的控制设备来补位。原理很简单:控制设备上有红外发射管,先通过学习模式把原装遥控器发出的 38kHz 红外脉冲录下来,保存成一条“宏命令”,然后在需要的时候按顺序发射出去。宏命令不是只发一条码,而是可以串联多条,比如“先等 500 毫秒,再发电视的 HDMI2 切换码,再等 200 毫秒,再发音响电源码”。这样就把多个遥控器的按键动作合并成了一次调用。
这里有个细节要注意:红外编码的格式五花八门,常见的有 NEC、Sony SIRC、Philips RC5 等。学习型遥控器一般都能录,但录制时环境光不能太强,发射头和接收窗的距离要控制在 20 到 50 厘米,否则录下来的信号可能断码或者幅度不够。我试过在靠近窗边的地方学习,白天强光下录出来的码经常发射没反应,挪到暗处重新录就好了。
2.3 为什么我坚决不用智能插座直接控制 PS5
这是很多人容易踩的坑。从自动化角度想,给 PS5 装一个带电量统计的智能插座,检测到待机功率降到某个值就自动断电,多省事?但实际用下来有三层问题。
第一层是安全问题。强制断电会让主机跳过系统里的待机流程,正在后台下载的游戏会中断,缓存数据可能损坏。虽然概率不高,但一旦发生就是麻烦事。第二层是逻辑问题。智能插座断电后,PS5 只是断开了交流电,再次通电时并不会自动开机,它依然停留在需要按电源键的状态。也就是说你省掉的不是“开机动作”,而是“关机动作”,用户体验完全不连贯。第三层是误判问题。PS5 待机时也有一定功耗,而且不同游戏状态下的功耗差异很大,靠功率阈值判断状态很容易把“正在下载”误判成“已关机”。
所以 AnyPS5 里有一条规定:PS5 的电源状态永远交给它自己的待机机制,任何第三方设备都不得直接切断主机供电。
3. 实战操作:硬件选型、接线和规则配置
3.1 设备清单与各自承担的角色
我没有用太复杂的硬件,整套系统里真正核心的设备只有四件,另外一件是可选的感知增强设备。
| 设备 | 在 AnyPS5 中的角色 | 主要联动方式 |
|---|---|---|
| PS5 | 信号源、整个流程的触发源 | 通过 HDMI CEC 发送 Active Source 消息 |
| 电视 | 显示终端、CEC 消息的桥接设备 | 接收 CEC 指令并自动切换 HDMI 输入 |
| 音响/回音壁 | 音频输出设备 | 通过 eARC/ARC 回传音频,用红外宏控制电源 |
| 红外学习遥控器 | 执行器 | 发射电视输入切换码和音响电源码 |
| 带电流检测的智能插座 | 可选感知层 | 检测音响或电视的实际功耗,辅助判断设备是否真的开机 |
这里的红外学习遥控器不需要太贵,关键是三点:支持宏命令,就是一段脚本里可以串多条红外码;支持本地局域网 API,方便被后续的语音或手机端调用;发射头可以外接延长线,方便摆到合适的位置。如果发射头是内置的,摆放角度会受限,我用下来还是外接延长线更灵活。
3.2 接线顺序与红外发射头摆放
接线是整个项目里最不该出错的部分,顺序错了后面调 CEC 会莫名奇妙。
正确接法是:PS5 的 HDMI 输出口连接到电视的 HDMI 输入口,我建议优先插第 2 个口,不是因为 HDMI2 更高级,而是多数电视的 HDMI1 会被机顶盒占用,且部分电视只有特定接口完整支持 CEC 功能,需要看说明书确认。然后电视的 HDMI ARC/eARC 口连接到音响的 HDMI ARC/eARC 口。注意,ARC 和 eARC 不是一回事:ARC 是早期音频回传通道,带宽有限,只能传压缩过的 5.1 声道;eARC 是增强版,可以回传无损的高规格音频。如果音响不支持 eARC,会自动降级到 ARC,但不需要改接线,HDMI 线至少支持 1.4 以上标准就行。
红外发射头的摆放我走了弯路:一开始把发射头贴在电视正面底部,以为越近越好,结果音响和电视的接收窗都被电视边框挡住,信号反而不好。后来把发射头粘在电视柜边缘,离电视接收窗大约 30 厘米,离音响接收窗大约 40 厘米,角度稍微朝上偏 15 度,所有设备都能稳定收到。经验就是:红外管发射的是散射光,不需要贴脸,给一点距离和开阔角度反而更好。
3.3 配置 AnyPS5 核心联动规则
硬件就位后,先做基础检查再写规则,不要跳步。
基础检查分两步。第一步:进电视设置菜单,找到 HDMI 控制、设备联动这类选项并打开,不同品牌叫法不一样,但位置一般都在外部输入或 HDMI 设置里。同时再把“自动切换输入源”打开,这个开关决定电视收到 Active Source 消息后会不会真的跳过去。第二步:进 PS5 的设置,把“HDMI 设备关联”和“开机关联”都打开。确认这两个选项都在开启状态,才算具备了联动基础。
接下来录红外码。用红外学习遥控器分别学习三条指令:电视的电源开关、电视切换到 HDMI2 的按键、音响的电源开关。这里有个非常好的优化点:电视的输入源切换通常不是单键直达,原装遥控上可能有“HDMI 2”这种直达键,也可能只有“信号源循环”键。优先学直达键,没有的话就学循环键,但要在宏里设定好循环次数,否则可能从 HDMI2 切过头。
核心规则我用伪代码描述,实际按你选用的控制设备逻辑来配:
事件: 收到 CEC Active Source 消息,来源逻辑地址为播放设备 动作: 等待 1500 毫秒 发射红外码: 电视切换到 HDMI2 等待 500 毫秒 如果 音响当前为关闭状态: 发射红外码: 音响电源开 否则: 不执行等待 1500 毫秒不是随便拍的数字。PS5 开机后,电视从检测到信号到稳定显示需要一两秒,如果宏命令发射太早,电视可能还没完成切换就收到输入源指令,导致切换无效。我调过几个不同延迟,1000 毫秒偶尔失败,1500 毫秒基本稳定,保险起见我用 2000 毫秒。
音响状态的判断,我依赖的是带电流检测的智能插座。音响待机功率在 5 瓦左右,工作时 20 瓦以上,功率值跨过阈值就知道它开没开。这个数据通过局域网 API 读,规则里判断当前功率再去决定要不要发红外电源码。如果你不想加这个插座,也可以简化成“每次都发音响电源切换码”,但这会导致音响既开着又被关了的问题。用状态感知去判断,才是完整方案。
4. 把 AnyPS5 接入语音和手机端:给全家人都能用
4.1 局域网控制中枢与语音入口
当整个联动规则能稳定跑通之后,就可以考虑把入口范围扩大。原本的触发源是 PS5 的 Active Source 消息,这是设备级触发,不需要人参与。但有些场景人想主动介入,比如“我还没决定玩什么,先打开电视随便看看”或者“家里人想听歌,不需要开 PS5”,这时候就需要一个非游戏场景的独立入口。
我的做法是让红外学习遥控器同时暴露一个局域网 API,外部设备可以通过 HTTP 请求触发预设场景。每一条场景本质上就是一组宏命令加条件判断。比如“电视模式”场景的内容是:电视电源开、切到电视自带系统、音响开;“游戏模式”场景才是 AnyPS5 的核心,内容跟上一节写的联动规则一致。
有了这个 API,语音助手和手机都可以接入。我把“游戏模式”四个字设置为一个语音场景,语音助手收到后直接调 HTTP 接口。实测下来整个链路延迟大概在 800 毫秒到 1 秒,体感上几乎感觉不到是经过了一次局域网请求。手机端更简单,在桌面放一个快捷指令,点一下就等于触发场景。
这里值得多说一句:语音入口不是必须的,但对家里其他人很友好。我家里的非玩家成员完全不理解 CEC 是什么,也不认识 HDMI2 是哪一路,但会说“打开游戏模式”就够了。这个改动把整套系统从“我自己折腾”变成了“全家可用”。
4.2 为家人设计的“无脑”触发方式
给家人用的触发方式,要做得比语音更直观。语音的问题是有识别失败的可能,且对部分人来说不愿意对着空气说话。
我额外做了一件事:把红外学习遥控器上的一个物理按键映射成“游戏模式”宏。这个按键用醒目颜色的标签纸标记,贴在电视柜角落。任何人只需要走过去按一下,设备就会按固定顺序完成电视开机、输入源切换、音响启动。唯一的小差异是 PS5 本身处于待机还是完全关机状态:如果是待机,电视开机后 CEC 的 One Touch Play 消息会把它唤醒;如果是完全关机,就需要按手柄 PS 键完成开机。这个差异没法完全消除,因为完全关机状态下的 PS5 不会响应 CEC 唤醒,属于设计如此,不算 Bug。
还有一个细节:按键宏不能加防抖逻辑,因为人大概率会连按。我在控制端做了一个简单的节流:同一场景 10 秒内最多执行一次。这样即使家人连续按了两下,也不会出现“开了又关、关了又开”的循环。
5. 常见问题与排查实录:CEC 失灵、红外误触发、状态循环
5.1 必须要避开的五个坑
这套方案跑通之后,日常使用中大部分时间都很稳定,但调试初期和偶尔设备抽风时,我遇到过几类典型问题,整理成一张表供排查。
| 现象 | 可能原因 | 处理办法 |
|---|---|---|
| 按 PS5 手柄开机,电视没自动切 HDMI | 电视的“自动切换输入源”没开启 | 进电视外部输入设置打开自动切换选项 |
| 电视跟着开了,但输入源停在主页 | CEC 消息只触发了电视开机,没有触发输入切换 | 在宏里单独补发电视的 HDMI2 直达码 |
| 音响开了又立刻关 | 宏命令重复执行,或 CEC 的 System Standby 广播被音响误判 | 在控制端增加 10 秒节流;关闭音响不用的 HDMI 联动选项 |
| 红外宏偶尔没反应 | 发射头角度偏、距离太远、环境光太强 | 重新摆放发射头,暗光环境下重新学习红外码 |
| 电视功耗插座上报延迟高 | 智能插座采样间隔太长 | 选择轮询间隔不超过 3 秒的插座,或调整状态判断逻辑只依赖 CEC |
这里面最隐蔽的是第二个问题。很多电视存在一种行为:收到 CEC 的 Active Source 消息后,电源会上电,但当前仍停留在电视主页,不会自动跳进去。原因可能是电视的系统设计里,“开机且自动切换输入源”这两个动作需要同时满足,但某些固件版本在待机唤醒时丢弃了部分 CEC 命令。我最终的解决方案是彻底不依赖电视这个不可靠行为,而是在红外宏里显式发送“切换到 HDMI2”指令。这样即使电视收到 CEC 后没跳,红外也会强制切一次,双保险。
5.2 排查顺序参考
如果整套系统某天突然不工作了,不要慌,按照下面的顺序排查比乱试快得多。
先确认 PS5 是不是真的还在正常输出 CEC 消息。最简单的办法是检查电视设置里的 CEC 设备列表,如果列表里看不到 PS5,那就不是自动化逻辑的问题,而是最底层的信号链路断了。这时候优先检查 HDMI 线、电视的 CEC 开关、PS5 的关联选项。
再检查执行端。让红外学习遥控器手动执行一次单独的红外发射,比如只发电视电源开指令。如果单独发射正常,说明红外链路没问题;如果单独发射也没反应,就去检查发射头摆放和电源供电。
最后才查规则逻辑。把触发条件暂时手动触发一次,看整个宏命令是否按预期顺序发射。在调试阶段,我会在每个红外码后面插入较长的延时,比如 3 秒,这样能清楚看到每一步是否执行成功。确认无误之后再逐步缩短延时。
我的排查习惯是:能看见的标准先查,能手动触发的逻辑再查,玄学问题一律重新录码。绝大多数不工作的情况,最后都回归到两个根因:某个设备的 CEC 开关被系统更新重置了,或者红外发射头位置被宠物碰歪了。
最后再分享一个小技巧:如果你调试好了整套规则,记得给关键的几个设置项截个图,或者写一张简单的备忘贴在电视柜背面。电视偶尔会系统更新,更新后个别联动选项会被重置成默认值。AnyPS5 的整套逻辑并不复杂,但每次重新排查最耗时间的就是漫无目的地翻设置菜单,有了备忘截图,五分钟就能定位问题,这才是一套自动化项目真正值得沉淀下来的资产。