BLE温度计的返回值是什么意思?

问题描述

我正在使用小米 LYWSD03MMC,我通过 BLE 特性获得了该设备的温度,它显示21 0a 17 7e 0b,但是我知道这是十六进制值,但不幸的是我无法理解什么意思。我只知道数字17,是湿度的量,是十六进制的,当我把它转换成十进制时,它返回23。

解决方法

您正在阅读的特征的 UUID 是什么?

如果它是 0000xxxx-0000-1000-8000-00805F9B34FB 格式,那么它应该记录在 https://www.bluetooth.com/

您可以在 16-bit UUID Numbers Document 中找到特征 UUID 到名称的映射: https://www.bluetooth.com/specifications/assigned-numbers/

然后可以使用名称在 GATT Specification Supplement 中查找字段的更详细说明。

,

根据 github 的 this 脚本,前两个值描述了温度,需要转换为小端。这将导致十六进制值为 0a21,十进制为 2539。这需要除以 100 才能得到 25.39 度的温度。

如您所说,第三个值是湿度,最后两个值描述电池电压。转换为小端(0b7e)和十进制(2942),这个值需要除以1000得到2.942的电压

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...