Bluetooth Bluepy не находит все характеристики

Я использую библиотеку bluepy для связи с устройством Bluetooth, но она не показывает мне всех характеристик.

Когда я запускаю следующее с помощью gatttool, я получаю:

[EE:50:F0:F8:3C:FF][LE]> char-desc 0x0019 0xffff
handle: 0x0019, uuid: 00002800-0000-1000-8000-00805f9b34fb
handle: 0x001a, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x001b, uuid: 00001532-1212-efde-1523-785feabcd123
handle: 0x001c, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x001d, uuid: 00001531-1212-efde-1523-785feabcd123
handle: 0x001e, uuid: 00002902-0000-1000-8000-00805f9b34fb
handle: 0x001f, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x0020, uuid: 00001534-1212-efde-1523-785feabcd123

Но когда я запускаю следующее с помощью Bluepy, я получаю:

characteristics = self.peripheral.getCharacteristics(startHnd=0x0019, endHnd=0xFFFF, uuid=None)
for characteristic in characteristics:
    print("{}, hnd={}, supports {}".format(characteristic, hex(characteristic.handle), characteristic.propertiesToString()))

Characteristic <00001532-1212-efde-1523-785feabcd123>, hnd=0x1a, supports WRITE NO RESPONSE 
Characteristic <00001531-1212-efde-1523-785feabcd123>, hnd=0x1c, supports NOTIFY WRITE 
Characteristic <00001534-1212-efde-1523-785feabcd123>, hnd=0x1f, supports READ 

Мне нужно иметь возможность писать '\x01\x00' в характеристику:

handle: 0x001e, uuid: 00002902-0000-1000-8000-00805f9b34fb

с последующей записью '\x01\x04' в характеристику:

handle: 0x001d, uuid: 00001531-1212-efde-1523-785feabcd123

но я не могу, потому что Bluepy не находит характеристику:

handle: 0x001e, uuid: 00002902-0000-1000-8000-00805f9b34fb

Почему это?

Как мне написать в характеристику, когда Bluepy ее не находит?

Почему дескрипторы, возвращаемые Bluepy, не совпадают с дескрипторами, возвращаемыми gatttool?

Спасибо


person Joseph Roberts    schedule 17.06.2016    source источник
comment
У меня похожая проблема, когда я могу подключиться к устройству ble и отлично видеть его uuid для служб с rpi3. Я могу подключиться и даже записать характеристику службы через приложение BLE Scanner для iphone, но когда я запускаю код bluepy python для записи на устройство ble из RPi3, он возвращает ошибку, говорящую о том, что эта служба не найдена.   -  person marciokoko    schedule 26.05.2018


Ответы (1)


Вы ошибаетесь относительно того, что это за дополнительные характеристики. uuid, начинающиеся с 000028xx, являются характерными «объявлениями», как показано здесь: спецификация декларации gatt, а идентификаторы uuid, начинающиеся с 000029xx, являются дескрипторами, как показано здесь: спецификация дескриптора gatt. Они не являются самими характеристиками, но описывают детали одной из характеристик.

person Jeremy H.    schedule 15.09.2016