RPi3 не может найти сервис ffe0 через Python Bluepy - PullRequest
0 голосов
/ 26 мая 2018

У меня есть модуль RPi2 с GPIO-hm10, который подключается и связывается с платой ble-relay (RB1).Я хочу заменить RPi2 на RPi3.Поэтому я протестировал RPi3 с идентичной платой реле тестового блока RB2, и с помощью этого сценария Python RPi3 может подключаться и взаимодействовать с RB2.Итак, я был готов поменять их местами.

Вот визуальный пример:

RPi2 RPi3 RB1 RB2

Я также попытался подключиться к обеим платам реле(RB1 & RB2) из ​​приложения сканера BLE на iphone, и я могу просто отлично подключаться и отправлять команды, записывая их характеристики.

Я могу подключать и связывать обе платы от RPi3 и доверять им через bluetoothctl и видетьих услуги UUID просто отлично.Но когда я запускаю свой код Python для переключения реле на RB2:

import bluepy.btle as btle
p = btle.Peripheral("00:0E:0B:00:75:12", "random")
s = p.getServiceByUUID("0000ffe0-0000-1000-8000-00805f9b34fb")
c = s.getCharacteristics()[0]
c.write("o", "utf-8")
p.disconnect()

Я получаю эту ошибку только на RB1 ::

File "/usr/local/lib/python2.7/dist-packages/bluepy/btle.py", line 449, in getServiceByUUID
raise BTLEException(BTLEException.GATT_ERROR, "Service %s not found" % (uuid.getCommonName()))
bluepy.btle.BTLEException: Service ffe0 not found

Но служба uuid правильная, здесьвывод терминалаКак видите, я могу подключиться к RB1 и увидеть UUID-сервисы, включая нужный мне ffe0:

[bluetooth]# connect 00:0E:0B:00:75:12
Attempting to connect to 00:0E:0B:00:75:12
[CHG] Device 00:0E:0B:00:75:12 Connected: yes
Connection successful
[CHG] Device 00:0E:0B:00:75:12 UUIDs:
00001800-0000-1000-8000-00805f9b34fb
     00001801-0000-1000-8000-00805f9b34fb
     0000ffe0-0000-1000-8000-00805f9b34fb
[bluetooth]# info 00:0E:0B:00:75:12
Device 00:0E:0B:00:75:12
     Name: BT Bee-BLE
     Alias: BT Bee-BLE
     Paired: no
     Trusted: yes
     Blocked: no
     Connected: yes
     LegacyPairing: no
     UUID: Generic Access Profile
  (00001800-0000-1000-8000-00805f9b34fb)
     UUID: Generic Attribute Profile
(00001801-0000-1000-8000-00805f9b34fb)
     UUID: Unknown
  (0000ffe0-0000-1000-8000-00805f9b34fb)

Почему это происходит?Может ли что-то быть сохранено где-то в tsrb430 RB1, что может быть причиной этого?

1 Ответ

0 голосов
/ 30 мая 2018

После нескольких часов проверки файла btle.py я заметил, что функция getServices () не вызывается.Я добавил к нему звонок, и теперь он может найти услугу:

#!/usr/bin/env python
import bluepy.btle as btle
p = btle.Peripheral("00:0E:0B:00:75:12", "random")
services=p.getServices()
for service in services:
   print service
s = p.getServiceByUUID("0000ffe0-0000-1000-8000-00805f9b34fb")
c = s.getCharacteristics()[0]
c.write("e", "utf-8")
p.disconnect()
...