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

 找回密码
 立即注册
查看: 17811|回复: 26

[已解决] HA与小米网关通信进行抓包 KEY转换问题

[复制链接]

4

主题

31

帖子

121

积分

注册会员

Rank: 2

积分
121
金钱
90
HASS币
0
发表于 2017-8-8 00:36:34 | 显示全部楼层 |阅读模式
因为一直存在 报错

ERROR (Thread-10) [PyXiaomiGateway] Got error element in data {"error":"Invalid key"}



就对 homeassistant 抓了个包 如图,原本16位的密码变成了32位, 有木有人知道HA 和 小米通讯的时候这个KEY的字段是会进行转换吗?用什么方式转换?
抓包.jpeg
回复

使用道具 举报

123

主题

4661

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16410
金钱
11664
HASS币
45
发表于 2017-8-8 00:43:00 | 显示全部楼层
这个估计只有老妖知道了
回复

使用道具 举报

4

主题

31

帖子

121

积分

注册会员

Rank: 2

积分
121
金钱
90
HASS币
0
 楼主| 发表于 2017-8-8 00:51:58 | 显示全部楼层
Jones 发表于 2017-8-8 00:43
这个估计只有老妖知道了

小米好难,,,,,一直{"error":"Invalid key"} 醉的不行
回复

使用道具 举报

4

主题

31

帖子

121

积分

注册会员

Rank: 2

积分
121
金钱
90
HASS币
0
 楼主| 发表于 2017-8-8 00:53:10 | 显示全部楼层
Jones 发表于 2017-8-8 00:43
这个估计只有老妖知道了

小米好难,,,,,一直error":"Invalid key    醉的不行
回复

使用道具 举报

4

主题

31

帖子

121

积分

注册会员

Rank: 2

积分
121
金钱
90
HASS币
0
 楼主| 发表于 2017-8-8 20:31:06 | 显示全部楼层
本帖最后由 whitley 于 2017-8-8 20:32 编辑
Jones 发表于 2017-8-8 00:43
这个估计只有老妖知道了

说出来你可能不信 root cause 是无线网络信道和无线协议问题,测试了一下小米的gateway不支持10以后的无线信道,8和9信道的效果也不是特别好,效果最不好的是4信道,出了信道之外,协议也有影响,bng mix 协议支持好点 only n支持差 如果4信道加only n 就无解了。 恩 好死不死的我平时就用的4信道+only n, 就是这么巧合 这特么上哪说理去?至于这么发现的 我发现手机上homebridge总是连接出问题(可能homebridge对无线协议也有要求),就感觉是无线的问题在,再根据以前的经验试了一下 果然是这样, 这简直就是一个玄学问题,怎么就手贱选择4信道?为什么又手贱选择只选择N协议,就为了那点几乎可以忽略的无线信号连接性? 估计别人也不会遇到了。。。。。抓包看了一下 4信道N协议发出来的数据包的32位Key的值 跟4信道bng mix协议数据包的32位Key值确实不一样,这也就是为什么一直报错"Invalid key",这都是一些什么bug? 也有可能是我AP的问题 但是自己使用很长一段时间4信道only n 都没有发现有连接问题。。。。醉了 想知道为什么无线协议会影响KEY值转换?这么神奇吗?

评分

参与人数 1金钱 +6 收起 理由
+ 6 好玄妙啊!

查看全部评分

回复

使用道具 举报

123

主题

4661

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16410
金钱
11664
HASS币
45
发表于 2017-8-8 21:17:53 | 显示全部楼层
whitley 发表于 2017-8-8 20:31
说出来你可能不信 root cause 是无线网络信道和无线协议问题,测试了一下小米的gateway不支持10以后的无线 ...

让你说的,我叮咚连不上,莫非也跟信道有关?回去抓紧换个信道压压惊~!
回复

使用道具 举报

4

主题

31

帖子

121

积分

注册会员

Rank: 2

积分
121
金钱
90
HASS币
0
 楼主| 发表于 2017-8-8 21:20:31 | 显示全部楼层
Jones 发表于 2017-8-8 21:17
让你说的,我叮咚连不上,莫非也跟信道有关?回去抓紧换个信道压压惊~! ...

哈哈哈  可以试试 信道和协议都有关系 你可以试试 这简直是玄学
回复

使用道具 举报

123

主题

4661

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16410
金钱
11664
HASS币
45
发表于 2017-8-8 21:21:49 | 显示全部楼层
whitley 发表于 2017-8-8 21:20
哈哈哈  可以试试 信道和协议都有关系 你可以试试 这简直是玄学

刚没发现,你那个贴是设问句?意思是还有回答?洗耳恭听
回复

使用道具 举报

4

主题

31

帖子

121

积分

注册会员

Rank: 2

积分
121
金钱
90
HASS币
0
 楼主| 发表于 2017-8-8 22:27:24 | 显示全部楼层
Jones 发表于 2017-8-8 21:21
刚没发现,你那个贴是设问句?意思是还有回答?洗耳恭听

哈哈哈 想听就得给金币了

抓包发现正常情况下小米网关每十秒发一个名为heartbeat组播 内容大概是这样 {"cmd":"heartbeat","model":"gateway","sid":"xxxx","short_id":x,"token":"xxxxxxxxx","data":"{\"ip\":\"xxxxxxxxx\"}" }里面有个token, HA发出去的KEY应该是我们写进去的key值加上这个token算出来了,抓到的包里 小米网关有两个数据处理方式 一个是 read 和write,read的时候不需要key 这也是为什么 我可以读到我传感器的信号, write的时候需要key+token算出来一个key值给网关,网关会计算出来真正的key,问题就发生在 当选择信号不好的信道的时候 会收不到token(应该是小米网关没发出来) 这里没法上截图 本来应该隔10秒 结果 可能20-30秒都没收到token 所以发出去的key值肯定是不对的 Invalid key。所以根本原因是小米的token组播发不出来。所以HA的工作程序也就很容易理解了 他就是可以监听组播 然后读取token算出KEY值,在根据格式给网关写命令 读命令和写命令是通过单播通信的

恩 抓包大法好

评分

参与人数 1金钱 +6 收起 理由
+ 6 很给力!

查看全部评分

回复

使用道具 举报

123

主题

4661

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16410
金钱
11664
HASS币
45
发表于 2017-8-8 22:31:50 | 显示全部楼层
whitley 发表于 2017-8-8 22:27
哈哈哈 想听就得给金币了

抓包发现正常情况下小米网关每十秒发一个名为heartbeat组播 内容大概是这样 {" ...

虽然我没看懂,但感觉很厉害的样子。

另外我想纠正一点,回复也可以上图的,谢谢
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 07:36 , Processed in 0.068743 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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