博主喜欢玩智能家居的东西,智能家居确实能给家里带了不少的方便。
天气热了,博主想做一个:当屋子有人,并温度高于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标准入网流程的做法比较麻烦,小米直接摈弃之。它的设备一入门就直接自报门:我是什么什么设备。好吧,很