米家app的新版本很多设备都看不到token了。 而且其中android版本也已经不再在本地存储已接入设备的sqlite db文件。这个意思就是说HA官网上的取得token指南 :https://www.home-assistant.io/co ... ng-the-access-token
里,android的方法可能已经不再适用,除非你有老版本的米家apk。 我在Apkmirror上安装的老版本一直启动crash,无奈只能转向iOS。
所幸iOS到目前为止(2018-11-20)的最新版本仍然在本地有存储sqlite文件。
按照上面链接里 iOS那一段说明,可以取到你米家app内的sqlite文件。
- Configure the robot with the Mi-Home app.
- Using iTunes, create an unencrypted backup of your iPhone.
- Install iBackup Viewer, open it, and open your backup.
- Open the “Raw Data” module.
- Navigate to com.xiaomi.mihome.
- Search for a file that looks like this: 123456789_mihome.sqlite – note that _mihome.sqlite is not the correct file.
- Save this file to your filesystem.
- Install DB Browser for SQLite.
- Open DB Browser and load the .sqlite file you saved from your backup.
- Click on the Execute SQL tab.
- Input and run this query: SELECT ZTOKEN FROM ZDEVICE WHERE ZMODEL LIKE "%vacuum%"
- Copy the returned 32-digit hexadecimal string to your clipboard.
- Open Terminal and execute this command: echo '0: <YOUR HEXADECIMAL STRING>' | xxd -r -p | openssl enc -d -aes-128-ecb -nopad -nosalt -K 00000000000000000000000000000000
- Use the resulting string as your token.
但是,按照文中说的最后第 11 到13 步解码那一段,已经过时。因为现在你会发现 11步你取到的ZToken是一串96位的的AES-ECB加密字符。你需要把它解码转换为32位。
实际上github上的开发者早已发现并给了解决办法: https://github.com/rytilahti/python-miio/issues/75
他们提供了 miio-extract-tokens 这个工具方便你提取token。
你需要做的很简单:
1. 把你提取出的 sqlite文件传到你的homeassistant docker 容器内。
2. 确保你homeassistant 容器内安装了 miio 的package, 那个工具应该就在 miio 包内
3. 登入你的homeassistant 容器的 bash:
docker exec -it homeassistant /bin/bash
你可以先尝试运行 mirobo discover,有文档提到可以取到token。不过我这里不行,取得的token全是000000.....
所以我们还是用 miio-extract-tokens, 这个工具很简单你直接
bash-4.4# miio-extract-tokens --dump-all your_mihome_db_file.sqlite
用 --dump-all 参数导出全部。 这里 your_mihome_db_file.sqlite 是你自己之前取得的db文件。
然后,很神奇地你就得到几乎所有连接进米家的设备的token了,大致输出类似下面这样:
bash-4.4# miio-extract-tokens --dump-all 170424098_mihome.sqlite
INFO:miio.extract_tokens:Reading database from 170424098_mihome.sqlite
INFO:miio.extract_tokens:Reading tokens from Apple DB
玄关灯
Model: yeelink.light.ct2
IP address: 192.168.1.89
Token: adc9xxxxxxxxxxxxxxxxxxxxx94f0
MAC: 7C:49:EB:xxxxxx
小方智能摄像机
Model: isa.camera.isc5
IP address: 192.168.1.98
Token: 71557xxxxxxxxxxxxxxxxxxxxxxxxx36b62
MAC: 34:CE:00:xxxxxx
米家多功能网关
Model: lumi.gateway.v3
IP address: 192.168.1.126
Token: daaxxxxxxxxxxxxxxxxxxxxxxxxxxxxd006
MAC: 7C:49:EB:xxxxxx
然后你就可以愉快地去 configuration.yaml里添加设备了。
Btw, 不知道为啥我的米家网关 用 xiaomi_aqara 模块一直能扫到就是死活连接不上。 用miio居然也扫出来了。 这个token和 米家app里看到的那个key好像不是同一个东西?
|