跳转至

miio

概述

  小米是一家智能设备生产商,他生产了很多智能设备。用户通过米家app来控制这些设备,这些设备使用加密的专有网络协议与米家app进行通信。该协议基于UDP,使用54321端口。

  为了可以消除对专有软件(米家app)的依赖,并能控制自己的设备,所以出现了MiIo。设备和米家app在同一局域网下使用的加密专有网络协议我们称之为MiIo协议。

安装

使用npm安装miio

sudo npm install -g miio

获取设备的token值

米家app获取法

  部分设备可以在米家app内查看到token等信息。目前适用设备包括米家多功能网关和绿米空调伴侣,米家空调伴侣。操作方法如下:

  1. 打开米家app,找到网关或者空调伴侣,点击右上角。
    1
  2. 点击关于
    2
  3. 狂点下方空白处
    3
  4. 选择网关信息
    4
  5. 将出现的IP和token记录
    5

网络获取法

可以借助miio插件发送hello报文获取token,运行命令如下:

miio --discover
得到如下反馈,包括IP和token。
Device ID: 55388595
Model info: Unknown
Address: 192.168.8.1
Token: 7a6c4e46553032326c53365374413834 via auto-token
注:很多设备隐藏了token,使用该方法可能无法获取到token或获取到的token不正确。

数据库法获取(推荐)

米家app在载入设备列表时会将设备信息记录到本地数据库中,可以通过读取该数据路拿到token等信息。

该方法必须有android手机或android模拟器。

注:android手机/android模拟器必须是可以root的。

Windows系统推荐使用蓝叠安卓模拟器:http://www.bluestacks.cn/

MacOS系统推荐使用mumu安卓模拟器:http://mumu.163.com/

  1. 在android手机/android模拟器上安装米家app。
  2. 打开米家app并登陆你的米家帐号和密码。
  3. 刷新设备列表,确保你要抓去token的设备出现在设备列表里。
  4. 关闭米家app,打开文件管理器(推荐使用RE文件管理器)。
  5. 进入目录/data/data/com.xiaomi.smarthome/databases/中。
    miio2file
  6. 将miio2.db文件文件上传至网页:http://miio2.yinhh.com/ 即可显示token。