小米登录协议分析_小米温湿度传感器协议分析
博主喜歡玩智能家居的東西,智能家居確實能給家里帶了不少的方便。
天氣熱了,博主想做一個:當屋子有人,并溫度高于33度時,開空調。博主已有了一套自家的智能家居系統,有網關、人體紅外傳感器、紅外轉發器,就差一個溫度傳感器了。于是博主在小米的官網上物色了綠米聯創的溫濕度傳感器。如下:
原理上溫濕度傳感器使用是Zigbee通信協議,我現在使用的網關本身也是Zigbee協議的,所以分析一下抓包數據就可以知道其與網關的通信過程了。
博主拿到溫濕度之后,按照說明,主機通過手機客戶端打開設備入網許可。通過分析主機日志觀察溫濕入網過程。過程大概如下:
1. 溫濕度發出 Beacon Request,請求入網
2. 主機回復 Beacon,告知可以入網
3. 溫濕度請求關聯,主機關聯回復,Transport Key傳送密鑰
4. 完成入網
5. 溫濕度上報 ZDO數據包Device Announce,入網報告
6. 溫濕度主動主報ZCL數據包:
cls_id:0x0000, attr_id:0x0005, dt:0x42, “lumi.sensor_ht” ?,我是"綠米.傳感器溫濕度"
cls_id:0x0000,?attr_id:0x0001, dt:0x20, 2,我的應用固件版是2
從上面兩條,其本上就能識別出它是溫濕度傳感器。
這個做法沒有遵循Zigbee標準。Zigbee標準入網流程的做法比較麻煩,小米直接擯棄之。它的設備一入門就直接自報門:我是什么什么設備。好吧,很直接。沒關系自家的網關也能支持這種方式的。
接下來小米溫濕度上報了私有的屬性報告:
cls_id:0x0000,?attr_id:0xff01, dt:0x42, [1f 01 21 ef 08 04 21 a8 01 05 21 18 00 06 24 01 00 00 00 00 64 29 33 0c 65 21 cd 19 0a 21 00 00]
上面兩條還是HA1.2標準的屬性報告,但這條屬性是私有的。
博主在想,小米為什么要上報這個?是需要主機回復對應的數據,以確認是小米的網關,對自家的網關開后門?先甭管這個,看看設備上報的溫濕度內容:
cls_id:0x0402, attr_id:0x0000, dt:0x29, [bb, 0b],溫度上報 0x0bbb,十進制:3003,除100就是30.03攝氏度
cls_id:0x0405, attr_id:0x0000, dt:0x21, [04, 1e],濕度上報 0x1e04,十進制:7684,除100就是76.84%
博主通過修改主機的配置,將小米溫濕度傳感器加到了智家365的系統里來。
但看起來,其工作不太穩定。
博主分析數據,發現它有很長一段時間沒有上報溫濕度值,沒有心跳,也沒有電量上報。只是時不時地就會上報 cls_id:0x0000, attr_id: 0xff01 的屬性報告,每次還有微妙差異:
[1f 01 21 ef 08 04 21 a8 01 05 21 18 00 06 24 01 00 00 00 00 64 29 33 0c 65 21 cd 19 0a 21 00 00]
[1f 01 21 bd 0b 04 21 a8 13 05 21 2a 00 06 24 00 00 00 00 00 64 29 27 0b 65 21 26 26 0a 21 00 00]
[1f 01 21 bd 0b 04 21 a8 13 05 21 2a 00 06 24 00 00 00 00 00 64 29 ef 0a 65 21 e4 20 0a 21 00 00]
博主估計,這一定是小米做的后門。如果不是小米的網關,則不穩定工作,時有時沒有。如果是,則妥妥地工作。看來小米留了一手。
改天博主再買個小米的網關,配合著用,看小米網關在收到0xff01時到底回復了什么。
總結
以上是生活随笔為你收集整理的小米登录协议分析_小米温湿度传感器协议分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: grd是什么意思 grd是指什么
- 下一篇: aes子密钥生成c语言_一种基于流密码算