python语音控制智能家电_Python 树莓派智能音箱语音控制电脑开关机-Python 实用宝典...
完成下面这个有趣的实验,你所需要的东西有:
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 实用宝典...相关推荐
- python控制电脑关机_Python利用智能音箱语音控制电脑开关机
完成下面这个有趣的实验,你所需要的东西有:1.路由器(能够形成局域网,且电脑已用网线连接) 2.一个智能音箱(本教程使用的是亚马逊 Echo Dot 2) 3.主板支持wake on lan (大部分 ...
- python语音控制手机_python 树莓派语音控制普通台灯教程-Python 实用宝典
阅读这篇文章前,这两篇文章可能对你会有所帮助: 利用智能音箱语音控制电脑开关机 (必读,否则你可能不知道我在说什么) 先看看效果: 完成这项有趣的实验,你所需要的材料有: 1.电烙铁 2.一个8050 ...
- 王珺:智能音箱语音技术分享
本文整理自王珺在云加社区线下沙龙活动的分享内容,这次分享介绍了在研究方面的一系列新的方法和改进,主要是语音识别,语音识别,声纹识别,以及TTS,在落地应用方面,语音识别中心为多个腾讯的产品有技术支持的 ...
- 使用ESP8266/ESP32 实现智能语音控制电脑开关机
最近买了个台机放客厅里接电视玩游戏,另外还有跑程序计算的需求所以通过笔记本电脑使用RDP或Parsec来远程控制,当然瘾犯了也能云游戏.路由器在另一个房间所以是无线网卡链接,用的最好的AX210+10 ...
- 一束激光冒充人声:110米外黑掉智能音箱,手机电脑平板也中招
郭一璞 光栗子 发自 凹非寺 量子位 报道 | 公众号 QbitAI 周末的下午,你正在家里打游戏,不曾注意到身旁的智能音箱上,多出了一个小绿点. 那是一束激光,来自窗外马路对面的另一栋建筑. 突然, ...
- 手机控制NodeMCU实现远程电脑开关机
NodeMCU实现远程电脑开关机 1.确认PC主板支持WOL(Wake on Lan) 2.阿里云物联网平台设置 3.NodeMCU(开机棒)部分程序编写 4.编译手机App(仅支持Android) ...
- 使用ESP8266接入阿里云物联网平台(阿里 云智能APP)可远程控制电脑开关机,灯光等设备 CP2102, CH340
首先,不是问题太复杂,是网上的教程不对! 在这里将详细,简单易懂的描述如何做到标题上的功能 本次目的是手机远程控制设备 文末会附上编译器,源码,第三方库 你需要准备这些东西 1.ESP8266(CH ...
- Python 利用智能音箱语音控制电脑开关机
完成下面这个有趣的实验,你所需要的东西有: 1.路由器(能够形成局域网,且电脑已用网线连接) 2.一个智能音箱(本教程使用的是亚马逊 Echo Dot 2) 3.主板支持wake on lan (大部 ...
- 天猫精灵python开发_天猫精灵X1智能音箱使用感想
11.22音箱到手,等了刚好一个月. 一.测评语音交互功能 测试条件:正宗普通话. 1)问天气.气温:表现良好. 2)找手机功能:试了多次,每次都说手机号码格式不对.有那时间我自己找了. 3)小孩听故 ...
最新文章
- 史上最全!图解浏览器的工作原理
- Boost:boost::bimaps::multiset_of的测试程序
- mysql不需要安装_MySQL免安装版 配置
- java 移动其他窗口_移动窗口平均值不等
- ajax 折叠,ASP.NET AJAX可折叠面板Accordion应用实例
- CCS 3.3中统计程序运行的时间
- 开创交互式电脑绘图先河,虚拟现实之父传奇
- 卷积神经网络多输入和多输出
- vbs程序批量禁用域用户然后移动到指定OU
- 美味爱读提供一种崭新的阅读方式
- ios控制中心android版,IOS控制中心
- TextView设置跑马灯效果
- c语言第九章课后作业答案,C语言课后习题部分答案
- CentOS 美化记录
- 台式计算机cpu允许温度,台式cpu温度多少正常呢?老司机科普一下CPU常见问题
- Sql有条件的插入语句
- 牛牛的Link Power II
- 常用的mysql存储引擎及其特点
- 选择电子商务平台:Shopify与WooCommerce
- EXCEL的Ctrl键神操作续集,Ctrl+字母=高效
热门文章
- CentOS6.5 编译安装zabbix3.0.5,编译安装zabbix_agent客户端
- DB2 SQL查询结果集自动编号、返回条数范围控制研究
- 为何终端防护对ICS如此重要
- informatica 参数文件配置
- cleanmymac定时清理与垃圾监测
- 【Google官方教程】第三课:缓存Bitmap
- Android 环境搭建的错误解决方案
- Github 开源项目(一)websocketd (实战:实时监控服务器内存信息)
- C#中串口组件的使用方法总结及上位机制作方法
- python迷宫问题的所有路径_python——迷宫问题总结