电脑入米家,让小爱同学随意操控电脑开关机

  • 前言
  • 一、效果展示
  • 二、环境准备
  • 三、巴法平台获取密钥及添加设备;
    • 1.注册巴法平台账号
    • 2.获取密钥
    • 3.添加设备
  • 四、目标电脑设置(网络唤醒+免密SSH)
    • 1.网络唤醒设置
    • 2.SSH免密登录
    • 2.获取Windows10 IP和MAC地址
  • 五、在软路由或Linux上部署Python程序
    • 1.Python环境安装(根据自己系统唤醒自行百度/谷歌)
    • 2.MQTT Python依赖包安装
    • 3.拉取GitHub项目并配置
    • 4.测试
  • 六、手机上米家添加其他平台设备
  • 七、手机上设置小爱同学自定义控制语
    • 1.自定义控制语
    • 2.设置Python程序后台运行
  • 八.总结
  • 九.参考

前言

我的笔电在家里就是台台式电脑了(半年没有挪过屁股),在公司使用Frp做了内网穿透用于远程控制,但是晚上关机了第二天早上常常忘记开机…好麻烦~

最近买了个小爱音箱,控制家居方便得很,就心想能不能直接让勤劳的小爱同学帮我开关电脑呢?上网搜搜还真有挺多人搞的哦,有搞头哇,有的是用点灯科技结合Python使用MQTT协议,但是有些是使用ESP32/ESP8266,调试的板子搞不太合适呀,等等…MQTT?Python?我熟!开搞!

一、效果展示

1.开机

2.关机

二、环境准备

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

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

1.注册巴法平台账号

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

2.获取密钥

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

3.添加设备

点击MQTT设备云,在右边输入ethanpc002(002必须,ethanpc为自定义英文名),点击新建主题,记住主题备用;

创建成功会在下方显示;

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

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

1.网络唤醒设置

由于看官门电脑型号众多,有些需要进入BIOS设置,而我的是笔记本(对于我来说就是个台式了),不用进BIOS设置,度娘和谷歌上面有很多针对的解决方法,我就不细说了,贴一下我的方案:
1.打开设备管理器,点击网络适配器,右键属性,将电源管理的两个勾勾打上;

在高级设置里面将关机网络唤醒和魔术封包唤醒开启,我的船这么设置就完事了,如果碰到问题可以自行上网检索或评论留言:);

2.SSH免密登录

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

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

虽然我是将程序部署到PVE的,但是Linux生成SSH密钥的方法和Windows的一样;

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

1.PVE生成SSH密钥,无脑回车就行;

ssh-keygen -t rsa

2.最后生成会显示生成的路径,将.ssh目录下的id_rsa.pub的内容复制出来;
3.在目标电脑的C:\Users\用户名\.ssh目录下的新建文件authorized_keys(无后缀)
4.打开服务,将OpenSSH服务器设置为自动,然后重启一下,搞定!

在PVE上测试连接,ssh 用户名@目标电脑IP,不提示输入密码直接登录即代表成功;

2.获取Windows10 IP和MAC地址

网络唤醒和SSH需要获取主机的IP和MAC地址;

网络状态 → 查看网络属性 → 以太网;

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

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

我的方案是直接部署到PVE,也装了在OpenWRT,可以提供参考;
PVE:

apt install python3

OpenWRT:

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

2.MQTT Python依赖包安装

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

3.拉取GitHub项目并配置

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

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

broker = 'bemfa.com'
port = 9501
# 设备主题
topic = "ethanpc002"
# 巴法平台控制台获取的私钥
client_id = ''

修改wol_config.ini配置文件,broadcast设置为目标主机的IP地址,mac设置为目标主机的MAC地址:

# Save this file as .wol_config.ini in the same directory as wol.py[General]
broadcast=你的主机IP地址[EthanPC]
mac=你的主机MAC地址

4.测试

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

python3 wol_mq.py

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

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

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

PS: esp8266接入米家,小爱同学控制

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

实测在米家是没办法进入巴法平台的设备控制界面的,点击会显示"设备已失效",然后再Bilibili大学看到个老哥说小爱可以,有暗门!设置好后用手机的是可以用自定义的唤醒词的,但是小爱音箱不行,直接喊设备名例如:开灯/关灯是可以噶;

1.自定义控制语

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

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

3.开电脑:

4.关电脑:

2.设置Python程序后台运行

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

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

八.总结

总结以下,其实这是借助接入米家的第三方平台巴法平台开放的MQTT接口,使用Python将MQTT的客户端部署到软路由(Linux)上实现的小功能;小爱音箱也可用,如果巴法平台上添加的设备和我一样的话(002结尾),直接呼小爱同学开灯即开电脑,关灯既关电脑,emmm…这么折腾累不累啊…说实话…还真不累了,在折腾的过程中能学到很多东西,智能语音助手+MQTT,扩展性贼强,这么说吧,你在CMD命令行里面能做的她都能做,再结合以下AHK脚本或者直接写一下BAT脚本,一声:我要派派,直接进入游戏界面(bushi),对于还要上网课的学生来说,喊两声,电脑直接从开机到进入对应的课堂立马搞定,酷~,主要是还能学到很多有趣的东西;

九.参考

[^1]在OpenWRT上搭建ssh代理

[^2]多台WIN10之间的SSH免密登录

[^3]如何在 Python 中使用 MQTT

[^4]OpenWRT安装Python3

[^5]Wake-On-Lan-Python

电脑入米家,让小爱同学随意操控电脑开关机(需主机或软路由)相关推荐

  1. esp8266接入米家、小爱同学,附开源app控制

    超简单,两步完事 第一步 下载程序到esp8266 第二步 绑定到米家 第三步 (附)开源app控制 第一步 下载程序到esp8266 下载地址: 点击下载 本demo 是利用arduino IDE开 ...

  2. 使用小爱同学语音控制电脑关机 - Winform C#

    使用小爱同学语音控制电脑变关机 前言 实现原理 准备 注册巴法云账号 接入巴法云 接入米家 编写程序 连接TCP 接收信息并运行关机指令 发送指令订阅主题 添加心跳机制 后台运行 阻止默认关闭窗口事件 ...

  3. 壁挂炉计算机控制系统,DIY壁挂炉温控器连入米家实现自动和远程控制

    DIY壁挂炉温控器连入米家实现自动和远程控制 2020-12-22 16:54:23 11点赞 103收藏 55评论 创作立场声明:本文所测商品为自费购入.如参加张大妈家的活动获得,我会在文中点明.坚 ...

  4. 为什么手机里的小爱音响app里搜不到家里的小爱音箱_教你500元用小米米家网关+小爱音箱尝鲜最AI智能生活...

    如果说4G开启了移动互联网时代,那么5G则是开启万物互联时代.也正因为物联网.5G带来了智能家居行业如火如荼地开展.然而智能家居解决方案都离不开2个最基本的产品:智能网关以及智能音箱. 说到智能音箱, ...

  5. 电脑(win10)连接小爱同学音箱

    一共三步操作就OK 1.左下角搜索蓝牙-->选择蓝牙和其他设置 2.打开APP小米AI-->点击个人中心-->选择蓝牙设置开启蓝牙(不要退出) 3.右键桌面右下角的声音图标  --& ...

  6. ESP8266-NodeMCU项目(二):ESP8266-NodeMCU+Blinker+DHT11+小爱同学

    错开の折腾经历:ESP8266 NodeMCU 文章目录 前言 一.Blinker 1.Blinker--点灯科技 特性: blinker应用场景: 二.任务开始 1.实验材料 2.安装库文件 3.安 ...

  7. ESP8266+DHT11温湿度传感器+小爱同学语音智能LED灯(状态可视化)

    ESP8266+DHT11温湿度传感器+LED灯(状态可视化) 接线(继电器与DHT11模块的GND与VCC分别对应接好ESP8266即可,下表只列出信号线接法): 模块 ESP8266 继电器IN ...

  8. 语音识别技术在米家、HomeKit和智汀等智能家居中的应用

    近几年,语音识别技术已愈发完善,逐步的从实验室走向市场,目前在工业.家电.通信.电子等行业都有涉及. 语音识别技术经历了语音识别.语音合成以及自然语音合成3个阶段.可能有些人觉得,让这些计算机.智能设 ...

  9. 易微联通断器实现电脑远程开关机

    功能描述 这个方案比较简单,买一个易微联通断器,按教程接线就可以了.既然用的是易微联通断器,就需要下载易微联的app,接入小爱同学需要在米家里绑定易微联的账号. 1.支持易微联的手机app远程开关机, ...

最新文章

  1. 31个Python实战项目带你学会图像处理
  2. 【哲学】不可知论是什么?agnosticism
  3. TWebBrowser禁止弹出Alert对话框
  4. buildroot的使用简介【转】
  5. DHL 快递跟踪查询
  6. Jquery复习(七)之尺寸
  7. Linux tar命令
  8. 构建高可用linux和鸟哥,构建高可用Linux服务器
  9. linux下载镜像的命令wget,Linux wget命令整站下载做网站镜像
  10. 设计模式---简单工厂模式(c++实现)
  11. Ubuntu 20.04桌面美化
  12. 输入姓名自动生成拼音
  13. 新媒体运营必备的实用工具
  14. validate 属性
  15. php 邮箱附件 大小限制,Exmail+Postfix修改邮件附件大小
  16. Unity 扫描 二维码
  17. 上半年最中意的 GitHub 更新「GitHub 热点速览 v.22.21」
  18. 小玉在游泳小鱼的航程(改进版)
  19. 爱情,你究竟是什么模样?
  20. github汉化方法

热门文章

  1. GNN-CS224W: 3 Node Embeddings
  2. Variable Generator/dense/kernel already exists, disallowed.
  3. 16.4 使用主窗口
  4. ps-色彩模式与图像色彩调整
  5. Android OpenGLES滤镜开发之仿抖音灵魂出窍
  6. 浅谈spring之IoC控制反转
  7. 【Skill】从 WPS 步入Office 365
  8. 英文学习20180327
  9. 51单片机的指令系统(一)
  10. FT232芯片的国产化替代