文档章节

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

临峰不畏
 临峰不畏
发布于 2017/06/18 16:41
字数 967
阅读 1155
收藏 27
点赞 3
评论 3

博主喜欢玩智能家居的东西,智能家居确实能给家里带了不少的方便。
天气热了,博主想做一个:当屋子有人,并温度高于33度时,开空调。博主已有了一套自家的智能家居系统,有网关、人体红外传感器、红外转发器,就差一个温度传感器了。于是博主在小米的官网上物色了绿米联创的温湿度传感器。如下:

硬件拆解:http://www.geekifix.com/wp/archives/390.html

原理上温湿度传感器使用是Zigbee通信协议,我现在使用的网关本身也是Zigbee协议的,所以分析一下抓包数据就可以知道其与网关的通信过程了。

博主拿到温湿度之后,按照说明,主机通过手机客户端打开设备入网许可。通过分析主机日志观察温湿入网过程。过程大概如下:
1. 温湿度发出 Beacon Request,请求入网
2. 主机回复 Beacon,告知可以入网
3. 温湿度请求关联,主机关联回复,Transport Key传送密钥
4. 完成入网
5. 温湿度上报 ZDO数据包Device Announce,入网报告
6. 温湿度主动主报ZCL数据包:

  1. cls_id:0x0000, attr_id:0x0005, dt:0x42, “lumi.sensor_ht”  ,我是"绿米.传感器温湿度"
  2. 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时到底回复了什么。

© 著作权归作者所有

共有 人打赏支持
临峰不畏
粉丝 211
博文 183
码字总数 96576
作品 0
深圳
技术主管
加载中

评论(3)

dingdayu
dingdayu

引用来自“dush”的评论

楼主,厉害了,我现在自己在用arduino玩这些,还没到楼主这个程度

早期我也是用arduino,不过后来转树莓派了。
rz
rz
楼主,厉害了,我现在自己在用arduino玩这些,还没到楼主这个程度
临峰不畏
临峰不畏
博主翻了一遍小米App用户的使用文章,没有看到有电量显示相关的内容,也没有离线提示。
难道它本身就没有电量、离线提示功能?
可智能联动空调加湿器 米家蓝牙温湿度计发布售价69元

冷暖自知,说的大概只是成年人。精确掌握室内温湿度是婴幼儿父母、宠物主人、收藏爱好者的显著需求,温湿度计产品已成长为一种成熟品类。11月28日举行的小米IoT开发者大会上,小米联合创始人...

智科技 ⋅ 2017/11/28 ⋅ 0

【物联网智能网关-01】通过AD采集获取温湿度

无论是机房管理系统,还是面向农村温室大棚的管理系统,温湿度采集模块是必不可少的。常见的温湿度模块从通信接口上来说,一般有三种,第一种是单总线方式(我以前写了两篇博文来介绍这方面的...

刘洪峰iot ⋅ 2012/05/06 ⋅ 0

【物联网智能网关-01】通过AD采集获取温湿度

无论是机房管理系统,还是面向农村温室大棚的管理系统,温湿度采集模块是必不可少的。常见的温湿度模块从通信接口上来说,一般有三种,第一种是单总线方式(我以前写了两篇博文来介绍这方面的...

物联网积木 ⋅ 2014/05/28 ⋅ 0

[Micropython]TPYBoard v202 v102+v202 家庭无线温湿度检测

一、实验器件 1、TPYBoard v102 1块 2、TPYBoard v202 1块 3、Nokia 5110LCD显示屏 1块 4、DHT11温湿度传感器 1个 5、micro USB 数据线 2根 6、面包板 1块 7、杜邦线 若干 二、实验步骤 1、T...

bodasisiter ⋅ 05/31 ⋅ 0

Arduino初初教程10——温湿度传感器

这里使用的温湿度传感器是SHT1X温湿度传感器 如图 SHT1x温湿度传感器是瑞士Sensirion公司推出的单片数字温湿度集成传感器。采用CMOS过程微加工专利技术(CMOSens technology),确保产品具有...

小堤 ⋅ 2013/05/28 ⋅ 0

小白学数字温湿度传感器DHT11模块

[本系列文章还将陆续介绍其他的传感器模块,欢迎订阅我的博客] 温度和湿度对我们的生活有极大的影响,对它的测量也是很有必要的。 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿...

qq_21990661 ⋅ 03/23 ⋅ 0

安装了一百多个智能设备后,我把家装成了全世界最适合宅的地方

“打算全家装修智能家居,应该怎么操作?” 基本上你会收获两类回答: 一种是土豪任性型,装修大别野的传统厂商,全套绑定他们的产品,从此以后又贵又难修; 另外一种就是无所谓美观型,因为...

Kumakuma ⋅ 2017/12/28 ⋅ 0

树莓派折腾指南之将你树莓派变成智能家居中枢

树莓派由于本身足够的小巧且扩展性极高,所以它智能家居方面的应用具有天然的优势。对于喜欢折腾和 Geek 的人的而言,其扩展性具有无比的吸引力。 这次我们就来尝试将树莓派变身为智能家居的...

SuooL ⋅ 01/13 ⋅ 0

【最全解读】适用于各种不同场景下的智能网关技术

智能网关,也叫工业物联网智能网关、无线数据采集网关、通讯采集网关,无线网关,工业通讯网关,无线传感管理主机,工业以太网串口智能网关,RS485串口ModbusRTU智能网关,属于无线传感器网络...

m_xiang ⋅ 2017/12/26 ⋅ 0

低音高效,告别干燥!智米纯净性加湿器带来湿哒哒的体验~

冬末春初是北方比较难熬的日子,也是常见雾霾日,家里经常充满了干燥的空气。只有空气净化器是不够的,加湿器以及电暖气都很重要。干燥且雾霾的日子,小编经常流鼻血,没办法,就是这么血气方...

智科技 ⋅ 03/20 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

使用 vue-cli 搭建项目

vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目,GitHub地址是:https://github.com/vuejs/vue-cli 一、 安装 node.js 首先需要安装node环境,可以直接到中...

初学者的优化 ⋅ 15分钟前 ⋅ 0

设计模式 之 享元模式

设计模式 之 享元模式 定义 使用共享技术来有效地支持大量细粒度对象的复用 关键点:防止类多次创建,造成内存溢出; 使用享元模式来将内部状态与外部状态进行分离,在循环创建对象的环境下,...

GMarshal ⋅ 31分钟前 ⋅ 0

SpringBoot集成Druid的最简单的小示例

参考网页 https://blog.csdn.net/king_is_everyone/article/details/53098350 建立maven工程 Pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM......

karma123 ⋅ 今天 ⋅ 0

Java虚拟机基本结构的简单记忆

Java堆:一般是放置实例化的对象的地方,堆分新生代和老年代空间,不断未被回收的对象越老,被放入老年代空间。分配最大堆空间:-Xmx 分配初始堆空间:-Xms,分配新生代空间:-Xmn,新生代的大小一...

算法之名 ⋅ 今天 ⋅ 0

OSChina 周日乱弹 —— 这么好的姑娘都不要了啊

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @TigaPile :分享曾惜的单曲《讲真的》 《讲真的》- 曾惜 手机党少年们想听歌,请使劲儿戳(这里) @首席搬砖工程师 :怎样约女孩子出来吃饭,...

小小编辑 ⋅ 今天 ⋅ 8

Jenkins实践3 之脚本

#!/bin/sh# export PROJ_PATH=项目路径# export TOMCAT_PATH=tomcat路径killTomcat(){pid=`ps -ef | grep tomcat | grep java|awk '{print $2}'`echo "tom...

晨猫 ⋅ 今天 ⋅ 0

Spring Bean的生命周期

前言 Spring Bean 的生命周期在整个 Spring 中占有很重要的位置,掌握这些可以加深对 Spring 的理解。 首先看下生命周期图: 再谈生命周期之前有一点需要先明确: Spring 只帮我们管理单例模...

素雷 ⋅ 今天 ⋅ 0

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 今天 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部