Я пытался получить данные с моего PolarH10 с помощью моего raspberry-pi. Я успешно получал данные через командную строку с помощью bluez, но не смог воспроизвести это в python. Я использую pygatt (привязки gatttool) и python3.
Я внимательно следил за примерами, представленными на bitbucket, и смог обнаружить мое устройство. и отфильтруйте его MAC-адрес, отфильтровав его по имени. Однако мне не удалось заставить работать ни один из примеров «асинхронного чтения данных».
#This doesnt work...
req = gattlib.GATTRequester(mymac)
response = gattlib.GATTResponse()
req.read_by_handle_async(0x15, response) # what does the 0x15 mean?
while not response.received():
time.sleep(0.1)
steps = response.received()[0]
...
#This doesn't work either
class NotifyYourName(gattlib.GATTResponse):
def on_response(self, data):
print("your data is: {}".format(data))
response = NotifyYourName()
req = gattlib.GATTRequester(mymac)
req.read_by_handle_async(0x15, response)
while True:
# here, do other interesting things
time.sleep(1)
Я не знаю и не могу извлечь из «документации» как подписаться/прочитать уведомления по характеристике (пульс) моего датчика (PolarH10). Я получаю сообщение об ошибке при вызове GATTRequester.connect(True)
RuntimeError: Channel or attrib not ready
.
Подскажите, пожалуйста, как правильно подключиться к BLE-устройству через Python на Debian и как программно идентифицировать предлагаемые сервисы и их характеристики и как асинхронно получать их уведомления в python с помощью gattlib(pygatt) или любой другой библиотеки. Спасибо!