Кто-нибудь использовал bleak для подключения нескольких устройств BLE и получения уведомлений от всех из них одновременно?

#bluetooth #bluetooth-lowenergy

Вопрос:

Я могу использовать bleak и получать данные со всех 5 датчиков BLE. Но проблема в том, что я не могу определить, какие данные с какого устройства. Я имею в виду, что мне нужна строка, представляющая адрес устройства вместе с самими данными.

Комментарии:

1. В мрачном примере для двух устройств показан обратный вызов, включающий отправителя уведомлений. Разве это не сработало бы для тебя?

2. Сэр, я уже реализовал его. Я могу подключить 5 сенсорных модулей с помощью этого примера. Но теперь проблема в том, что для обработки уведомлений у меня есть функция обратного вызова. Он передает отправителю и данные с сервера. Теперь я хочу отличить, какие данные с какого сервера. Я имею в виду, что при отладке приложения я хочу, чтобы помимо данных для каждого устройства отображался адрес устройства.

3. Более того, отправитель является характерным дескриптором. Для меня это 13. И я печатаю это с каждым полученным уведомлением. У меня есть устройства того же производителя. И я подписываюсь только на одну характеристику, поэтому отправитель всегда остается 13.

4. Пожалуйста, предложите и обновите или отредактируйте функцию, которую я могу использовать, чтобы получить лучшие результаты.

5. Понятно, спасибо за разъяснение. Я видел, что вы также задавали этот вопрос на github . Я надеюсь, что вы получите ответ

Ответ №1:

Я смог получить данные одновременно со всех модулей BLE, используя bleak в Windows, а также на raspberry pi.

Единственная проблема с Windows заключается в том, что если вы используете адаптер Bluetooth 4.2 и выше. Это будет намного лучше для высокой скорости передачи данных и правильной обработки подключения устройств. Как и в случае с адаптером 4.0, я всегда проходил через одно или два исключения каждый раз, когда запускал сценарий, и максимальное количество подключений, которое я получил, составляло 3.

Когда я попробовал этот скрипт на Raspberry pi 3b , в нем был встроенный чип Bluetooth 4.2. Он смог обеспечить высокую скорость передачи данных, и мои 5 датчиков были подключены к нему одновременно.

Кроме того, примеры two_devices в мрачном исходном коде на Github-очень хороший пример для начала дальнейшего кодирования.

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

Проверьте это на Github: https://github.com/hbldh/bleak/issues/601