博主喜欢玩智能家居的东西,智能家居确实能给家里带了不少的方便。

天气热了,博主想做一个:当屋子有人,并温度高于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时到底回复了什么。

小米登录协议分析_小米温湿度传感器协议分析相关推荐

  1. 小米温湿度传感器协议分析

    2019独角兽企业重金招聘Python工程师标准>>> 博主喜欢玩智能家居的东西,智能家居确实能给家里带了不少的方便. 天气热了,博主想做一个:当屋子有人,并温度高于33度时,开空调 ...

  2. 小米登录协议分析_小米智能家居设备流量分析及脚本控制

    原标题:小米智能家居设备流量分析及脚本控制 *本文作者:scu-igroup,本文属 FreeBuf 原创奖励计划,未经许可禁止转载. 前言 万物互联的时代即将来临,而现阶段,我们能感触到的,当属智能 ...

  3. sht20中写用户寄存器_数字输出温湿度传感器HTU21D和SHT21对比评测(图文)

    超小体积的温湿度一体数字输出模块由于体积小,精度高的特点,广泛应用于手机.通讯.HVAC.医疗.环境监测.家用电器.控制板等,近日从深圳市工采网(ISweek)拿到市面上最常用的HTU21D和SHT2 ...

  4. 基于I2C协议利用STM32进行温湿度传感器的数据采集

    目录 一.I2C总线通信协议的介绍 1.I2C简介 2.I2C总线时序图 3.五种速率 4.四种信号 5.I2C的优缺点 6.软件IIC和硬件IIC 二.创建工程 1.实验目的 2.工具的选择 3.相 ...

  5. 小米9008授权账号_小米手表体验:中肯点评,这是一款优点和缺点同样突出的智能手表...

    前不久,小米推出了两款智能手表,一款是方形表盘设计的小米手表,一款是圆形表盘的小米手表Color.除了价格上的区别,小米手表要比小米手表Color功能更丰富些,价格也要比小米手表Color贵一点,虽然 ...

  6. 工业常用的几款温湿度传感器应用分析

    综合阐述: 工业级传感器,无论是温湿度传感器.温湿度变送器.温湿度记录仪,有线(RS485/网线RJ45网口),还是无线的温湿度传感器.温湿度变送器.温湿度记录仪,工业上要求的精度标准一般温度为:±0 ...

  7. 小米6怎么解除温控_小米6性能模式_小米6性能模式怎么关

    小米6性能模式怎么关_小米手机6_MIUI论坛 1080x1920 - 201KB - PNG 小米6性能模式没了 720x1280 - 32KB - JPEG 小米6怎么没有性能模式了_开发者交流_ ...

  8. 小米物联网世界第一_小米世界500强得主 小米世界500强一览详情

    7月22日,美国<财富>杂志发布2019年世界500强排行榜.小米集团首次登榜,排名468位,在上榜的全球互联网企业中排名第7,在上榜的中国企业中排名第112位. 在榜单中,小米被定义为& ...

  9. c 中连接mysql登录不成功_数据库连接失败的原因分析及解决办法 | 学步园

    如何来解决三个最常见的连接错误. 第一个错误"SQL Server 不存在或访问被拒绝"通常是最复杂的,错误发生的原因比较多,需要检查的方面也比较多.一般说来,有以下几种可能性: ...

最新文章

  1. hibernate-session中的方法
  2. C++知识点37——拷贝构造函数
  3. 使用 Daynamic 动态添加属性
  4. vue变量传值_Vue各类组件之间传值的实现方式
  5. 论文浅尝 | 用于嵌套命名实体识别的二部平面图网络(BiFlaG)
  6. 耳机不分主从是什么意思_开学必备高性价蓝牙耳机,学生党时尚配件推荐
  7. 【C#桌面应用】第四节:制作简单的登录注册模拟窗口-登录部分的模拟
  8. Python中遍历指定目录
  9. XSLT的处理模型(1)
  10. 类的实例属性和类属性的区别
  11. linux 下的emoji在MariaDB中的字符集修改
  12. arg是什么函数_CTF必备技能丨Linux Pwn入门教程——针对函数重定位流程的相关测试(上)...
  13. 《普林斯顿微积分读本》 第二章 三角学回顾
  14. 基于C语言及51单片机的PID控制电机调速详解(附详细代码及Protsus仿真)
  15. 微信公众号登录的一些注意事项
  16. 愿岁月流成花海,你我结伴而行
  17. VR产品为什么没有火起来
  18. 考研英语复习五大计划表
  19. sql集合.联合查询
  20. 最大流与最小割(Maxflow与Mincut)

热门文章

  1. 使用OpenSSL加密,使用Java解密,使​​用OpenSSL RSA公钥
  2. 在Spring WebFlux中创建多个RouterFunction
  3. 异步过程的自动化测试
  4. exo文件_您在eXo平台上的第一个Juzu Portlet
  5. 如何在Gradle多项目构建中管理依赖项
  6. java btrace_BTrace:Java开发人员工具箱中的隐藏宝石
  7. fold函数_Java中使用Map and Fold进行函数式编程
  8. Java数字格式:DecimalFormat
  9. Java / JVM是如何构建的? 采用OpenJDK是您的答案!
  10. 如何启动多个WebLogic托管服务器