终于可以躺在床上让小爱同学帮我开关电脑了~

2022-12-23 20:54:49 17点赞 123收藏 38评论

我为什么要这么干

伪需求:万一我人在外面需要打开家里的电脑做点什么呢。

真需求:人已上床,床已暖,电脑没关...

终极·真需求:折腾。

先说说我没折腾这个之前的解决办法:

开机:前提是你已经开启了电脑的WOL功能,用的安装了WOL的OpenWRT,然后SSH到OpenWRT,用下面这条命令。

/usr/bin/etherwake -i br-lan MAC地址

关机:前提是你在电脑上安装了SSH服务器,然后也是SSH到你的电脑,然后就是Windows的关机命令了

shutdown -s -t 5

怎么说呢,用也是能用吧,就是感觉不舒服,正好这几天阳在家,就更不舒服了。于是就想有没有什么办法把以上步骤整合在一起,只需要点一下就执行了。

果然是有的,IOS的捷径可以通过SSH来运行脚本,手持安卓的我骂骂咧咧放下手机,测了个温平复下心情。

测了温心情更不平静之后,先搜了搜小米有没有类似捷径的东西,嘿还真有,看了之后的结论是你还不如别有。

最后才把算盘打到小爱同学身上,于是就有了这篇折腾记录。

参考

https://blog.csdn.net/cgy233/article/details/127407571

在折腾过程中,主要参考了上面这篇文章。其它类似的要么需要单片机要么其它设备,只有这篇文章的办法正好适合我。

涉及的东西

1、内网一个7*24小时运行的Linux系统(Windows应该也行,主要用的是Python),OpenWRT也算,我是All in Boom,先在OpenWRT上没干起,于是新建了个CentOS的虚拟机才搞定。

终于可以躺在床上让小爱同学帮我开关电脑了~

2、小爱同学、米家。

思路

小爱控制米家设备,米家对接巴法云平台,内网Linux服务器连接巴法云,最终由Linux来发送开机或者关机的指令到电脑。

PS:这篇折腾记录里我不会写的太详细,主要还是记录一些比较重要和坑的地方。

巴法云

https://cloud.bemfa.com/

首先是去巴法云注册个账号,话说好久没见到过注册这么清爽的站了,不用验证码不用微信,梦回曾经。

记录下私钥,一会儿要用。

私钥私钥

新建一个MQTT的主题。

主题主题

这里只有一个需要注意的地方,主题名称的后三位必须是001-009,前面随意,不同的编号在米家代表不同的设备。如下图

编号对应编号对应

巴法云这里就完事了。

开启WOL

这个就直接到BIOS里去找类似wake on lan之类的选项,启用就行,找不到就按照主板型号网上搜吧。

安装OpenSSH服务器

直接在Windows的可选功能里安装就行。

openSSHopenSSH

SSH免密登录

这一步的意思是从你的Linux服务器SSH到windows的时候不需要输密码,做法就是在LInux上生成一个公钥,然后把这个公钥复制到windows这边,这样Linux过来的时候双方就不用对暗号,而是直接对证件,windows这边有linux的证件就直接让它进了。

Linux上运行

ssh-keygen -t rsa

公钥公钥

把上图中的id_rsa.pub文件复制到windows的C:Users用户名.ssh目录下,重命名为authorized_keys,如果没有.ssh文件夹就新建。

然后到打开C:ProgramDatasshsshd_config这个文件,按照下面的说明设置一下

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

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

然后windows这边在服务里重启一下OpenSSH SSH Server。

试试从Linux那边

ssh 你的windows用户名@你的windowsIP

如果没让输密码就连上了的话就说明成功了。

Linux端安装Python3、安装依赖、安装WOL、拉取项目

安装Python3我就不写了,网上直接找吧,我在这里遇到第一个大问题,OpenWRT上安装的python始终有问题,测个抗原冷静(个屁)下来后放弃了从新装个的想法,直接放弃它,新建了个Centos的虚拟机,反正大家都是linux,大差不差。

我这里装的python3.8.0版本,如果是在centos上装python的话主要是要注意centos自带有一个2.7.5的python,安装完python3后需要把python/python3/pip/pip3这几个命令都指向新装的3.8.0.

指向指向

MQTT Python依赖包安装

pip3 install -i https://pypi.doubanio.com/simple paho-mqtt

安装WOL

直接安装WOL会提示找不到,所以先

yum install -y epel-release

yum install -y wol

拉取GitHub项目

项目地址自己搜吧…

cd EthanHome-WOL

这里需要注意你的EthanHome-WOL文件夹在哪里,一般在哪个目录运行的拉取命令就是在哪个文件夹下。

配置项目参数

主要配置两个文件,wol_config.ini(你的电脑IP和MAC)和wol_mq.py(MQTT平台的主题名称和私钥)。

主题名称和私钥主题名称和私钥

这里我卡了很久,配置好后MQTT平台是能连接的,但是控制不了,相当于是我告诉小爱开机或关机,小爱发到巴法平台了,平台也发给linux了,卡在了linux发送指令到电脑开关机这里。

没办法只有硬着头皮去翻这个项目里的几个文件写了啥,还好不多。

文件列表文件列表

大概意思是wol_mq.py这个是长期后台运行,当接收到开机命令的时候,调用执行wol.py,IP和MAC从wol_config.ini里获取;接收到关机指令的时候直接执行wol_mq.py里的一行指令。

开和关开和关

关机看来是根本没调用到wol_config.ini里的IP,主要是用户名也没地儿调用啊,这个就简单了,直接把上图关机那部分的用户名和IP改成自己的就行了,于是关机成功实现终于可以躺在床上让小爱同学帮我开关电脑了~

开机这里又卡了很久,再硬一次头皮去看wol.py的内容,不是程序员实在是脑壳痛没进展。

吃个饭消杀一下继续磕开机的问题。

也许是84的味道让我醍醐灌顶了,再看上面关于开机的内容,灵关一闪,我死磕wol.py干嘛,直接替换成开机命令不就行了吗。

修改后修改后

完美解决终于可以躺在床上让小爱同学帮我开关电脑了~

如果是OpenWRT,命令应该需要改成

/usr/bin/etherwake -i br-lan MAC地址

后台运行

最后,添加个后台运行

nohup python3 /home/WOL/EthanHome-WOL/wol_mq.py > /home/WOL/EthanHome-WOL/wol_mq.log 2>&1 &

记得把路径改成你自己的。

米家以及小爱添加设备

这里就不详述了,不早了。

米家--我的--其它平台设备--巴法--登录你的巴法账号,就有个灯的设备同步过来了,为什么是灯呢,因为在巴法平台上002代表的就是灯。

小爱音箱--更多--小爱训练--个人训练。分别添加开机和关机就完事。

手机上暂时没去找在哪里添加,应该都差不多。

总结

就是折腾~

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
38评论

  • 精彩
  • 最新
  • 小爱会查你电脑的内容吗

    校验提示文案

    提交
    小爱只对接MQTT平台,它甚至都没有跟你的电脑产生连接。

    校验提示文案

    提交
    收起所有回复
  • 太复杂了。。。

    校验提示文案

    提交
    这不就是折腾的乐趣嘛

    校验提示文案

    提交
    收起所有回复
  • 后台进程一直在,但是过一天左右,巴法上就显示离线了,这就比较蛋疼了

    校验提示文案

    提交
    我也是这个问题,奈何对linux不熟,对MQTT也不懂,只有先搁置了,再说兴趣也已经过去 [亲亲]

    校验提示文案

    提交
    我也是啊,逼着搞cron,每10分钟运行一次,都不行。明天凌晨1点,他自己停了,靠

    校验提示文案

    提交
    收起所有回复
  • 请教一下,连接不上mqtt平台,报错无效的主机名,不懂代码,实在不知道啥原因了 [喜极而泣]

    校验提示文案

    提交
    连接mqtt只有两个主要参数的嘛,你再确认下?主题和密钥

    校验提示文案

    提交
    收起所有回复
  • 我这倒有个简单点的办法,买个小米插座,设置电脑来电启动,喊一声就开机了。

    校验提示文案

    提交
    哪里简单?简直粗暴啊!如此直接,我喜欢 [击掌]

    校验提示文案

    提交
    我一直都是这样

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 有没有考虑过,买个连入米家的插排呢?直接关电源。天天忘关的话,定时关机。不保存文件设置定时保存。你电脑要是特别重要,比如连入CNMD(中国国家导弹防御系统)那种,那建议配俩机要秘书。折腾,是为了实现目的,拿个耳挖勺吃饭不叫折腾,叫锻炼。

    校验提示文案

    提交
  • 哈,这设计思路✓残疾人友好!

    校验提示文案

    提交
  • 牛的,我会用wol开但不会关,干脆上了个连接小爱的继电器给电脑的开机键,反正windows开关机都是按开机键就可以操控

    校验提示文案

    提交
  • 装个todesk

    校验提示文案

    提交
  • 有个更简单的方法,win 运行 Python cgi web服务器,通过浏览器或 curl 命令就能运行 win 的脚本。

    校验提示文案

    提交
  • 开机十几秒的事情,哈哈

    校验提示文案

    提交
  • 唤醒小爱同学暖床服务

    校验提示文案

    提交
  • 时间与成本不成正比,时间太多了

    校验提示文案

    提交
  • 🌝🌝 要是小爱跟苹果一样原生支持ssh多好,这样我就能直接连上我的树莓派发送启动脚本了

    校验提示文案

    提交
  • ???这不是一个购物平台么 [高兴]

    校验提示文案

    提交
  • 以前该给小爱提过意见,加上wol功能,也没人理我

    校验提示文案

    提交
  • 我的方案是淘宝上的开机卡,直接把电源跳线转接过去,本质上是个ESP32连WiFi然后mqtt,供电走pcie x1,也挺方便的,有接入小爱,iOS上可以通过post发送命令,也有微信公众号可以控制,开关机可以消息提醒;智能插座来电自起我怕一个不小心把电给断了,wol我曾遇到过出门在外叫不醒的坑爹情况,所以最后还是用了开机卡

    校验提示文案

    提交
  • 太费劲了,不如装个手机版的RDP远程桌面,几秒搞定。

    校验提示文案

    提交
  • 挺好的文章,评论区也够吊,硬关机软关机傻傻分不清,嘈杂声盖过了文章本身的声音

    校验提示文案

    提交
  • 对。我就是这样做的

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
123
扫一下,分享更方便,购买更轻松