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

 找回密码
 立即注册
查看: 25013|回复: 39

[经验分享] 米家魔方控制器Zigbee协议分析

[复制链接]

7

主题

48

帖子

390

积分

论坛技术达人

积分
390
金钱
342
HASS币
0
QQ
发表于 2017-7-31 21:18:09 | 显示全部楼层 |阅读模式
本帖最后由 hevake_lcj 于 2017-8-1 07:53 编辑

入手一只米家的魔方控制器。
wx_camera_1499053972421.jpg

按照惯例,先看入网过程:

                               
登录/注册后可看大图
Image.png
与门磁一致的

model: lumi.sensor_cube
appver: 3

还有一个私有的属性报告

                               
登录/注册后可看大图
Image [1].png
暂不管。

据说,这个魔方控制器是由两个传感器组成:加速度传感器、角度传感器。

动作上报的属性
Image [2].png


                               
登录/注册后可看大图

上报的属性报告是格式:
cluster_id: 0x0012, attribute_id: 0x0055, data_type: uint16, data: 0x0002

动作不同与之相关的只是 data  的值不同。
于是找了标签纸,给每个面标一个数字。

0 摇一摇

2 (3)推
5 (1)推
4 (2)推
1 (4)推
0 (5)推
3 (6)推

翻转
         正     反
1-2   108 101
2-3    98   84
3-4    81   74
1-5  104   69
1-6  107   93
2-5    96   68
2-6    99   92
4-5    72   65
4-6    75   89
....
我看不仅是相近的可以这动,从正面翻反面也行。
算了一下,每个面可以翻到另5个面,共计 6 * 5 = 30 个这样的数值表。

根据多年的软件经验推测,一定有什么规律在里面!
于是仔细分析了每组数值的二进制值。

发现:
00 000 xxx    # 表示当 xxx 朝下时推一推或敲一敲
01 fff ttt    # 表示从 fff 朝下翻转到 ttt 面朝下


那么,我们重新定义正方体的6个面。

                               
登录/注册后可看大图
img_20170703_201913.jpg
现在思路就比较清晰了。不管它怎么翻,都能从数值中提取是从哪个面翻到哪个面的。

水平旋转
Image [3].png


                               
登录/注册后可看大图

数据格式:
cluster_id: 0x000c, attribute_id: 0xff05, data_type: uint16, data: xxx
                              attribute_id: 0x0055, data_type: float,  data: yyyyyyyy
暂时还不太明白 0xff05 是表示什么。
我看0x1f4出现比例最大,其值为500

yyyyyy 为角度的单精度浮点数,具体单精度是多少的值,只有代入计算机才能显示入值来。

值得注意的是:旋转是endpoint 3,其它都是 endpoint 2

敲与推是同一个动作?!

我去App看一下,发现App是可以区别推一推与敲一敲的。
img_20170703_210013.png


                               
登录/注册后可看大图

一定是我漏了什么细节~

仔细对比敲两下与推一推的数据包。
Image [4].png


                               
登录/注册后可看大图

经比对,我漏了uint16的高8位的差别。
原来,高8位为1表示推一推,为2表示敲两下。

那么,之前说摇一摇跟推一推能不能区分呢?
原来,遥一摇的高8位是0。

那么,翻转呢?
翻转的高8位是0。

总结:
游客,本帖隐藏的内容需要积分高于 20 才可浏览,您当前积分为 0


其实,小米的魔方控制器可以表现的状态远远超过米家App所显示的。
米家App只显示了6个,实际上有:
摇一摇,1
甩一下,1
敲两下,6 (6个面)
推一推,6 (6个面)
翻转90,6 * 4 = 24  (6个面,第个面都可以向4个面转90度)
翻转180,6 (6个面)
水平旋转,1
总计:45个

哦,对了忘了测它的心跳了。

观查一早上的心跳:

                               
登录/注册后可看大图
Image [5].png
看似并没有什么规律可言。
回复

使用道具 举报

30

主题

997

帖子

4151

积分

论坛元老

Rank: 8Rank: 8

积分
4151
金钱
3149
HASS币
0

活跃会员

发表于 2017-7-31 22:52:48 | 显示全部楼层
楼主的帖子都是满满的干货啊
回复

使用道具 举报

123

主题

4661

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16410
金钱
11664
HASS币
45
发表于 2017-7-31 22:55:01 | 显示全部楼层
楼主,太佩服了,zigbee牛人啊!
回复

使用道具 举报

1

主题

105

帖子

416

积分

中级会员

Rank: 3Rank: 3

积分
416
金钱
311
HASS币
0
发表于 2017-8-1 05:47:59 | 显示全部楼层
虽然看不懂,还是很佩服,牛人
回复

使用道具 举报

7

主题

48

帖子

390

积分

论坛技术达人

积分
390
金钱
342
HASS币
0
QQ
 楼主| 发表于 2017-8-1 07:51:08 | 显示全部楼层
本帖最后由 hevake_lcj 于 2017-8-9 11:48 编辑
wqqs 发表于 2017-7-31 22:52
楼主的帖子都是满满的干货啊

谢谢
回复

使用道具 举报

1

主题

162

帖子

1029

积分

金牌会员

Rank: 6Rank: 6

积分
1029
金钱
867
HASS币
0
发表于 2017-8-1 12:04:36 | 显示全部楼层
楼主不错,有点研究!!!
回复

使用道具 举报

2

主题

160

帖子

2584

积分

金牌会员

Rank: 6Rank: 6

积分
2584
金钱
2424
HASS币
0
发表于 2017-8-16 10:18:03 | 显示全部楼层
虽然看不懂,但是会慢慢研究
回复

使用道具 举报

19

主题

457

帖子

8161

积分

元老级技术达人

云淡风轻近午天

积分
8161
金钱
7704
HASS币
0

教程狂人

发表于 2017-8-16 13:53:48 来自手机 | 显示全部楼层
没有小米,也不懂,但是看着楼主应该是个牛逼的人,顶一下吧
回复

使用道具 举报

20

主题

700

帖子

3106

积分

论坛元老

Rank: 8Rank: 8

积分
3106
金钱
2406
HASS币
0
发表于 2017-8-28 10:09:15 来自手机 | 显示全部楼层
牛b得不得了
回复

使用道具 举报

32

主题

986

帖子

4233

积分

论坛元老

Rank: 8Rank: 8

积分
4233
金钱
3207
HASS币
110

教程狂人论坛风云人物

发表于 2017-8-28 12:56:33 | 显示全部楼层
woc厉害了!
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-23 20:02 , Processed in 0.103488 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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