所以消息链路是这样的:

  1. 确认电脑主板支持wake on lan功能,并且同时在操作系统及BIOS中开启此功能,这是基本前提
  2. 如果是Windows8及以上,需要关闭快速启动功能
  3. 给公众号发暗号
  4. 公众号捕获暗号,给天工物接入服务特定topic发布开机消息
  5. 路由器MQTT客户端收到天工物接入服务转发的开机消息
  6. 调用etherwake软件唤醒目标计算机

过程中用到的软件/组件:

  1. MQTT Dash – 手机端发送消息给MQTT server
  2. WeRoBot – 一个微信公众号开发框架
  3. 天工-物联网平台-物联网云-百度云 – 这里被用作MQTT Server
  4. etherwake – 网络唤醒软件
  5. mosquitto-client-nossl – MQTT客户端

天工物接入照着官方文档很好配,配好后写个脚本扔路由里(运行openwrt系统)跑起来

写个死循环监听消息,用nohup方式启动,扔进/etc/rc.local里搞定自启动

公众号服务端消息发布脚本

改可执行权限,直接在WeRoBot中用subprocess调用即可

最终目标达成,远程开机功能完美实现。

数秒后电脑开机,自动启动teamviewer,可以开始愉快的远程工作了~

PS:其实肯定还有别的解决方法,比如利用IFTTT、DDNS啥的,只要稍稍有点码力加折腾精神,很好搞定。

原文链接:https://blog.ferstar.org/post/use-mqtt-wol-on-openwrt/