米家智能扫地机器人接入树莓派Domoticz

2017-05-19 15:30:47 107点赞 873收藏 63评论

上一篇末提到接下来要写写具体如何使用这两个开关来学习、导入博联e-Control中的遥控信号,又得先放放了,有需要的请先看外文自学吧。

米家智能扫地机器人接入树莓派Domoticz

按张大妈的规矩,先推介下产品:小米扫地机,入手近一年。

米家(MIJIA)扫地机器人 小米扫地机器人 智能规划路线吸尘器 智能自动 米家扫地机器人1699元京东直达链接

米家扫地机器人,真心不错,价格有良心、品质有保证、性能拿得出的国产扫地机。这是小米最让我满意的产品。完全替代了家里服役了近十年的irobot roomba(它的故事以后再讲)。

今天要谈的是如何将小米扫地机接入Domoticz,接入Domoticz的用处其实并不太大,意义只是在于过程,学习应用下抓包的过程。还有就是若是用的是iOS10以上的苹果手机、平板,并在装有domoticz的终端上安装了homebridge服务,并让苹果手机、平板联上。那么恭喜你,你有时可以“犯二”下,对着手机说“嗨siri,开始爱妃扫地”、“嗨siri,停止爱妃扫地”、“嗨siri,开始爱妃回家吃饭”、“嗨siri,开始爱妃吱一声”,仅此而于。不过,有时“犯二”下也不错,是吧?

开始前,还是先感谢下大神Sevift,是他将这方法分享出来。我只是搬运工,我是雷锋,不谢。

先看下最终成果:

米家智能扫地机器人接入树莓派Domoticz

接入思路:我们可以通过手机应用——米家下指令让小米扫地机开始扫地、暂停、回充、定位等等,那么如果我们能将这个看不见摸不着的通过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,找到你家的扫地机(什么?你没找到?那出门右拐,小米家、京东家、天猫家都有货,到货了再往下看)。我们总共要找到四个指令(清扫、暂停、回充、定位。你也可以花时间找更多,强力扫、安静扫......**。),先于找“定位”指令为例做说明。先找到安卓模拟软件中米家应用扫地机定位按钮。

米家智能扫地机器人接入树莓派Domoticz

米家智能扫地机器人接入树莓派Domoticz

1.2 抓包前的准备:

安装抓包软件wireshark,并打开。界面如下:

米家智能扫地机器人接入树莓派Domoticz

点击第四个按纽Capture Options,打开Wireshark - Capture Interfaces窗口,选择你当前电脑的上网端(无线或网卡。我是无线网卡,选Wi-Fi en0),点击开始,进入Wireshark软件的抓包界面,自动开始抓包。

米家智能扫地机器人接入树莓派Domoticz

先让它停下来,点击工具栏第二个,红色停止按纽(先别抓包、我们还没给扫地机发指令呢)。再点击第一个蓝色鲨鱼图标(Start Capturing packets)出现个确认保存窗口。暂停。

米家智能扫地机器人接入树莓派Domoticz

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)。

米家智能扫地机器人接入树莓派Domoticz

米家智能扫地机器人接入树莓派Domoticz

2.2 测试找到的数据包:

打开数据包发送软件packetsender,将复制内容填入,点击发送。

米家智能扫地机器人接入树莓派Domoticz

点击发送后,若扫地机有回复“皇上,臣妾在此。”,就说明定位指令找到。将该指令保存在一个文本文件中备用。若发送后,扫地机没反应,就说明找错数据包了,再找符合条件(源头列是电脑IP 地址、目标列是扫地机IP地址、协议列是UDP)的数据包,再复制、再发送测试。直到扫地机有回应。一般也就两三个数据包符合条件的。实在找不到,再重来一遍抓包,动作快点,减少抓包数据,免得无关数据太多。

另外几个指令也是按此操作,找出。

最后你就得到所需的四组数据都是长度为120个的字符串。

你会发现这四个字条串的前28个字符都是相同的。

米家智能扫地机器人接入树莓派Domoticz

至此,你的抓包、找指令的活是干好了,不错!

三、在安装 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)

米家智能扫地机器人接入树莓派Domoticz

建议大家先用文本代码编辑器(我是用atom)修改好后,再一次复制粘贴过来。至于为什么要将四个字符串中的前28位相同的字符单列出来,然后在指令中用 + 再合并,没啥,就是为了减少代码字符数,只是程序员的工作习惯。好吧,保留原创者的工作习惯,向他致敬。

保存、退出nano。

sudo chmod 777 MiRobotVacuum.py 赋予文件权限

在终端添加python脚本的工作完成。


四、domoticz新增虚拟选择开关

在domoticz中新增硬件,名称自取,类型选择dummy。

米家智能扫地机器人接入树莓派Domoticz

在开关页手动添加开关,类型选为选择开关。

米家智能扫地机器人接入树莓派Domoticz

进入新建开关的编辑页面:

米家智能扫地机器人接入树莓派Domoticz

编辑选择开关的名称及相关的脚本命令,保存。

不出差错的话,你的小米扫地机接入domoticz的活就完成了,试着控制看看。

五、让siri来指派干活

苹果手机、平板中的homekit是不支持选择开关的,为了偶尔的“犯二”,让siri来控制扫地机,我们要在domoticz做些设置。不细讲。新建硬件,新建虚拟开关。

米家智能扫地机器人接入树莓派Domoticz

在苹果手机、平板中的homekit多了三个开关。归到客厅。开始“犯二”,没办法,本来设定为爱妃的,可siri总听成艾菲,好吧,没皇上命,叫不成爱妃。

米家智能扫地机器人接入树莓派Domoticz

六、搞定,收工。值友们,开工吧......


参考资料:

https://www.domoticz.com/forum/viewtopic.php?f=17&t=11520&hilit=Mi+Robot+Vacuum&start=280

上一篇

博联智能遥控器RM2(RM Pro)接入树莓派Domoticz前言:写正文之前先感谢以下值友们和他们的文章:零基础打造全屋智能控制系统篇一:智能家居控制中心搭建及小米博联的联动零基础打造全屋智能控制系统篇一:智能家居控制中心搭建及小米博联的...关于智能家居的原创本站已有不少,楼主在搭...vonzeng| 34 评论16 收藏344查看详情
展开 收起
63评论

  • 精彩
  • 最新
  • 感觉好复杂,已经看晕。

    校验提示文案

    提交
    写得看起来是为了做起来简单。 [拳头] 动起来就总能搞定。

    校验提示文案

    提交
    收起所有回复
  • 自带的APP不是更简单?

    校验提示文案

    提交
    重点在Siri

    校验提示文案

    提交
    其实对小米扫地机来说,自带的米家APP都可以不用。定好打扫周期。每周清理下设备。啥事都没有了。写这个如何接入domoticz就是就分享下世界上还有这么一回事,提供一种对不加密设备的解题思路。 [高兴] 就想着将家里所有的电器联上网,统一到一个平台来,然后,其实也就没有然后了,至少对这扫地机来说。

    校验提示文案

    提交
    还有4条回复
    收起所有回复
  • 我感觉我是个文盲

    校验提示文案

    提交
  • 现在要握手了,发出去一个包,然后收回到一个包,最后再发出去一个包

    校验提示文案

    提交
  • 树莓派已经买了,下一步就坐等房子了,谁赞助一块砖头?

    校验提示文案

    提交
  • 牛*啊 我觉得把智能设备打通壁垒 才是真正的智能家居 而不是各种为战,装一堆APP

    校验提示文案

    提交
  • 很赞,小米不加密搞毛啊,哪天扫地机器人围殴楼主。。

    校验提示文案

    提交
  • 我也买了一个,但是我在想,现在智能设备越来越多,哪天被黑客攻击了怎么办。。 [皱眉]

    校验提示文案

    提交
    黑客闲的黑个扫地机干啥……

    校验提示文案

    提交
    其实你家的扫地机是塞伯坦星人

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 大神能来个微信一起聊聊吗?大赏第一个

    校验提示文案

    提交
  • 门槛太高了 最好有打包的方案

    校验提示文案

    提交
  • 碉堡了!!!!

    校验提示文案

    提交
  • 假冒自然语言交互控制。

    校验提示文案

    提交
  • 京东微联的格力空调产品能接入吗?

    校验提示文案

    提交
    我最近也在看,京东微联有一套开放平台,目前申请了开发者,有兴趣可以交流

    校验提示文案

    提交
    收起所有回复
  • 看都看不懂

    校验提示文案

    提交
  • 竟然没有加密

    校验提示文案

    提交
  • 有点怎么说呢,多此一举 [想一想]

    校验提示文案

    提交
  • 智能设备还是少,如果全部家电都能智能了还是值得一折腾的

    校验提示文案

    提交
  • 这个还是值得学习下的,到时候看看能否通过抓包的方式把空调接入homeassiatant

    校验提示文案

    提交
  • 或者买个带红外的那种智能插座。。

    校验提示文案

    提交
  • 不是能定时?

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
相关兴趣推荐
873
扫一下,分享更方便,购买更轻松