Я пытался получить данные от моего 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)
is
RuntimeError: Channel or attrib not ready
.
Скажите, пожалуйста, как правильно подключиться к устройству BLE через Python в Debian и как программно идентифицировать предлагаемые сервисы и их характеристики и как асинхронно получать их уведомления в python с помощью gattlib (pygatt) или любой другой библиотеки. Спасибо!