电脑接入米家,控制电脑开关机(无需购买外设)

电脑接入米家,控制电脑开关机,并且无需购买米家外设

最终效果如下:

当然想要实现这些效果,还是有前提条件的:

  1. ✅拥有公网IP(动态公网IP也可以,需要路由器支持虚拟服务器或端口映射以及IP-MAC绑定)
  2. ✅电脑支持Wake on Lan(即可以从PXE或网卡启动)
  3. ✅拥有小爱音箱(由于采用第三方平台连接,只能用小爱音箱进行控制)
  4. ✅拥有支持运行Docker并且可以访问互联网的,长期在线的设备,用来执行开关机操作

如果确定可以满足这些条件,就可以开工了!

 

一、配置电脑远程开机(Wake on Lan)

配置方式可以参考:远程开机_网络唤醒设置方法 (WOL, Wake on Lan) - 简书 (jianshu.com)

需要注意的是:

  1. 如果是动态公网IP,建议路由器配置DDNS,使用固定域名进行访问
  2. 网卡中开启只允许幻数据包唤醒计算机可以避免一些意外开机的情况
  3. 要在电源管理中关闭Windows的快速启动,否则WOL可能无法生效
  4. 路由器使用虚拟服务器或端口映射,不要使用DMZ主机,DMZ主机无法转发唤醒数据包
  5. 路由器虚拟服务器或端口映射分别配置9和5985端口,用于开机和关机
  6. 路由器还需要配置IP-MAC绑定,这样才能在电脑关机情况下,转发唤醒数据包
  7. 如果路由器支持尽量配置静态地址分配,避免电脑内网IP变了的问题

配置完成后,可以在这里进行远程开机测试,使用DDNS域名或公网IP,端口使用9:PHP远程开机 (huangguofeng.com)

 

二、注册巴法平台,接入米家

打开巴法科技&巴法云-巴法设备云-巴法物联网云平台 (bemfa.com),点击注册,使用邮箱和密码注册后

点击控制台-MQTT设备云,记住其中的私钥,后面会用

然后新建主题-命名为pc006:

其中名称的pc可以任意修改,但末尾必须是006,表示开关设备。

新建完成后可以在下面看见设备,点击设置中的昵称,可以修改设备昵称,这个昵称就是后面在米家中控制的名称。

打开米家-我的-连接其他平台-选择巴法-登录巴法账号-同步设备

此时已经可以使用小爱同学控制了,但是想要在房间中添加卡片,可以在房间中新增手动控制,执行动作选设备-小爱音箱-自定义指令

自定义指令为打开次卧电脑(巴法中的设备昵称)、关闭次卧电脑

 

三、电脑配置WinRM,支持远程关机

如果只想支持远程开机,不需要远程关机,这一章节可以忽略。

使用管理员运行PowerShell,并执行以下命令:

#开启WinRM远程管理
Enable-PSRemoting –force

#设置WinRM自启动
Set-Service WinRM -StartMode Automatic

#对WinRM服务进行快速配置,包括开启WinRM和开启防火墙异常检测,默认的5985端口
winrm quickconfig -q

#关闭Kerberos认证,提高安全性
winrm set winrm/config/service/auth '@{Kerberos="false"}'

由于Win11或Win10使用微软帐户登录,无法使用远程WinRM,所以还需要建立专门的WinRM帐户:

打开计算机管理-系统工具-本地用户和组-用户-新建用户,用户名为winrm,并设置密码,并且需要将winrm用户加入Administrators组:

另外最好设置下组策略,禁止winrm用户登录,提高安全性:

 

四、运行执行程序,达成最后一步!

在可以运行Docker并且可以访问互联网的设备上执行:

docker run -d \
  -e mqtt_client_id=cba8e6b25bb2ad84b9ad132fa8364b83 \
  -e mqtt_topic=pc006 \
  -e wol_address=39.156.66.10 \
  -e wol_mac_address=E8:9C:22:AA:44:A4 \
  -e winrm_address=39.156.66.10 \
  -e winrm_username=winrm \
  -e winrm_password=pa55w0rd! \
  --name mqtt-wol hackyo/mqtt-wol:1.0.0

其中:

  • mqtt_client_id为巴法的私钥
  • mqtt_topic为巴法的主题名称
  • wol_address和winrm_address为电脑的公网IP
  • wol_mac_address为电脑的MAC地址
  • winrm_username为电脑WinRM帐户的名称
  • winrm_password为电脑WinRM帐户的密码

具体的其他配置可以参考:mqtt-wol/src/main/resources/config/conf.properties at main · hackyoMa/mqtt-wol (github.com)

这个程序是我自己写的,代码开源在hackyoMa/mqtt-wol: Receive MQTT messages and invoke WOL (github.com)

采用GitHub Action自动构建镜像,不用担心有恶意后门。

 

最后只需要在米家上点击开机关机测试就可以啦!🎉

 

热门相关:IU演唱会:黄金时刻   出轨同学会2   顶楼的大象   失恋治疗所   女演员性爱丑闻