Loading

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

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

最终效果如下:

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

  1. ✅拥有支持运行Docker并且可以访问互联网的、可以访问要开机电脑的设备,可以是NAS/树莓派/云主机,用来执行开关机操作
  2. ✅电脑支持Wake on Lan(即可以从PXE或网卡启动,基本上电脑都支持)
  3. ✅拥有小爱音箱(由于采用第三方平台连接,只能用小爱音箱进行控制)

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

 

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

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

需要注意的是:

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

配置完成后,可以进行远程开机测试,端口使用9

使用DDNS域名或公网IP测试:PHP远程开机 (huangguofeng.com)

使用内网IP测试,可以用这个工具:WakeOnLAN Sender下载 - WakeOnLAN Sender 2.0.12 汉化绿色版 - 微当下载 (weidown.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 "MW_MQTT_CLIENT_ID=cba8e6b25bb2ad84b9ad132fa8364b83" \
  -e "MW_MQTT_TOPIC=pc006" \
  -e "MW_WOL_ADDRESS=192.168.1.10" \
  -e "MW_WOL_MAC_ADDRESS=E8:9C:22:BB:44:A4" \
  -e "MW_WINRM_ADDRESS=192.168.1.10" \
  -e "MW_WINRM_USERNAME=winrm" \
  -e "MW_WINRM_PASSWORD=pa55w0rd!" \
  --name mqtt-wol hackyo/mqtt-wol:2.0.0

运行参数说明:

#修改为巴法的Client ID
MW_MQTT_CLIENT_ID=cba8e6b25bb2ad84b9ad132fa8364b83
#修改为巴法的主题名称
MW_MQTT_TOPIC=pc006
#修改为电脑的内网IP或公网IP或动态域名
MW_WOL_ADDRESS=192.168.1.10
#修改为电脑MAC地址
MW_WOL_MAC_ADDRESS=E8:9C:22:BB:44:A4
#修改为电脑的内网IP或公网IP或动态域名
MW_WINRM_ADDRESS=192.168.1.10
#修改为电脑的WinRM帐户
MW_WINRM_USERNAME=winrm
#修改为电脑的WinRM帐户密码
MW_WINRM_PASSWORD=pa55w0rd!

具体的其他配置可以参考: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自动构建镜像,不用担心有恶意后门。

 

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

 

posted @ 2024-02-01 10:50  hackyo  阅读(6319)  评论(6编辑  收藏  举报