当前位置: 首页 > 知识库问答 >
问题:

在没有发布GATT配置文件的情况下解释BLE设备的数据

程赞
2023-03-14

作为第三方,是否有一种可行的html" target="_blank">方法来正确解释蓝牙低能耗设备的数据,该设备没有发布GATT配置文件规范?

BLE设备是一种体重秤,可以测量体重、BMI、体脂和水分水平。我的理解是,目前还没有像血压计或心率监测仪那样,采用GATT标准的体重秤(https://developer.bluetooth.org/gatt/profiles/Pages/ProfilesHome.aspx).

使用以下工具:

  • iPod(iOS6.1.3)与各种BLE实用程序(钛BLE多工具,LightBlue和BLE实用程序)
  • Android(4.3)平板电脑(戴尔会场8 3830)与nRF主控制面板,加上自定义Xamarin开发的解决方案

我可以扫描、定位、连接和阅读电子秤上的GATT服务。以上所有工具都为我提供了相同的服务信息。规模上发现了5种服务:

  • 通用访问(0x1800)
  • 通用属性(0x1801)
  • 设备信息(0x180A)
  • 电池服务(0x180F)
  • 具有自定义128位UUID的未知服务

所有上述工具都能够从已知服务中读取,如检索电池信息或设备名称。我的假设是,具有自定义UUID的未知服务是提供缩放数据的服务。

此服务具有5个自定义UUID的未知特征:

  • 特征1是读/写
  • 特征2是阅读
  • 特征3是读/写
  • 特征4是通知
  • 特征5是阅读

使用上面指定的工具读取特征1、2和3,每个工具都返回自己的值,但该值永远不会改变。例如,特征1的读取总是返回20个八位字节0x01-0x05-0x06-0x07-0x08-和15个0x00八位字节的值。特征1的后续读取总是返回该值。特征2读取总是返回20个八位字节0x02和19个0x00八位字节的值。等等

Reading characteristic 5似乎要么不返回值,要么在Android上更常见的情况是发出配对请求。普通配对码(如0000或1234等)无效。

特征4似乎是实际传输刻度数据的东西。使用上述工具,我可以启用通知,应用程序可以检索13个八位字节。例如:

  • FF-16-09-00-03-04-01-00-83-6F-F4-18-0F
  • FF-16-09-00-03-04-01-00-3E-88-F4-18-E3
  • FF-16-09-00-03-04-01-00-C8-89-F4-18-6E

显然,所有这些值都是从同一组八位字节开始的。然而,主要的问题是,这些八位字节代表什么,以及它们如何转化为体重/体重指数/水合作用/体脂值,如果事实上它们是这样的话。

电子秤采用Ti CC2541芯片制造(http://www.ti.com/product/cc2541).

使用Ti的SmartRF协议数据包嗅探器和CC2540 USB评估模块套件,我可以捕获iPhone 5S(iOS 7.1)和电子秤之间的数据包。这提供了一些额外的见解,但主要只是展示了我在使用其他工具时已经观察到的情况,尽管是在较低的层次上。数据包嗅探器提供的任何附加信息仍然会导致相同的问题:量表发送的这组八位字节代表什么,它们如何转换为体重/体重指数等?我利用了蓝牙核心规范文档,这有助于理解标准功能的八位字节的含义/作用,但这无助于理解实际的规模数据。

我对蓝牙开发非常陌生,这个练习基本上导致了这项技术的速成课程。感谢您的帮助。

谢谢

共有1个答案

宫子晋
2023-03-14

您必须联系制造商,要求其澄清定制服务和特性。

特性5似乎具有更高的安全设置,因此当您尝试读取它时,它会触发配对。很可能包含一些敏感数据。

特性1、2、3很可能用于配置,而4通知有用的数据。

由于这些都是定制的,没有制造商的信息,根本无法了解它们的含义。

就像你创建了自己的“我们的酸奶用完了”通知档案。。。人们只能通过查看数据进行猜测。

 类似资料:
  • BLE(低功耗蓝牙)设备应该在不扫描到我的iPhone(应用程序)的情况下连接。 我有通过扫描QRCode得到的BLE地址。 因此,我希望在不调用(manager.scanForPeripherals(withServices:nil))的情况下连接特定的设备(我传递地址的设备),因为它将启动所有设备。 目前,当我找到我的特定设备时,我可以扫描我的BLE设备的二维码并扫描所有可用设备。我正在停止扫

  • 问题内容: 我正在尝试设置spring xml配置,而不必创建进一步的。但是,即使我将数据库属性包括在 spring.xml: 我在这里想念什么? 问题答案: 在entityManagerFactory bean定义中指定“ packagesToScan”和“ persistenceUnitName”属性。 请注意,这适用于Spring版本> 3.1

  • 有没有一种方法可以实现上面提到的场景? 提前道谢。

  • 我正在使用Guice来连接Jetty服务器,我想用Apache Shiro添加一些安全性。 似乎Shiro需要一个ServletContext来配置,但问题是我没有;在配置时没有ServletContext(例如在ServletModule中作为留档状态)。ServletContext在GuiceServletContextListener中可用,但此时,我的注入器已经创建,因此安装Shiro模块

  • 我知道这可以在Servlet3.0中通过@Webservlet注释实现,在这里您只需分配url模式,而不必在web.xml中进行任何配置。是否有一种方法可以通过编程方式为运行Servlet2.5的应用程序分配servlets url模式? 我正在创建一个库,多个应用程序将依赖于它,并试图使它,以便这些应用程序中的每一个都不必显式配置任何servlet url映射,我正在创建的库中的servlet在

  • 我花了过去几个小时试图设置2默认图像的nodejs 14和rethinkdb 2.3.5,所以很抱歉,如果语气有点沮丧,但我目前感到沮丧。 我的要求似乎超级简单。 下载nodejs 14和RejectDB 2.3.5的默认图像。 将我当前目录中的所有内容复制到nodejs 14映像中 我希望nodejs图像依赖于DB图像 在nodejs 14图像中运行2个命令<代码>npm ci和 请参阅测试中的