Получение данных от PolarH10 через BLE - PullRequest
3 голосов
/ 19 июня 2019

Я пытался получить данные от моего 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) или любой другой библиотеки. Спасибо!

1 Ответ

0 голосов
/ 16 июля 2019

Ответ таков: просто используйте bleak .

...