作为第三方有没有可行的方法来正确解释蓝牙低功耗设备的数据,而该设备没有公布的GATT配置文件规范?
BLE装置是一种体重秤,可支持体重,体重指数,体脂和水合程度。我的理解是,没有像血压装置或心率监测器(https://developer.bluetooth.org/gatt/profiles/Pages/ProfilesHome.aspx)那样采用GATT身体尺度曲线。
使用以下工具:
我可以扫描,查找,连接和阅读规模上可用的GATT服务。以上所有工具都为我提供了相同的服务信息。在规模上发现了5项服务:
以上所有工具都能够读取已知服务,例如检索电池信息或设备名称。我的假设是具有自定义UUID的未知服务是提供比例数据的服务。
此服务具有5个未知特征,具有自定义UUID:
使用上面指定的工具从特征1,2和3中读取,每个工具都返回它自己的值,但该值永远不会改变。例如,读取特征1总是返回20个八位字节0x01-0x05-0x06-0x07-0x08和15个0x00个八位字节的值。特征1的后续读取始终返回该值。特征2读取总是返回20个八位字节0x02和19 0x00个八位字节的值。等等。
阅读特征5似乎要么不返回值,要么更常见于Android,发出配对请求。没有共同的配对代码(如0000或1234等)有效。
特征4似乎是实际传输比例数据的内容。使用上面的工具,我可以启用通知,应用程序检索13个八位字节。例如:
显然,所有这些值都以同一组八位字节开头。然而,主要的问题是那些八位字节代表什么,以及它们如何转化为体重/体重/水合/体脂值,如果事实上它们根本就是这样。
比例尺采用Ti CC2541芯片(http://www.ti.com/product/cc2541)构建。
使用Ti的SmartRF协议数据包嗅探器和CC2540 USB评估模块套件我可以捕获iPhone 5S(iOS 7.1)和规模之间的数据包。这提供了一些额外的见解,但大多只是显示我已经使用其他工具观察到的内容,尽管它处于较低级别。数据包嗅探器提供的任何其他信息仍然会回到同一个问题:规模发送的这些八位字节集代表什么,它们如何转换为weight / bmi / etc?我已经使用了蓝牙核心规范文档,这有助于理解标准功能的八位字节意味着/做什么,但这无助于理解实际的规模数据。
我对蓝牙开发非常陌生,这项练习基本上导致了该技术的速成课程。任何帮助表示赞赏。
感谢。
答案 0 :(得分:1)
您必须与制造商联系,并要求澄清自定义服务和特征。
特征5似乎具有更高的安全设置,因此当您尝试读取它时会触发配对。最有可能包含一些敏感数据。
特征1,2,3可能用于配置,而4则通知有用数据。
由于这些都是定制的,如果没有制造商提供的信息,根本无法找出它们的含义。
这就像你创造了自己的"我们脱离酸奶"通知配置文件......人们只能通过查看数据来猜测。