一、环境准备
1. Windows,此PC已开启WOL(网络唤醒)、SSH服务端免密登录功能。
2. Linux服务器/OpenWRT,与目标电脑同网段/网络环境的软路由/家独立已联网主机(Windows/Linux),必备,没有就省流不用看下面了。
二、巴法平台获取密钥及添加设备
1.注册巴法平台账号
巴法平台注册入口, 点击注册
2.获取密钥
登录后,在主页点击右上角的控制台,在控制台的左上角复制私钥备用;
3.添加设备
点击MQTT设备云,在右边输入ethanpc002(ethanpc002与后面配置文件相对应,ethanpc为自定义英文名),点击新建主题,记住主题备用。
创建成功会在下方显示
三、目标电脑设置(网络唤醒+免密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 &