iOS Swift Mi Scale 2 蓝牙 称重

Posted

技术标签:

【中文标题】iOS Swift Mi Scale 2 蓝牙 称重【英文标题】:iOS Swift Mi Scale 2 Bluetooth Get Weight 【发布时间】:2020-03-25 20:38:22 【问题描述】:

我正在编写一个可以从小米米秤 2 获取体重测量的应用程序。在读取所有可用的 uuid 后,只有“181B”连接,特别是“2A9C”特性(蓝牙 gatt 中的体重测量)会收到通知。

数值数据为 [2, 164, 178, 7, 1, 1, 2, 58, 56, 253, 255, 240, 60]。只有最后两个值不同,其余的是时间和日期,目前没有设置巫婆(253、255 是零,当体重在秤上变化直到稳定为止)。

有人可以帮我只获取人的体重吗,我是否应该以不同的方式获取数据,与其他 uuid 不同(如自定义的:00001530-0000-3512-2118-0009AF100700、00001542-0000-3512-2118-0009AF100700 ),以及如何检索它们。

Paulw11 的正确答案:您需要查看第一个字节的第 0 位来确定重量是英制还是 SI;该位为 0,因此数据为 SI。要获得重量,将最后两个字节转换为 16 位整数(60*256+240 = 15,600)并乘以 0.005 = 78kg

【问题讨论】:

由于某种原因,Bluetooth.com 网站似乎没有以前具有的良好的人类可读规范。您可以在此处bluetooth.com/specifications/gatt/characteristics 获取 XML 格式的重量规范。您需要查看第一个字节的位 0 以确定重量是英制还是 SI;该位为 0,因此数据为 SI。要获得重量,将最后两个字节转换为 16 位整数(60*256+240 = 15,600)并乘以 0.005 = 78kg 这是我需要的答案,我感激不尽。祝你好运和最良好的祝愿@Paulw11 @Paulw11 我不知道该多谢你。 【参考方案1】:

就我而言,情况有点不同:

我得到这样的数据 [207, 0, 0, 178, 2, 0, 0, 0, 0, 0, 127] (6.9 KG),解决方法是:

let bytesArray = [207, 0, 0, 178, 2, 0, 0, 0, 0, 0, 127]
let weight = (( bytesArray[4] * 256 + bytesArray[3] ) * 10.0) / 1000

现在我有 6.9 公斤了。

【讨论】:

如何从此类数据中识别阻抗?我的位是: [207, 242, 28, 0, 20, 95, 87, 75, 0, 0, 118] 根据上面的公式,重量 51.2 是正确的。

以上是关于iOS Swift Mi Scale 2 蓝牙 称重的主要内容,如果未能解决你的问题,请参考以下文章

Swift语言iOS8的蓝牙Bluetooth解析(转帖)

Swift:为啥我的 iOS 不能扫描其他蓝牙设备

查看附近所有可发现的蓝牙设备 - Swift iOS XCode

监听蓝牙外设按钮事件 iOS Swift

有没有办法通过 iOS/swift 中的蓝牙以编程方式连接 android 和 IOS 设备?

如何在 ios swift 中连接蓝牙低功耗?