树莓派构建智能家居控制系统 篇二:米家智能扫地机器人接入树莓派Domoticz
上一篇末提到接下来要写写具体如何使用这两个开关来学习、导入博联e-Control中的遥控信号,又得先放放了,有需要的请先看外文自学吧。
按张大妈的规矩,先推介下产品:小米扫地机,入手近一年。
米家扫地机器人,真心不错,价格有良心、品质有保证、性能拿得出的国产扫地机。这是小米最让我满意的产品。完全替代了家里服役了近十年的irobot roomba(它的故事以后再讲)。
今天要谈的是如何将小米扫地机接入Domoticz,接入Domoticz的用处其实并不太大,意义只是在于过程,学习应用下抓包的过程。还有就是若是用的是iOS10以上的苹果手机、平板,并在装有domoticz的终端上安装了homebridge服务,并让苹果手机、平板联上。那么恭喜你,你有时可以“犯二”下,对着手机说“嗨siri,开始爱妃扫地”、“嗨siri,停止爱妃扫地”、“嗨siri,开始爱妃回家吃饭”、“嗨siri,开始爱妃吱一声”,仅此而于。不过,有时“犯二”下也不错,是吧?
开始前,还是先感谢下大神Sevift,是他将这方法分享出来。我只是搬运工,我是雷锋,不谢。
先看下最终成果:
接入思路:我们可以通过手机应用——米家下指令让小米扫地机开始扫地、暂停、回充、定位等等,那么如果我们能将这个看不见摸不着的通过wifi发送的指令抓出来,再告诉domoticz是啥内容,那么我们也就能实现用domoticz来控制小米扫地机了。(关键是这个小米扫地机在接收指令时没有握手的过程,只是简单地听到干啥就干啥,并不去确认发放指令的是谁。)
因此接入步骤:
一、电脑模拟手机发送指令、拦截发送的指令(抓包);
二、找出电脑发送的指令、并测试确认;
三、在安装 domoticz的终端设备中新建运行脚本;
四、domoticz新增虚拟选择开关;
五、让siri来指派干活;
六、搞定、结束。
前提:
1、你准备好了装有domoticz的终端(树莓派或windows电脑或Mac电脑等domoticz支持的终端);
2、你具备了最基本的domoticz操作能力(比如会增虚拟硬件、设备等等);
3、知道你当前电脑和小米扫地机的IP地址(都是在同一局域网中,将小米的IP地址设为静态的);
4、需要软件:安卓模拟软件BlueStacks、抓包软件wireshark、数据包发送软件packetsender;
5、如果最后还想试试“犯二”用siri来指令扫地机,那你的domoticz终端还必须装有homebridge,并且你的苹果手机或平板中的homekit也已配置正常。(过程在此不详述)
过程(下面的配图是基于用苹果电脑SSH连接装有domoticz的树莓派):
一、电脑模拟手机发送指令,拦截发送的指令(抓包)
1.1 找到米家应用发送相应指令的位置:
在电脑(PC或Mac)安装安卓模拟软件BlueStacks(PC版、Mac版),并在BlueStacks中安装mi home应用,并登录mi home,找到你家的扫地机(什么?你没找到?那出门右拐,小米家、京东家、天猫家都有货,到货了再往下看)。我们总共要找到四个指令(清扫、暂停、回充、定位。你也可以花时间找更多,强力扫、安静扫......**。),先于找“定位”指令为例做说明。先找到安卓模拟软件中米家应用扫地机定位按钮。
1.2 抓包前的准备:
安装抓包软件wireshark,并打开。界面如下:
点击第四个按纽Capture Options,打开Wireshark - Capture Interfaces窗口,选择你当前电脑的上网端(无线或网卡。我是无线网卡,选Wi-Fi en0),点击开始,进入Wireshark软件的抓包界面,自动开始抓包。
先让它停下来,点击工具栏第二个,红色停止按纽(先别抓包、我们还没给扫地机发指令呢)。再点击第一个蓝色鲨鱼图标(Start Capturing packets)出现个确认保存窗口。暂停。
1.3 抓包:
先将第1.1的窗口和第1.2的窗口并排,方便一会两窗口间快速切换操作。接下来运作要快哦(慢也行,就是到时抓包软件抓到太多不相关的信息,不好找指令代码)。点击上面1.2不保存按钮(Continue without Saving),开始抓包,立马回到第1.1在bluestaacks软件已进入的mi home应用定位界面,点击定位我的扫地机,在听到扫地机回答“皇上,臣妾在此。”时,说明电脑已发出我们要找的定位指令,小米扫地机也收到了,立马回到wireshark界面,点击第二个停止按纽停止抓包。指令已被抓,就看你筛选了。
二、找出电脑发送的指令、并测试确认
2.1 找出正确数据包:
按目标列IP地址排序 ,根据你源头列——操作电脑的IP、目标列——小米扫地机的IP地址、协议列DUP进行筛选,如下图操作,在数据串上点右键,点击copy - ...as a Hex Stream,复制(...as a Hex Stream)。
2.2 测试找到的数据包:
打开数据包发送软件packetsender,将复制内容填入,点击发送。
点击发送后,若扫地机有回复“皇上,臣妾在此。”,就说明定位指令找到。将该指令保存在一个文本文件中备用。若发送后,扫地机没反应,就说明找错数据包了,再找符合条件(源头列是电脑IP 地址、目标列是扫地机IP地址、协议列是UDP)的数据包,再复制、再发送测试。直到扫地机有回应。一般也就两三个数据包符合条件的。实在找不到,再重来一遍抓包,动作快点,减少抓包数据,免得无关数据太多。
另外几个指令也是按此操作,找出。
最后你就得到所需的四组数据都是长度为120个的字符串。
你会发现这四个字条串的前28个字符都是相同的。
至此,你的抓包、找指令的活是干好了,不错!
三、在安装 domoticz的终端设备中新建运行脚本(以终端是树莓派为例)
SSH进入树莓派或直接在树莓派的终端窗口操作:
cd /home/pi/domoticz/scripts/python/ 进入要新建脚本文件的目录(位置自己定。建议放这好归类管理);
sudo nano MiRobotVacuum.py 编辑新建脚本文件MiRobotVacuum.py,文件名自取,注意大小写;
将以下脚本复制进去:
#!/usr/bin/python
import socket
import sys
import codecs
UDP_IP = '192.168.100.18'
UDP_PORT = 54321
INET_ADDR = (UDP_IP,UDP_PORT)
action = str(sys.argv[1])
massage = "213100500000000002f2c97b5872"
if action == "start":
message_to_send = massage + "2fd096c280746dc2091bad1d30c49ce74da6c88492a5c0e7c427ad0b4ca98c3b08ea35e67b29dddd8624dd1f2ea46ced68fce3c5b7fef8e89eef60b3c777f43a5622"
if action == "pause":
message_to_send = massage + "3080fdc4d67fe6fd048b63eb6d2cee5f285f8fec54c2e3bc5486641ec620bae160e9717af4d17ce3c0265bcb807644dae475bcaaf089391f6f76fa85b31396af3e26"
if action == "home":
message_to_send = massage + "30e4006525a8e0420c337fbc2bfc1741369bb9760685aafe250790ee4ea8bda3aafbdfaa47ae0e8518503530fb72579fe8cf334c6a6fcd4cbc94bfb310f64163a80a"
if action == "find":
message_to_send = massage + "29d24b61f9c826221c4c7a68be606ff324f81fcc282e18fa679d0506e3e805cbfe56323f2dc292f5d609d20782cb6df1abe3b4a9ce062da42e3371126048c2213b3e"
message_to_send = codecs.decode(message_to_send, "hex_codec")
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(message_to_send, INET_ADDR)
建议大家先用文本代码编辑器(我是用atom)修改好后,再一次复制粘贴过来。至于为什么要将四个字符串中的前28位相同的字符单列出来,然后在指令中用 + 再合并,没啥,就是为了减少代码字符数,只是程序员的工作习惯。好吧,保留原创者的工作习惯,向他致敬。
保存、退出nano。
sudo chmod 777 MiRobotVacuum.py 赋予文件权限
在终端添加python脚本的工作完成。
四、domoticz新增虚拟选择开关
在domoticz中新增硬件,名称自取,类型选择dummy。
在开关页手动添加开关,类型选为选择开关。
进入新建开关的编辑页面:
编辑选择开关的名称及相关的脚本命令,保存。
不出差错的话,你的小米扫地机接入domoticz的活就完成了,试着控制看看。
五、让siri来指派干活
苹果手机、平板中的homekit是不支持选择开关的,为了偶尔的“犯二”,让siri来控制扫地机,我们要在domoticz做些设置。不细讲。新建硬件,新建虚拟开关。
在苹果手机、平板中的homekit多了三个开关。归到客厅。开始“犯二”,没办法,本来设定为爱妃的,可siri总听成艾菲,好吧,没皇上命,叫不成爱妃。
六、搞定,收工。值友们,开工吧......
参考资料:
https://www.domoticz.com/forum/viewtopic.php?f=17&t=11520&hilit=Mi+Robot+Vacuum&start=280
上一篇
掌上芥
校验提示文案
pizigao
校验提示文案
我不废话你也别废话
校验提示文案
值友5673733162
校验提示文案
买_怕你就输了
校验提示文案
qsc1234qwe
校验提示文案
青木刀
校验提示文案
ShengBang
校验提示文案
孙小宁
校验提示文案
Mamoruk
校验提示文案
暴君文
校验提示文案
睡不够的工程师a
校验提示文案
shenlg
校验提示文案
conan871107
校验提示文案
happystayfoolish
校验提示文案
永夜光
校验提示文案
奥巴蛙
校验提示文案
tizzybac
校验提示文案
腹痛男
校验提示文案
迟豁
校验提示文案
vicent-chen
校验提示文案
清风醇
校验提示文案
tian1229
校验提示文案
值友5673733162
校验提示文案
system416
校验提示文案
joln
校验提示文案
值友2743941012
校验提示文案
tizzybac
校验提示文案
值友3506758324
校验提示文案
forSign
校验提示文案
forSign
校验提示文案
青木刀
校验提示文案
windxin
校验提示文案
Buy_harry
校验提示文案
支书
校验提示文案
亚修
校验提示文案
于尼玛不怂
校验提示文案
PastaV
校验提示文案
胸无空杯具了
校验提示文案
柳下惠
校验提示文案