一、环境介绍
宿主机:树莓派3B+ Raspbian系统
HA安装方式:HASS系统使用hass.io一键脚本进行安装
多模网关:ZNDMWG03LM(软件版本v1.4.5_0012)
2、为什么要刷固件
A 、因为要把该多模网关接入到homeassistant,在HASS系统下做相关接入设备的自动化控制,而多模网关接入HASS方式目前有两种:
一种是采用HomeKit中转,很古老的方式,功能支持也不好;
第二种就是我要说的Github上大神写的插件(项目地址https://github.com/AlexxIT/XiaomiGateway3
B、由于该插件是依赖于多模网关自带的Telnet功能,官方在后续的版本中进行了封堵升级。
虽然早期的版本(v1.4.6_0030及以前)默认开放Telnet,但是早期版本对蓝牙mesh设备支持不行,所以如果早期版本的多模网关下接的有蓝牙设备,则蓝牙设备是无法在HASS系统内显示的;
进行封堵后的版本若想使用AlexxIT/XiaomiGateway3插件进行接入HASS则必须通过拆解后使用uart刷官方低级版本或者刷第三方魔改固件
3、刷固件详细流程
Step1:获取网关token,确认版本
尝试很多方法(包括安卓手机安装低版本米家后在,狂点插件版本等方法)都不行,最后找到一个靠谱的方法,具体如下:
①将多模网关添加到米家APP(米家app需要注册账户),添加成功后米家可能会提示多模网关固件版本需要升级,切记不要升级!切记不要升级!切记不要升级!
②确认当前版本号是否支持Telnet(可以参考AlexxIT/XiaomiGateway3说明查看版本支持情况),v1.4.6_0030及以前是默认开放Telnet的,我的是v1.4.5_0012不需要拆机。**但是!但是!但是!**虽然默认开放Telnet,你如果直接使用Putty进行Telnet连接网关是连接不了的,需要在HASS系统上使用AlexxIT/XiaomiGateway3插件完成多模网关接入后就自动打开了多模网关的Telnet(能用Telnet直接登录多模网关(默认用户名admin,密码空)后就可以刷机了,后面会讲)
③在树莓派系统上依次执行:
a、安装依赖pip3 install pycryptodome pybase64 requests
b、运行脚本(脚本下载地址:https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor)
c、python3 token_extractor.py
d、输入小米账户名和密码(出于安全性考虑的话,可以后续修改下密码),选择国家代码cn
e、所有账户下设备的IP和tokens就出来了(只有token,没有key,我们要token就够了)
Step2:HASS安装插件,插件地址: link
①在HASS的Add-on Store搜索并安装Terminal&SSH,安装后运行并打开Show in sidebar,这样可以在左侧边栏看到Terminal快捷入口
②HASS中打开Terminal进入到config目录,并创建文件夹custom_components(如果已存在就不用创建):
③在config目录下执行:git clone https://github.com/AlexxIT/XiaomiGateway3/将下载的XiaomiGateway3文件夹中custom_components文件内容复制到我们创建的config/custom_components中,并将原先git下载的XiaomiGateway3文件夹删除,以上完成后目录结构如下,完成后可以重启一下
Step3:添加小米网关
在HASS的配置—集成界面,点右下角“添加集成”,搜索xiaomi,可以看到Xiaomi Gateway出来了,选择Xiaomi Gateway 3,选择Add Gateway using Token,填写小米网关在路由器上的显示的IP地址(最好路由器上将小米网关IP地址与MAC绑定)及前面获取到的token
Step4:刷新固件
①HASS—配置—设备找到“Xiaomi Gateway3”点进去之后,有个Xiaomi Gateway 3 Firmware Lock,把它打开,这个是防止多模网关固件自动更新的。
②HASS系统中添加小米网关成功意味着可以Telnet连接小米多模网关了,打开Putty,输入小米网关IP地址,选择Telnet连接,可以看到如下登录成功界面:
③参考https://github.com/serrj-sv/lumi.gateway.mgl03/tree/main/firmware,因文中的简单方法一键刷机脚本需要翻墙,于是采取笨办法:局域网内PC下载固件包解压后通过FTP发送到网关,再在网关上使用命令行进行更新:
④Telnet命令行窗口依次执行(此操作为在多模网关上开启ftp server,server地址为小米网关在路由器上的IP地址):
curl -k -o /data/busybox https://busybox.net/downloads/binaries/1.21.1/busybox-mipsel && chmod +x /data/busybox
/data/busybox tcpsvd -vE 0.0.0.0 21 /data/busybox ftpd -w &
⑤ PC上下载并解压固件包,安装FileZilla Client,主机地址为ftp://192.168.10.106, 用户名:admin 密码:空 ,连接后即可将full_ble_1.4.7_0065.gbl、linux_1.4.7_0065.bin、root_1.4.7_0065_mod20201211.bin复制到tmp/目录下,具体刷机步骤参考https://bbs.hassbian.com/thread-11603-1-1.html
以上便是整个刷机过程,有任何问题欢迎留言