Raspberry PI BTLE может обнаружить устройство Fitbit и Scale, но не может выполнить сопряжение - PullRequest
0 голосов
/ 09 апреля 2020

Я пытался соединить шкалу FitBit Inspire HR и RENPHO ES-26R с Raspberry Pi (3B +, 4B и Zero), все с одним и тем же отрицательным Результаты. Запустив bluetoothctl (v5.50), устройства можно увидеть ( ED: 67 - масштаб, 01: C5 - Fitbit):

...
[CHG] Device ED:67:37:60:78:22 ManufacturerData Key: 0xffff
[CHG] Device ED:67:37:60:78:22 ManufacturerData Value:
  aa bb ed 67 37 60 78 22 00 01 23 14 ff ff ff 14  ...g7`x"..#.....
  00 6a 04 4d a2 02 1d 0c                          .j.M....
[CHG] Device 01:C5:59:47:49:F9 RSSI: -47
[CHG] Device 01:C5:59:47:49:F9 TxPower: 3
...

SCALE

Когда я пытаюсь выполнить сопряжение или подключение весов, выходы из bluetoothctl, hcidump и gatttool выглядят следующим образом:

bluetoothctl

Attempting to pair with ED:67:37:60:78:22
Failed to pair: org.bluez.Error.AuthenticationCanceled

hcidump

> HCI Event: Command Complete (0x0e) plen 4
    LE Remove Device From White List (0x08|0x0012) ncmd 1
    status 0x00
> HCI Event: Command Complete (0x0e) plen 4
    LE Add Device To White List (0x08|0x0011) ncmd 1
    status 0x00
> HCI Event: Command Complete (0x0e) plen 4
    LE Set Scan Parameters (0x08|0x000b) ncmd 1
    status 0x00
> HCI Event: Command Complete (0x0e) plen 4
    LE Set Scan Enable (0x08|0x000c) ncmd 1
    status 0x00
> HCI Event: Command Complete (0x0e) plen 4
    LE Set Scan Enable (0x08|0x000c) ncmd 1
    status 0x00

gatttool

> sudo gatttool -b ED:67:37:60:78:22 -I
[ED:67:37:60:78:22][LE]> connect
Attempting to connect to ED:67:37:60:78:22
Error: connect error: Connection refused (111)

По нескольким темам, которые я видел, я Я пытался использовать тип адреса publi c и random, без изменений. Hcidump, кажется, не имеет большого значения для Scale.

РЕДАКТИРОВАТЬ

Дальнейшая проверка шкалы показывает, что она не "подключаема". Учитывая, что нет определенных услуг или характеристик, я начал смотреть на « производственные данные » в Реклама . Я вижу, что при изменении измерения на шкале порции данных меняются:

ff ff aa bb ed 67 37 60 78 22 5e 94 d7 4d 7f 7e 3a 14 00 00 00 4d a2 02 8a 25
ff ff aa bb ed 67 37 60 78 22 5e 94 d7 4d 7f 7e 3a 14 00 d2 00 4d a2 02 8b 25
ff ff aa bb ed 67 37 60 78 22 5e 94 d7 4d 7f 7e 3a 14 00 d2 00 4d a2 02 8b 25
ff ff aa bb ed 67 37 60 78 22 5e 94 d7 4d 7f 7e 3a 14 00 60 04 4d a2 02 8b 25
ff ff aa bb ed 67 37 60 78 22 5e 94 d7 4d 7f 7e 3a 14 00 68 06 4d a2 02 8b 25
ff ff aa bb ed 67 37 60 78 22 5e 94 d7 4d 7f 7e 3a 14 00 68 06 4d a2 02 8b 25
ff ff aa bb ed 67 37 60 78 22 5e 94 d7 4d 7f 7e 3a 14 00 ad 07 4d a2 02 8c 25
ff ff aa bb ed 67 37 60 78 22 5e 94 d7 4d 7f 7e 3a 14 00 ad 07 4d a2 02 8c 25
ff ff aa bb ed 67 37 60 78 22 5e 94 d7 4e 7f 7e 3a 14 00 6b 08 4d a2 02 8c 25

Теперь мне просто нужно подтвердить, что обновленные порции на самом деле являются данными о весе - как только я выясню, что к чему в супе (например, единица измерения, вес и т. д. c.).

FITBIT

Для Fitbit есть намного больше выходов, но соединение по-прежнему не удается:

bluetoothctl

pair 01:C5:59:47:49:F9
Attempting to pair with 01:C5:59:47:49:F9
[CHG] Device 01:C5:59:47:49:F9 Connected: yes
[CHG] Device 01:C5:59:47:49:F9 ServicesResolved: yes
[CHG] Device 01:C5:59:47:49:F9 ServicesResolved: no
[CHG] Device 01:C5:59:47:49:F9 Connected: no
Failed to pair: org.bluez.Error.AuthenticationCanceled

hcidump

> HCI Event: Command Complete (0x0e) plen 4
    LE Set Scan Parameters (0x08|0x000b) ncmd 1
    status 0x00
> HCI Event: Command Complete (0x0e) plen 4
    LE Set Scan Enable (0x08|0x000c) ncmd 1
    status 0x00
> HCI Event: Command Complete (0x0e) plen 4
    LE Set Scan Enable (0x08|0x000c) ncmd 1
    status 0x00
> HCI Event: Command Status (0x0f) plen 4
    LE Create Connection (0x08|0x000d) status 0x00 ncmd 1
> HCI Event: Command Status (0x0f) plen 4
    LE Read Remote Used Features (0x08|0x0016) status 0x00 ncmd 1
> HCI Event: Command Complete (0x0e) plen 14
    LE Read Remote Used Features (0x08|0x0016) ncmd 1
> HCI Event: Command Status (0x0f) plen 4
    Disconnect (0x01|0x0006) status 0x00 ncmd 1
> HCI Event: Disconn Complete (0x05) plen 4
    status 0x00 handle 64 reason 0x16
    Reason: Connection Terminated by Local Host

gatttool

В отличие от шкалы, я могу использовать gatttool для подключения к Fitbit и получения характеристик:

[01:C5:59:47:49:F9][LE]> connect
Attempting to connect to 01:C5:59:47:49:F9
Connection successful
[01:C5:59:47:49:F9][LE]> characteristics
handle: 0x0002, char properties: 0x02, char value handle: 0x0003, uuid: 00002a00-0000-1000-8000-00805f9b34fb
handle: 0x0004, char properties: 0x02, char value handle: 0x0005, uuid: 00002a01-0000-1000-8000-00805f9b34fb
handle: 0x0006, char properties: 0x02, char value handle: 0x0007, uuid: 00002a04-0000-1000-8000-00805f9b34fb
handle: 0x0008, char properties: 0x02, char value handle: 0x0009, uuid: 00002aa6-0000-1000-8000-00805f9b34fb
handle: 0x000b, char properties: 0x20, char value handle: 0x000c, uuid: 00002a05-0000-1000-8000-00805f9b34fb
handle: 0x000f, char properties: 0x02, char value handle: 0x0010, uuid: adabfb04-6e7d-4601-bda2-bffaa68956ba
handle: 0x0011, char properties: 0x06, char value handle: 0x0012, uuid: adabfb02-6e7d-4601-bda2-bffaa68956ba
handle: 0x0013, char properties: 0x12, char value handle: 0x0014, uuid: adabfb03-6e7d-4601-bda2-bffaa68956ba
handle: 0x0016, char properties: 0x10, char value handle: 0x0017, uuid: adabfb01-6e7d-4601-bda2-bffaa68956ba
handle: 0x0019, char properties: 0x20, char value handle: 0x001a, uuid: adabfb05-6e7d-4601-bda2-bffaa68956ba
handle: 0x001d, char properties: 0x12, char value handle: 0x001e, uuid: 558dfa01-4fa8-4105-9f02-4eaa93e62980
handle: 0x0021, char properties: 0x02, char value handle: 0x0022, uuid: 00002a29-0000-1000-8000-00805f9b34fb
handle: 0x0023, char properties: 0x02, char value handle: 0x0024, uuid: 00002a24-0000-1000-8000-00805f9b34fb
handle: 0x0025, char properties: 0x02, char value handle: 0x0026, uuid: 00002a25-0000-1000-8000-00805f9b34fb
handle: 0x0027, char properties: 0x02, char value handle: 0x0028, uuid: 00002a27-0000-1000-8000-00805f9b34fb
handle: 0x0029, char properties: 0x02, char value handle: 0x002a, uuid: 00002a26-0000-1000-8000-00805f9b34fb
handle: 0x002b, char properties: 0x02, char value handle: 0x002c, uuid: 00002a28-0000-1000-8000-00805f9b34fb
handle: 0x002d, char properties: 0x02, char value handle: 0x002e, uuid: 00002a23-0000-1000-8000-00805f9b34fb
handle: 0x002f, char properties: 0x02, char value handle: 0x0030, uuid: 00002a2a-0000-1000-8000-00805f9b34fb
handle: 0x0031, char properties: 0x02, char value handle: 0x0032, uuid: 00002a50-0000-1000-8000-00805f9b34fb

Дополнительная информация

Состояние службы Bluetooth

● bluetooth.service - Bluetooth service
   Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-04-09 18:32:27 BST; 24min ago
     Docs: man:bluetoothd(8)
 Main PID: 5515 (bluetoothd)
   Status: "Running"
    Tasks: 1 (limit: 4915)
   Memory: 1.1M
   CGroup: /system.slice/bluetooth.service
           └─5515 /usr/lib/bluetooth/bluetoothd --compat --noplugin=sap -E

Apr 09 18:32:27 archer systemd[1]: Starting Bluetooth service...
Apr 09 18:32:27 archer bluetoothd[5515]: Bluetooth daemon 5.50
Apr 09 18:32:27 archer systemd[1]: Started Bluetooth service.
Apr 09 18:32:27 archer bluetoothd[5515]: Excluding (cli) sap
Apr 09 18:32:27 archer bluetoothd[5515]: Bluetooth management interface 1.14 initialized

dmesg | grep Bluetooth

[   12.451287] Bluetooth: Core ver 2.22
[   12.451337] Bluetooth: HCI device and connection manager initialized
[   12.452111] Bluetooth: HCI socket layer initialized
[   12.452123] Bluetooth: L2CAP socket layer initialized
[   12.452151] Bluetooth: SCO socket layer initialized
[   12.462111] Bluetooth: HCI UART driver ver 2.3
[   12.462118] Bluetooth: HCI UART protocol H4 registered
[   12.462172] Bluetooth: HCI UART protocol Three-wire (H5) registered
[   12.462284] Bluetooth: HCI UART protocol Broadcom registered
[   12.677032] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[   12.677038] Bluetooth: BNEP filters: protocol multicast
[   12.677048] Bluetooth: BNEP socket layer initialized
[  818.140511] Bluetooth: RFCOMM TTY layer initialized
[  818.140529] Bluetooth: RFCOMM socket layer initialized
[  818.140542] Bluetooth: RFCOMM ver 1.11

Соединение

WiFi и Bluetooth активны на всех PI, и я подключен через S SH.

Закрытие

Я прошел много, много потоков с нескольких форумов и вносил различные рекомендуемые изменения конфигурации (поддерживая чистоту PI 3B + в качестве элемента управления), но безуспешно. Я был бы очень признателен за любые советы или указатели о том, где go дальше. Там должно быть что-то, чего мне не хватает - скорее всего, что-то простое, что заставляет большинство из вас удивляться, как будто вы никогда не обманывали :)

Спасибо, что уделили время на чтение этого длинного вопроса.

1 Ответ

0 голосов
/ 15 апреля 2020

Для Scale я наконец смог декодировать важные значения (вес). Есть несколько битов, которые я до сих пор не знаю, что это такое, но основная проблема была решена. Имеются следующие позиции и значения:

Position:    00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
Value:       ff ff aa bb ed 67 37 60 78 22 5e 97 4a 74 7f 7e 3a 15 00 6a 04 4d a2 02 4a 3d

Отображение выглядит следующим образом:

  • 0-3 : в данный момент неизвестно. Не наблюдалось изменения значений
  • 4-9 : адрес устройства
  • 10-13 : Unix Метка времени
  • 14-16 : в данный момент неизвестно. Наблюдалось, что значения меняются, но не очень часто.
  • 17 : индикатор стабилизации. Значение 0x15 (21) указывает, что шкала стабилизировала измерение
  • 18 : в настоящий момент неизвестно. Всегда отображается значение 00
  • 19-20 : Вес! . Хотя весы отображают вес в фунтах, переданное значение необходимо разделить на 100, чтобы получить килограммы, а затем при необходимости можно преобразовать в другие единицы.
  • 21-23 : неизвестно сейчас. Не наблюдалось изменений значений
  • 24 : в данный момент неизвестно. Значение изменяется здесь и там во время измерения, может быть связано с вычислением ИМТ и т. Д. c.
  • 25 : в настоящий момент неизвестно. Значение иногда изменяется в различных точках в течение дня. Кажется, не имеет прямого отношения к измерению.

Я - по ошибке - пытался использовать FitBit для здравомыслия; но, очевидно, роли и сервисы, которые выполняют и предоставляют два устройства - и как они рекламируют - совсем не похожи, так что это был плохой набор решений :).

Надеюсь, это поможет любому, кто пытается извлечь данные из шкалы (в частности, Renpho ES-26R), которая предоставляет эти данные в рекламе. Если кто-то еще сталкивается со значениями неизвестных бит, пожалуйста, не стесняйтесь оставить комментарий с информацией.

Спасибо!

...