让小爱同学自由控制电脑开关机(可接入米家任意设备控制)

一、环境准备

1. Windows,此PC已开启WOL(网络唤醒)SSH服务端免密登录功能
2. Linux服务器/OpenWRT,与目标电脑同网段/网络环境的软路由/家独立已联网主机(Windows/Linux),必备,没有就省流不用看下面了。

 

二、巴法平台获取密钥及添加设备

1.注册巴法平台账号

巴法平台注册入口, 点击注册

2.获取密钥

登录后,在主页点击右上角的控制台,在控制台的左上角复制私钥备用;

3.添加设备

点击MQTT设备云,在右边输入ethanpc002(ethanpc002与后面配置文件相对应,ethanpc为自定义英文名),点击新建主题,记住主题备用。

创建成功会在下方显示

 Ps: 米家小爱支持设备命名规则参考 

三、目标电脑设置(网络唤醒+免密SSH) 

1.网络唤醒设置

由于看官门电脑型号众多,有些需要进入BIOS设置,打开Wake-On-Lan或者PCIE唤醒,度娘和谷歌上面有很多针对的解决方法,我就不细说了,让后设置网卡通过网络唤醒。

1.有些需要进入BIOS设置(笔记本可能不需要),打开Wake-On-Lan或者PCIE唤醒。
2.打开设备管理器,点击网络适配器,右键属性,将电源管理的两个勾勾打上。

 在高级设置里面将关机网络唤醒和魔术封包唤醒开启

2.SSH免密登录

关机的方法是使用用SSH登录然后执行关机命令,所以需要在软路由或者其他主机上设置免密登录权限

 主要参考的是下面这篇文章:
多台WIN10之间的SSH免密登录

PS:Windows10默认是没有开启SSH服务端的,需要:应用和功能 → 可选功能 → 添加功能 → OpenSSH服务器 → 安装

1.安装完成之后在服务器或者软路由上生成SSH密钥,无脑回车就行 

ssh-keygen -t rsa

2.最后生成会显示生成的路径,将.ssh目录下的id_rsa.pub的内容复制出来;
3.在目标电脑的C:\Users\用户名\.ssh目录下的新建文件authorized_keys(无后缀)

4.目标电脑切换到C:\ProgramData\ssh\下(首次启动sshd后会生成该文件夹),打开sshd_config文件

修改文件(以下是重点):

确保以下3条没有被注释
PubkeyAuthentication yes
AuthorizedKeysFile	.ssh/authorized_keys
PasswordAuthentication no

确保以下2条有注释掉
#Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

其余不做修改,基本都是已注释不启用。

5.打开服务,将OpenSSH服务器设置为自动,然后重启一下,搞定! 

在其他主机或者软路由ssh 用户名@目标电脑IP,不提示输入密码直接登录即代表成功

3.获取Windows10 IP和MAC地址


打开目标主机命令窗口输入 ipconfig /all 找到相对应的mac地址和IP地址

 Ps:需要以太网适配器(需要插网线的,WiFi无法远程唤醒)

四、在软路由或Linux上部署Python程序

1.Python环境安装(根据自己系统唤醒自行百度/谷歌)

我的方案是直接部署到Linux主机/服务器,也装了在OpenWRT,可以提供参考

Linux:

apt install python3

openwrt:

opkg update
opkg install python3-base
opkg install python3-pip
opkg install python3

2.拉取GitHub项目并配置

git clone https://github.com/cgy233/EthanHome-WOL.git
cd EthanHome-WOL

 无法拉取,下载到本地解压即可

修改config.ini程序

经过实验目标主机应该成局域网广播地址。

将client_id修改为巴法平台获取的私钥,topic修改为添加设备时设置的主题

修改main.py,将关机相关操作的hostname@IP改成自己目标主机的名称和IP,否则无法进行关机

3.测试 

在Ethan-WOL目录下执行以下命令:

python3 main.py

 可能会提示缺少python的2-3个依赖,安装后即可

4.如果提示以下问题

error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.
    
    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make

我们需要创建虚拟环境并安装相关依赖
 

python3 -m venv myenv
source myenv/bin/activate
#安装依赖
pip install schedule
pip install requests
pip install paho-mqtt

如果出现退出环境之后就失效可以采取强制安装

安装完成后再次运行

python3 main.py

控制台打印以下信息即代表MQTT连接成功,留着后台别动,先执行手机上的操作

五、手机上米家添加其他平台设备

米家 → 我的 → 其他平台设备 → 添加 → 找到巴法(平台很多,中间部分),输入账号密码绑定,其他平台设备 → 巴法→ 同步设备

六、手机上设置小爱同学自定义控制语

 1.自定义控制语

1.小爱语音 → 个人训练 → 添加 → 添加一种说法(“开电脑”,随意)→ 添加操作 → 设备控制 → 巴法平台设备 → 打开灯;
2.小爱语音 → 个人训练 → 添加 → 添加一种说法(“关电脑”,随意)→ 添加操作 → 设备控制 → 巴法平台设备 → 关闭灯;

2.也可以小爱音箱

1.打开米家选择小爱音箱,更多→操作训练→计划个人训练→添加→添加一种说法→添加操作→设备控制→ 巴法平台设备 → 关闭/打开灯;

3.如何在主页显示

打开米家,点击右上角+号,手动控制→创建控制名称→添加执行动作→设备家具→小爱音箱→自定义指令→关闭/打开灯→保存。

语音控制一下,Python程序的打印出类似以下结果即代表成功:

Magic packet should be winging its way to: EthanPC
0

开机 显示以上代码及成功

Received `off` from `ethanpc002` topic
0

关机显示以上代码及成功

4.设置Python程序后台运行

测试通过后,在Ctrl+C退出程序,在EthanHome-WOL目录下输入以下命令将程序挂在后台运行,否则你SSH没了程序就结束了,注意把程序的目录改成你自己的

nohup python3 /root/EthanHome-WOL/main.py > /root/EthanHome-WOL/main.log 2>&1 &

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值