Краткий вопрос: можно ли сканировать устройства LE при периодическом подключении к некоторым и считывать характеристики а) в целом [позволяет ли это протокол] и б) со стеком BlueZ?
Длинный вопрос: я пишу сценарий Python для сканирования устройств LE, рекламирующих определенный UUID. Если он найден, мы должны подключиться, прочитать определенное значение характеристики (назовите это ValueA
) и отключиться. Идея состоит в том, чтобы поддерживать в режиме реального времени список присутствующих ValueA
. Я хочу иметь возможность создавать поток, который запускает сканирование LE и собирает рекламные события в поточно-ориентированный контейнер. При обнаружении нового устройства должен быть запущен обработчик для чтения ValueA
.
Мои попытки использовать PyBluez и BluePy (для подключения к периферийным устройствам) не увенчались успехом. Когда я использую команды терминала (sudo hcitool lescan --duplicates
и sudo gatttool -I
, за которыми следуют команды подключения и чтения), они не работают, если я пытаюсь подключиться после запуска сканирования (сканирование прерывается)
Я сбит с толку, потому что замечаю, что если я подключен к устройству через gatttool
до начала сканирования LE, я могу начать сканирование и продолжить чтение ValueA
, не влияя на сканирование, но не наоборот.
Приветствуются любые идеи или хорошая документация по программированию BlueZ. Использование BlueZ 4.1 в Ubuntu 14.10 Macbook Pro