『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 14851|回复: 14

[经验分享] 避免踩坑:小米网关Bug, 连接设备数请勿超过48

[复制链接]

2

主题

19

帖子

208

积分

论坛技术达人

积分
208
金钱
184
HASS币
20
发表于 2020-10-15 21:32:39 | 显示全部楼层 |阅读模式
本帖最后由 JasonGao 于 2020-10-15 21:38 编辑

上周末升级HA,升级之后其中一个米家网连不上,底下的米家zigbee设备全部丢失。
刚开始调查以为是HA的锅,查阅无数资料无果。因为HA是装载虚拟机上,就回滚linux快照到升级前的版本,依然无法连接小米网关,排除新版本兼容性嫌疑。

最后调查发现,是HA的xiaomi_gateway component在初始化时依赖小米网关的get_id_list接口,而此接口存在bug,当设备数达到49时,会返回异常数据,导致HA xiaomi_gateway component无法解析设备列表,component初始化失败,此网关下所有设备失联。

我在更久之前在网关下添加过新设备,恰好设备数超过49,但当时没有重启过HA,所以未触发此Bug。而此次升级后重启,重新获取设备列表,触发此Bug。所以如果大家在升级后无法连接小米网关,不一定是升级的兼容性问题,也可能是网关下设备数超过达到49导致无法初始化。


当设备数为48时小米网关返回997字节


当设备数为49时,小米网关末尾返回不可见字符。疑似网关固件中有一个1000字节的buffer,但代码处理有问题产生溢出,导致返回异常数据。


小米网关固件是最新版本:1.4.1_176.0220

此问题已在米家App的「帮助与反馈」中进行了反应,也在小米论坛中进行了反馈,但目前还无官方回复。
https://www.xiaomi.cn/post/22583151






49个设备出错

49个设备出错

48个设备

48个设备
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

发表于 2020-10-15 22:07:10 | 显示全部楼层
你的分析和结论无懈可击,厉害!

不过我记得小米的宣传好像是不超过32个子设备??毕竟网关的性能也很有限。
回复

使用道具 举报

2

主题

19

帖子

208

积分

论坛技术达人

积分
208
金钱
184
HASS币
20
 楼主| 发表于 2020-10-15 22:12:54 | 显示全部楼层
本帖最后由 JasonGao 于 2020-10-15 22:15 编辑
XCray 发表于 2020-10-15 22:07
你的分析和结论无懈可击,厉害!

不过我记得小米的宣传好像是不超过32个子设备??毕竟网关的性能也很有限 ...

小米宣传的32个设备,是网关直连zigbee建议32个以内,这个应该是从zigbee协议稳定性角度给的建议,实际能连32以上。
而且记得官方宣称在使用zigbee中继之后,可以连接128个设备。所以get_id_list应该满足128个设备的场景。
我也尝试了连接更多的设备,再往后设备id返回的也都正确,就再1000字节分界处出现异常数据,应该就是实现bug,而不是超过了设计指标。
回复

使用道具 举报

105

主题

2954

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
12103
金钱
9084
HASS币
460

教程狂人突出贡献

发表于 2020-10-15 22:16:02 | 显示全部楼层
JasonGao 发表于 2020-10-15 22:12
小米宣传的32个设备,是网关直连zigbee建议32个以内,这个应该是从zigbee协议稳定性角度给的建议,实际能 ...

128这个数字还真没印象。估计楼主是第一个测试49个子设备的,小米的人恐怕都没测试过,要不然也不会有设备列表数据超长这个问题了。
回复

使用道具 举报

35

主题

533

帖子

2895

积分

金牌会员

Rank: 6Rank: 6

积分
2895
金钱
2362
HASS币
0
发表于 2020-10-16 00:37:10 | 显示全部楼层
我目前算上3个网关,3个空调伴侣,一共是37个小米设备;
搞3个网关,就是因为超过10几个设备后(以及承重墙影响),感觉已经不是很稳定了……
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2020-10-16 08:48:43 | 显示全部楼层
JasonGao 发表于 2020-10-15 22:12
小米宣传的32个设备,是网关直连zigbee建议32个以内,这个应该是从zigbee协议稳定性角度给的建议,实际能 ...
这个应该是从zigbee协议稳定性角度给的建议


并不是,你拆开看看是啥芯片,芯片决定接入量。DIY 网关可以接入更多数量。
Nero
回复

使用道具 举报

13

主题

400

帖子

2790

积分

金牌会员

Rank: 6Rank: 6

积分
2790
金钱
2390
HASS币
0
发表于 2020-10-16 09:39:13 | 显示全部楼层
我连20个以上时就有些设备偶尔掉线了。又添了两个空天伴侣,每个接的设备都在20一下就比较稳定不掉线。
回复

使用道具 举报

2

主题

19

帖子

208

积分

论坛技术达人

积分
208
金钱
184
HASS币
20
 楼主| 发表于 2020-10-16 18:24:30 | 显示全部楼层
neroxps 发表于 2020-10-16 08:48
并不是,你拆开看看是啥芯片,芯片决定接入量。DIY 网关可以接入更多数量。 ...

1. 我在接入49个设备的情况下可以正常使用。如果除去这个bug, 不用HA, 在接入50+设备的时候也能正常使用。我理解是我这50+设备比较密集。「芯片决定接入量」不知道这里的「决定」是刚性限制,还是指考虑了各种网络环境下,平均负载的「隐性决定」。

2. 小米网关的设备本身也很迷,设计反人类。如果就是硬性限制,应该达到上限时拒绝配对,在配对时直接报「超出网关配对限制拒绝配对」。而现状,别说配对时超限报错,在米家app中都没法查看一个网关下的设备数,只能一个个数。

感觉小米网关到底能连多少,小米自己都没想清楚。
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2020-10-16 21:24:13 | 显示全部楼层
JasonGao 发表于 2020-10-16 18:24
1. 我在接入49个设备的情况下可以正常使用。如果除去这个bug, 不用HA, 在接入50+设备的时候也能正常使用。 ...

不是反人类,是为了卖更多的网关~
Nero
回复

使用道具 举报

8

主题

182

帖子

792

积分

高级会员

Rank: 4

积分
792
金钱
610
HASS币
0
发表于 2020-10-17 19:02:29 | 显示全部楼层
难道我的问题是这个原因。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-26 13:49 , Processed in 0.656005 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表