iOS Swift Mi Scale 2 Bluetooth Get Weight

Я пишу приложение, которое может получить измерение веса от Xiaomi mi Scale 2. После прочтения всех доступных uuid только соединение «181B», в частности характеристика «2A9C» (измерение веса тела в bluetooth 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 первого байта, чтобы определить, в каком формате измеряется вес: в имперских единицах или в системе СИ; бит равен 0, поэтому данные SI. Чтобы получить вес, преобразуйте последние два байта в 16-битное целое число (60*256+240 = 15 600) и умножьте на 0,005 = 78 кг.


person ikki    schedule 30.11.2019    source источник
comment
По какой-то причине веб-сайт Bluetooth.com, похоже, не имеет хороших удобочитаемых спецификаций, которые были раньше. Вы можете получить спецификацию веса в формате XML здесь bluetooth.com/specifications/gatt/characteristics. Вам нужно посмотреть на бит 0 первого байта, чтобы определить, в каком формате указан вес: в имперских единицах или в системе СИ; бит равен 0, поэтому данные SI. Чтобы получить вес, преобразуйте последние два байта в 16-битное целое число (60*256+240 = 15 600) и умножьте на 0,005 = 78 кг.   -  person Paulw11    schedule 30.11.2019
comment
Это ответ, который мне нужен, я не могу вас отблагодарить. Удачи и всего наилучшего @Paulw11   -  person ikki    schedule 30.11.2019
comment
@Paulw11Paulw11 Не знаю, как сильно я могу тебя благодарить.   -  person dreampowder    schedule 04.04.2020


Ответы (1)


В моем случае было немного иначе

Я получил такие данные [207, 0, 0, 178, 2, 0, 0, 0, 0, 0, 127] (6,9 кг), и решение .....

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 кг.

person Carmine Cuofano    schedule 11.06.2020