完成下面这个有趣的实验,你所需要的东西有:
- 路由器(能够形成局域网,且电脑已用网线连接)
- 一个智能音箱(本教程使用的是亚马逊 Echo Dot 2)
- 主板支持wake on lan (大部分都支持)
- 一个树莓派
原理流程图如下:
接下里将按照这个流程图进行讲解,首先是智能音箱和树莓派的连接,我们需要让树莓派发出信号,让智能音箱将其认作是智能家居并连接。由于我使用的是亚马逊的智能音箱,因此我选择了Fauxmo进行模拟。
Fauxmo:https://github.com/n8henrie/fauxmo
1.在树莓派上安装Fauxmo
Fauxmo的安装方法见下方的操作或网址,注意这里的Python需要3.6以上:
Install for development from GitHub:
-
git clone
-
cd fauxmo
-
python3 -m venv .venv
-
source ./.venv/bin/activate
-
pip install -e .[dev]
-
cp config-sample.json config.json
- 根据需求编辑(第一次可先忽略)
config.json
-
fauxmo [-v]
成功后,请让智能音箱重新搜索设备,如Echo dot是向他说 "find connected devices",或同一局域网下,在网页端(alexa.amazon.com/spa/index.html)上点击Discover devices.
如果它成功发现了新的设备,则安装成功。
2.修改Fauxmo配置,让智能音箱能识别到新的“设备“
Fauxmo其实很简单,我们只需要关注两个地方,一个是源文件下的config.json. 这个文件是用来控制智能音箱能够识别到的设备的。其次是plugins文件夹下的文件,这是树莓派收到指令后将执行的文件。由于开关机我们只需要使用Python进行控制,因此我偷个懒使用了Fauxmo的commandlineplugin(下方链接可下载). 即树莓派得到指令后就开启命令行,输入相应的操作。
我的PC的config.json配置如下:
意思就是,如果我向echo说,turn on my PC , 它就通过49915端口访问了plugins文件夹下的commandlineplugin.py,然后on指令的操作是让CMD用python2访问/home/pi/Documents/Automatic/文件夹下的turnOnPC.py文件。
3.增加控制文件
即增加turnOnPC.py文件和ShutdownAndRebootPC.py文件。turnOnPC.py 文件的用处就是通过wake on lan 唤醒电脑,需要提供电脑的Mac地址,不知道的话可以在CMD中输入 ARP -a 查询:
如果你的主板还没有开启WOL,请进入BOOT中开启,非常简单,相关操作可自行查阅主板的说明书。
ShutdownAndRebootPC.py文件主要提供关机和重启的操作,其原理是:通过SSH连接Windows系统执行DOS关机/重启的命令。
上述turnOnPC.py文件和ShutdownAndRebootPC.py文件的源代码在以下链接中可以下载,请根据自己的需要进行修改。
将上述文件放到前面指定的/home/pi/Documents/Automatic/下,重启fauxmo,并让智能音箱重新搜索,找到这几个新增的设备,分别是:PC和RebootPC.成功后只要说 "Turn off PC" 即可关闭计算机。
由于fauxmo仅仅适用于亚马逊音箱,所以使用其他音箱的同学可能需要寻找一个相应的模拟WeMo或其他智能设备的项目。接下来还会推送风扇和台灯的改造计划,让普通的它们变成可以语音控制的智能家居。希望各位折腾的开心!
如果你喜欢今天的Python 教程,请持续关注Python实用宝典,如果对你有帮助,麻烦在下面点一个赞,有任何问题都可以在下方留言,我们会耐心解答的!
Python实用宝典 (pythondict.com)
不只是一个宝典