一套几乎零硬件成本的远程开机方案,以及一次折腾到第二天才发现的安卓后台运行问题。
很多人都有这样的需求:家里有一台 Windows 台式电脑,平时不想一直开着,但人在外面时,偶尔又需要启动它,远程处理一些文件或者运行程序。
如果只是远程控制,市面上已经有不少成熟的软件。但问题是:电脑已经完全关机了,远程控制软件怎么连接?
最近我就遇到了这个问题。
我的目标其实很简单:人在外地,拿出 iPhone,点击一个按钮,家里的 Windows 11 台式机就能启动。
最初以为很容易,实际折腾下来才发现,麻烦的不是唤醒电脑,而是如何把外地手机发出的指令可靠地送到家里的局域网。
最终,我没有购买远程开机卡,也没有申请公网 IP,而是利用一部闲置的 OPPO A36 手机,配合 Automate 和苹果快捷指令,实现了远程开机。
更有意思的是,第一天测试成功,第二天早上却失效了。问题最后并不在电脑,也不在网络,而在安卓手机的后台管理机制。
下面记录整个过程。
一、先说最终效果
现在的操作非常简单。
我在 iPhone 上创建了一个名为“远程开机”的快捷指令。人在外面时,打开快捷指令,点击运行,手机就会向家里的 OPPO 发送一条云端消息。
OPPO 收到消息后,自动向局域网发送 Wake-on-LAN 唤醒数据包,启动 Windows 台式机。
iPhone 随后显示中文提示,并播放一声提示音。
整个过程不需要打开 OPPO 屏幕,也不需要通过远程控制软件操作 OPPO。
实际测试中,iPhone 使用移动网络、人在其他地方时,已经成功启动家里的电脑。
需要说明的是,目前 iPhone 的提示音表示发送指令的流程已经执行,并不代表系统已经检测确认电脑开机。真正的开机状态反馈还没有加入。
二、我的硬件和网络环境
这次使用的设备并不特殊。
| 设备 | 实际配置 |
|---|---|
| 被控制电脑 | Windows 11 Pro 台式机 |
| 主板 | 微星 PRO H610M-S DDR4 |
| 网络连接 | 有线网卡连接路由器 |
| 家庭路由器 | TP-Link TL-RAC1900G |
| 家庭中转手机 | OPPO A36,Android 11 / ColorOS 11.1 |
| 远程控制手机 | iPhone |
| 安卓自动化工具 | Automate(LlamaLab) |
| iPhone 自动化工具 | 苹果快捷指令 |
这里有一个关键条件:电脑必须通过有线网卡支持 Wake-on-LAN,并且主板 BIOS、电源管理等相关设置正确。
Wake-on-LAN,简称 WOL,是一种通过网络发送特定数据包来唤醒计算机的技术。这个数据包通常称为 Magic Packet(魔术包)。
它并不需要电脑处于正常运行状态,但要求网卡和主板在关机后仍能保留必要的待机供电。
因此,真正开始远程控制之前,我先在家里的局域网完成了测试:电脑通过 Windows 正常关机后,仍然能够被局域网内的手机唤醒。
这一步非常重要。如果局域网唤醒都不成功,后面配置云端消息没有意义。
三、为什么不直接从外网发送WOL?
一开始,我考虑过最直接的方案:通过路由器端口转发,把外网发送的 WOL 数据包转发到家里的局域网。
但检查网络环境后发现,我的家庭宽带没有可直接使用的公网 IPv4 地址。
路由器 WAN 地址位于100.64.0.0/10范围,这是运营商级 NAT(CGNAT)常用的地址范围。
简单来说,家里的路由器并不是直接暴露在公网,而是位于运营商的另一层地址转换之后。
这种情况下,即使在家用路由器上设置了端口转发,外网设备通常也无法直接连接到家里的路由器。
当然,也可以研究 IPv6、内网穿透、VPN、云服务器等方案,但我的需求只是远程开机,没有必要为此搭建一整套复杂系统。
我还考虑过购买专用的远程开机卡,一些产品售价几十元,声称支持通过移动网络远程开机。
不过,既然家里已经有一部闲置安卓手机,为什么不让它承担这项工作?
这就形成了最后采用的技术路线:
外地 iPhone → 云端消息服务 → 家中 OPPO → 局域网 WOL → Windows 台式机
它的核心思想是:不让外网直接访问家庭局域网,而是让一台始终在线的内部设备接收指令,再由它完成局域网操作。
四、为什么选择Automate?
最初我尝试过通过安卓远程控制软件操作 OPPO,再让 OPPO 唤醒电脑。
但这种方法需要登录账号、配置远控权限,有时还要处理安卓系统的屏幕控制限制。
为了完成一个“开机”动作,先远程操作另一部手机,显然有些绕。
后来找到了 Automate。
Automate 是 LlamaLab 开发的一款安卓自动化应用。它采用可视化流程图的方式,把各种操作组织成自动执行的流程。
最关键的是,它支持两个正好符合需求的功能:
Cloud message receive:接收云端消息。
Wake-on-LAN send:向局域网发送网络唤醒数据包。
这样,OPPO 不需要被远程操作,只需要长期运行一个自动化流程即可。
五、先让OPPO独立唤醒电脑
我没有一开始就配置云端控制,而是先验证 OPPO 能不能独立完成 WOL。
在 Automate 中创建一个最简单的流程:
Flow beginning → Wake-on-LAN send
其中,Wake-on-LAN 的主要参数为:
| 参数 | 设置 |
|---|---|
| MAC address | 目标电脑有线网卡的 MAC 地址 |
| Hostname / IP address | 192.168.101.255 |
| UDP port | 9 |
| SecureOn | 留空 |
| Network interface | 留空 |
这里的192.168.101.255是我家当前/24局域网使用的广播地址,并不是所有家庭网络都适用。应当根据自己网络的 IP 地址和子网掩码确定。
点击 START 后,电脑成功开机。
这说明电脑 BIOS、网卡、路由器和 OPPO 发送 WOL 的能力都没有问题。
接下来只需要解决一个问题:如何让远在外地的 iPhone 触发 OPPO 执行这个操作?
六、用云端消息连接iPhone和OPPO
Automate 提供了云端消息接收功能,可以让 OPPO 等待来自云端的消息。
在 OPPO 上,我建立了第二个自动化流程,包含四个模块:
Flow beginning
Cloud message receive
Expression true?
Wake-on-LAN send
Cloud message receive 使用 OPPO 已经登录的 Google 账号接收消息,并将收到的消息内容保存到变量message。
接下来使用 Expression true? 判断消息内容是否为预先约定的开机指令。
表达式为:
message = "WAKE_PC"只有判断结果为 YES 时,才执行 Wake-on-LAN send。
如果收到其他消息,则返回等待状态,不执行开机。
WOL 发送完成后,也返回 Cloud message receive,继续等待下一条消息。
最终的逻辑是:
开始 ↓ 等待云端消息 ↓ 判断 message 是否等于 "WAKE_PC" ├── NO → 返回等待 ↓ YES 发送 Wake-on-LAN ↓ 返回等待这里特别提醒:WAKE_PC只是一个指令标识,并不是高强度安全认证。实际使用时,还应保护好云端发送凭据,必要时增加发送者验证或更强的身份校验。
七、iPhone不需要安装Automate
iPhone 端使用苹果系统自带的“快捷指令”即可。
我创建了一个名为“远程开机”的快捷指令。
第一步是添加 URL,填写 Automate 的云端消息接口:
https://llamalab.com/automate/cloud/message第二步添加“获取 URL 内容”,选择 POST 方法,请求体使用 JSON 格式。
在实际配置中,请求体包含三个字段:
{ "secret": "此处填写自己的云端发送凭据", "to": "此处填写接收端Google账号", "payload": "WAKE_PC" }其中,secret是发送消息所需的凭据,不能直接公开在文章或截图中。它也不是随意填写一个字符串就能使用,必须采用服务实际要求的有效凭据。
to指向 OPPO 接收云端消息所使用的 Google 账号,payload则是约定的开机指令。
设置完成后,iPhone 就能通过 HTTPS 请求向云端发送消息。
测试时,快捷指令返回了:
Message sent随后查看 OPPO 的 Automate 日志,出现了 Cloud message receive、Expression true? 和 Wake-on-LAN send 的执行记录。
电脑成功开机。
至此,外网远程唤醒的核心功能已经实现。
八、真正的坑:第一天成功,第二天失效
如果文章写到这里,可能只是一篇普通的操作教程。
但第二天发生的事情,才是这次实践最值得记录的部分。
前一天晚上,我在 iPhone 上连续测试,电脑都能成功启动。
于是把 OPPO 放在家里,连接充电器,锁定屏幕,准备第二天在其他地方测试。
第二天早上八点半左右,我在外地通过 iPhone 发送远程开机指令。
快捷指令没有报错,执行正常结束,但电脑没有启动。
开始我怀疑是云端服务出了问题。
后来查看 OPPO 的 Automate 日志,发现一个异常:日志中没有早上八点半的接收记录。
直到九点二十九分左右,打开 OPPO 屏幕后,Automate 才重新出现运行记录,其中包含:
Resumed after restart Cloud message receive这意味着,问题并不是 WOL 数据包发送失败那么简单。
当时更明显的现象是:OPPO 长时间锁屏后,Automate 没有及时处理远程消息。
解锁手机后,自动化流程恢复工作。
这让我意识到,安卓手机虽然可以充当家庭自动化设备,但手机系统的省电机制,可能成为长期稳定运行的最大障碍。
九、解决OPPO的后台限制
我的 OPPO A36 使用 ColorOS 11.1。
经过检查,发现 Automate 虽然已经在应用内部获得了忽略电池优化的权限,但 ColorOS 还有自己的一套后台运行管理机制。
因此,我进一步修改了以下设置。
1. 关闭耗电异常优化
进入:
设置 → 电池 → 高级设置 → 耗电异常优化 → Automate
原来的选项是“自动优化”。
我把它改成了:
不优化
这样系统就不会因为判断 Automate 后台耗电较高,而自动对它进行优化处理。
2. 允许完全后台行为
进入 Automate 的应用详情,找到相关后台权限设置。
其中有一个关键选项:
允许完全后台行为
原来是关闭状态。
我将它打开,让系统不再对 Automate 的后台行为施加相应限制。
3. 允许应用自启动
在同一个设置页面中,还有:
允许应用自启动
我也将它打开。
这样在手机重启等情况下,Automate 更有机会恢复正常运行。不过,具体流程是否自动恢复,还取决于 Automate 本身的运行和恢复设置。
4. 保持省电模式关闭
OPPO 的普通省电模式和超级省电模式都没有开启。
对于一部专门承担远程开机任务的闲置手机,后台可靠性比节省少量电量更重要。
调整完成后,我重新测试了远程开机功能,结果成功。
需要强调的是,这些设置解决了当时观察到的问题,但还需要通过连续多天的长时间锁屏测试,才能进一步确认长期稳定性。
十、最后优化iPhone快捷指令
核心功能完成后,我又做了一个小优化。
最初,快捷指令运行成功后,只显示英文:
Message sent虽然能用,但不够直观。
于是,我在“获取 URL 内容”后面添加了“显示通知”操作。
通知标题:
远程开机通知内容:
远程开机指令已发送,请等待30~60秒。不过,测试发现即使打开“播放声音”选项,也没有听到预期的提示音。
后来又在快捷指令最后增加了一个独立的“播放声音”操作。
再次测试,iPhone 发出了一声提示音。
现在,快捷指令的执行流程变成:
URL ↓ 获取 URL 内容(POST) ↓ 显示中文通知 ↓ 播放声音这样,人在外面只需要点击一次快捷指令,就能完成开机指令发送,并获得直观的操作提示。
当然,提示音只是操作反馈,不是电脑开机成功的证明。
十一、这套方案有什么优缺点?
经过这次实践,我认为它比较适合以下场景:
家里有一台支持 WOL 的台式电脑,没有公网 IPv4 地址,又恰好有一部闲置安卓手机。
它的优势比较明显。
首先,基本不需要购买额外硬件。现有电脑、路由器、OPPO 和 iPhone 就能完成整个流程。
其次,不需要配置家庭路由器的公网端口映射,也不需要让外网直接访问家庭内网。
第三,操作足够简单。iPhone 上只有一个快捷指令,OPPO 自动完成后续动作。
但它也有局限。
第一,OPPO 必须保持联网。如果家里的 Wi-Fi 中断,或者手机断电,就无法正常接收远程指令。
第二,安卓后台机制可能影响稳定性。即使关闭相关优化,也不能保证所有机型、所有系统版本都能长期保持相同的后台行为。
第三,WOL 本身不能保证电脑一定启动。如果电脑断电、主板设置改变、网卡待机供电异常,或者局域网广播被阻断,仍然可能失败。
第四,目前还缺少真正的开机成功反馈。iPhone 可以知道发送流程执行了,但还不能直接确认 Windows 已经启动并联网。
另外,如果 OPPO 长期连接充电器,还需要关注电池健康和设备温度,尽量使用质量可靠的充电器,避免手机长期处于高温环境。
十二、下一步:让电脑主动报告“我已经开机”
目前这套方案已经解决了最核心的问题:远程发送开机指令,并成功唤醒电脑。
但从自动化系统的角度看,它还缺少最后一环。
理想的完整流程应该是:
iPhone 发出开机指令 ↓ 云端消息 ↓ OPPO 接收并发送 WOL ↓ Windows 电脑启动 ↓ 电脑联网后发送确认消息 ↓ iPhone 收到“电脑已开机”实现这一步并不需要重新设计现有架构。
可以考虑在 Windows 中增加一个开机后自动运行的程序,待网络连接建立后,向指定的通知服务发送确认消息。
不过,这属于下一阶段的工作,目前尚未实现。
结语
这次远程开机实践,让我印象最深的不是 WOL,也不是快捷指令,而是一个看起来很不起眼的问题:安卓手机锁屏后,后台程序究竟还能不能可靠运行?
在电脑上,一个程序启动以后,我们通常认为它会继续运行,除非主动关闭或系统出现异常。
但在手机上,情况完全不同。系统会根据电池、应用行为和厂商策略,主动管理后台程序。
对于普通用户来说,这些机制可以延长续航;但对于把旧手机当作家庭自动化设备的人来说,它们可能导致非常隐蔽的故障。
一套自动化方案,在屏幕亮着的时候成功,并不意味着它在无人值守的情况下也能成功。
这或许才是这次折腾最有价值的经验。
至于那部闲置的 OPPO A36,现在终于有了一项新的工作:安静地待在家里,等待远方的 iPhone 发来一条开机指令。
本文记录的是个人实际测试过程,不同主板、路由器和安卓系统版本可能需要调整参数。文中示例地址仅用于说明配置方法,云端访问凭据应自行生成并妥善保管。