完成下面这个有趣的实验,你所需要的东西有:

1.路由器(能够形成局域网,且电脑已用网线连接)

2.一个智能音箱(本教程使用的是亚马逊 Echo Dot 2)

3.主板支持wake on lan (大部分都支持)

4.一个树莓派

原理流程图如下:

接下里将按照这个流程图进行讲解,首先是智能音箱和树莓派的连接,我们需要让树莓派发出信号,让智能音箱将其认作是智能家居并连接。由于我使用的是亚马逊的智能音箱,因此我选择了Fauxmo(https://github.com/n8henrie/fauxmo)非常好用的一个工具。

1.在树莓派上安装Fauxmo

Fauxmo的安装方法见下方的操作或网址,注意这里的Python需要3.6以上:

2.cd fauxmo

3.python3 -m venv .venv

4.source ./.venv/bin/activate

5.pip install -e .[dev]

6.cp config-sample.json config.json

7.根据需求编辑(第一次可先忽略) config.json

8.fauxmo [-v]

成功后,请让智能音箱重新搜索设备,如Echo dot是向他说

"find connected devices",

或同一局域网下,在网页端(alexa.amazon.com/spa/index.html)上点击Discover devices.

如果它成功发现了新的设备,则安装成功。

2.修改Fauxmo配置,让智能音箱能识别到新的“设备“

Fauxmo其实很简单,我们只需要关注两个地方,一个是源文件下的config.json. 这个文件是用来控制智能音箱能够识别到的设备的。其次是plugins文件夹下的文件,这是树莓派收到指令后将执行的文件。由于开关机我们只需要使用Python进行控制,因此我偷个懒使用了Fauxmo的commandlineplugin(下载地址:https://github.com/n8henrie/fauxmo-plugins/blob/master/commandlineplugin.py). 即树莓派得到指令后就开启命令行,输入相应的操作。

我的PC的config.json配置如下:

"PcControl": {

"path": "/home/pi/Documents/fauxmo/src/fauxmo/plugins/commandlineplugin.py",

"DEVICES": [

{

"name": "PC",

"port": 49915,

"on_cmd":"python2 /home/pi/Documents/Automatic/turnOnPC.py",

"off_cmd":"python /home/pi/Documents/Automatic/ShutdownAndRebootPC.py 192.168.199.236(该电脑局域网IP) 电脑账号 电脑密码 shutdown",

"state_cmd": ""

},

{

"name": "RebootPC",

"port": 49920,

"on_cmd": "python /home/pi/Documents/Automatic/ShutdownAndRebootPC.py 192.168.199.236 ckend ckend reboot",

"off_cmd": "python /home/pi/Documents/Automatic/ShutdownAndRebootPC.py 192.168.199.236 ckend ckend reboot",

"state_cmd": ""

}

]

},

意思就是,如果我向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 查询:

def wake_on_lan(macaddress):

""" Switches on remote computers using WOL. """

# Check macaddress format and try to compensate.

if len(macaddress) == 12:

pass

elif len(macaddress) == 12 + 5:

sep = macaddress[2]

macaddress = macaddress.replace(sep, '')

else:

raise ValueError('Incorrect MAC address format')

# Pad the synchronization stream.

data = ''.join(['FFFFFFFFFFFF', macaddress * 20])

send_data = ''

# Split up the hex values and pack.

for i in range(0, len(data), 2):

send_data = ''.join([send_data,struct.pack('B', int(data[i: i + 2], 16))])

# Broadcast it to the LAN.

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)

sock.sendto(send_data, ('', 7))

如果你的主板还没有开启WOL,请进入BOOT中开启,非常简单,相关操作可自行查阅主板的说明书。

ShutdownAndRebootPC.py文件主要提供关机和重启的操作,其原理是:通过SSH连接Windows系统执行DOS关机/重启的命令。

def shutdown(ip=sys.argv[1], username=sys.argv[2], password=sys.argv[3]):

# ssh login

proc = pexpect.spawn("ssh %s@%s " % (str(username), str(ip)))

index = proc.expect([".*assword.*", ".*yes.*"])

if index > 0:

proc.sendline("yes")

proc.expect(".*assword.*")

proc.sendline(password)

proc.expect(".*你的用户名>.*")

proc.send("shutdown.exe -s -t 00"+'\r\n')

# 重启是 shutdown.exe -r -t 00

time.sleep(1)

上述turnOnPC.py文件和ShutdownAndRebootPC.py文件的源代码在https://github.com/Ckend/Pi-SmartHome 中可以下载,请根据自己的需要进行修改。

将上述文件放到前面指定的/home/pi/Documents/Automatic/下,重启fauxmo,并让智能音箱重新搜索,找到这几个新增的设备,分别是:PC和RebootPC.成功后只要说 "Turn off PC" 即可关闭计算机。

由于fauxmo仅仅适用于亚马逊音箱,所以使用其他音箱的同学可能需要寻找一个相应的模拟WeMo或其他智能设备的项目。接下来还会推送风扇和台灯的改造计划,让普通的它们变成可以语音控制的智能家居。希望各位折腾的开心。

​Python实用宝典 (pythondict.com)

不只是一个宝典

欢迎关注公众号:Python实用宝典、

本文由 Python 实用宝典 作者:Python实用宝典 发表,其版权均为 Python 实用宝典 所有,文章内容系作者个人观点,不代表 Python 实用宝典 对观点赞同或支持。如需转载,请注明文章来源。

python语音控制智能家电_Python 树莓派智能音箱语音控制电脑开关机-Python 实用宝典...相关推荐

  1. python控制电脑关机_Python利用智能音箱语音控制电脑开关机

    完成下面这个有趣的实验,你所需要的东西有:1.路由器(能够形成局域网,且电脑已用网线连接) 2.一个智能音箱(本教程使用的是亚马逊 Echo Dot 2) 3.主板支持wake on lan (大部分 ...

  2. python语音控制手机_python 树莓派语音控制普通台灯教程-Python 实用宝典

    阅读这篇文章前,这两篇文章可能对你会有所帮助: 利用智能音箱语音控制电脑开关机 (必读,否则你可能不知道我在说什么) 先看看效果: 完成这项有趣的实验,你所需要的材料有: 1.电烙铁 2.一个8050 ...

  3. 王珺:智能音箱语音技术分享

    本文整理自王珺在云加社区线下沙龙活动的分享内容,这次分享介绍了在研究方面的一系列新的方法和改进,主要是语音识别,语音识别,声纹识别,以及TTS,在落地应用方面,语音识别中心为多个腾讯的产品有技术支持的 ...

  4. 使用ESP8266/ESP32 实现智能语音控制电脑开关机

    最近买了个台机放客厅里接电视玩游戏,另外还有跑程序计算的需求所以通过笔记本电脑使用RDP或Parsec来远程控制,当然瘾犯了也能云游戏.路由器在另一个房间所以是无线网卡链接,用的最好的AX210+10 ...

  5. 一束激光冒充人声:110米外黑掉智能音箱,手机电脑平板也中招

    郭一璞 光栗子 发自 凹非寺 量子位 报道 | 公众号 QbitAI 周末的下午,你正在家里打游戏,不曾注意到身旁的智能音箱上,多出了一个小绿点. 那是一束激光,来自窗外马路对面的另一栋建筑. 突然, ...

  6. 手机控制NodeMCU实现远程电脑开关机

    NodeMCU实现远程电脑开关机 1.确认PC主板支持WOL(Wake on Lan) 2.阿里云物联网平台设置 3.NodeMCU(开机棒)部分程序编写 4.编译手机App(仅支持Android) ...

  7. 使用ESP8266接入阿里云物联网平台(阿里 云智能APP)可远程控制电脑开关机,灯光等设备 CP2102, CH340

    首先,不是问题太复杂,是网上的教程不对! 在这里将详细,简单易懂的描述如何做到标题上的功能 本次目的是手机远程控制设备  文末会附上编译器,源码,第三方库 你需要准备这些东西 1.ESP8266(CH ...

  8. Python 利用智能音箱语音控制电脑开关机

    完成下面这个有趣的实验,你所需要的东西有: 1.路由器(能够形成局域网,且电脑已用网线连接) 2.一个智能音箱(本教程使用的是亚马逊 Echo Dot 2) 3.主板支持wake on lan (大部 ...

  9. 天猫精灵python开发_天猫精灵X1智能音箱使用感想

    11.22音箱到手,等了刚好一个月. 一.测评语音交互功能 测试条件:正宗普通话. 1)问天气.气温:表现良好. 2)找手机功能:试了多次,每次都说手机号码格式不对.有那时间我自己找了. 3)小孩听故 ...

最新文章

  1. 史上最全!图解浏览器的工作原理
  2. Boost:boost::bimaps::multiset_of的测试程序
  3. mysql不需要安装_MySQL免安装版 配置
  4. java 移动其他窗口_移动窗口平均值不等
  5. ajax 折叠,ASP.NET AJAX可折叠面板Accordion应用实例
  6. CCS 3.3中统计程序运行的时间
  7. 开创交互式电脑绘图先河,虚拟现实之父传奇
  8. 卷积神经网络多输入和多输出
  9. vbs程序批量禁用域用户然后移动到指定OU
  10. 美味爱读提供一种崭新的阅读方式
  11. ios控制中心android版,IOS控制中心
  12. TextView设置跑马灯效果
  13. c语言第九章课后作业答案,C语言课后习题部分答案
  14. CentOS 美化记录
  15. 台式计算机cpu允许温度,台式cpu温度多少正常呢?老司机科普一下CPU常见问题
  16. Sql有条件的插入语句
  17. 牛牛的Link Power II
  18. 常用的mysql存储引擎及其特点
  19. 选择电子商务平台:Shopify与WooCommerce
  20. EXCEL的Ctrl键神操作续集,Ctrl+字母=高效

热门文章

  1. CentOS6.5 编译安装zabbix3.0.5,编译安装zabbix_agent客户端
  2. DB2 SQL查询结果集自动编号、返回条数范围控制研究
  3. 为何终端防护对ICS如此重要
  4. informatica 参数文件配置
  5. cleanmymac定时清理与垃圾监测
  6. 【Google官方教程】第三课:缓存Bitmap
  7. Android 环境搭建的错误解决方案
  8. Github 开源项目(一)websocketd (实战:实时监控服务器内存信息)
  9. C#中串口组件的使用方法总结及上位机制作方法
  10. python迷宫问题的所有路径_python——迷宫问题总结