Ошибка "bluepy.btle.BTLEDisconnectError" при попытке подключения к BLE девайсу с raspberry pi4 с помощью bluepy

Не получается подключиться к BLE девайсу с чипом NRF с помощью скрипта, который написал на основе примеров. Сам девайс является BLE-устройством, и подключиться я пытаюсь с помощью raspberry pi4 и библиотеки bluepy для python. Писал код на основе офф. документации библиотеки и примеров в интернете

Если пытаюсь подключиться, то выдает ошибку

    Traceback (most recent call last):
  File "/home/user/worksPy/notification.py", line 8, in <module>
    dev = btle.Peripheral(MAC, "random", 1)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/bluepy-1.3.0-py3.11.egg/bluepy/btle.py", line 411, in __init__
    self._connect(deviceAddr, addrType, iface, timeout)
  File "/usr/local/lib/python3.11/dist-packages/bluepy-1.3.0-py3.11.egg/bluepy/btle.py", line 467, in _connect
    raise BTLEDisconnectError("Failed to connect to peripheral %s, addr type: %s"
bluepy.btle.BTLEDisconnectError: Failed to connect to peripheral c3:77:69:80:ee:e0, addr type: random

Пытался менять addr type на public и на random, но это не помогло, как в других решениях, которые я нашел в гугле.

Сам код, который я пытаюсь выполнить:

from bluepy import btle

MAC = "c3:77:69:80:ee:e0"
SERVICE_UUID = "000054fe-0000-1000-8000-00805f9b34fb"
CHARACTERISTIC_UUID = "00002A00-0000-1000-8000-00805f9b34fb"

print("Connect to:" + MAC)
dev = btle.Peripheral(MAC)

print("\n--- dev ----------------------------")
print(type(dev))
print(dev)

print("\n--- dev.services -------------------")
for svc in dev.services:
    print(str(svc))

print("\n------------------------------------")
print("Get Serice By UUID: " + SERVICE_UUID)
service_uuid = btle.UUID(SERVICE_UUID)
service = dev.getServiceByUUID(service_uuid)

print(service)
print("\n--- service.getCharacteristics() ---")
print(type(service.getCharacteristics()))
print(service.getCharacteristics())

#----------------------------------------------
characteristics = dev.getCharacteristics()
print("\n--- dev.getCharacteristics() -------")
print(type(characteristics))
print(characteristics)

for char in characteristics:
    print("----------")
    print(type(char))
    print(char)
    print(char.uuid)
    if(char.uuid == CHARACTERISTIC_UUID ):
        print("=== !CHARACTERISTIC_UUID matched! ==")
        print(char)
        print(dir(char))
        print(char.getDescriptors)
        print(char.propNames)
        print(char.properties)
        print(type(char.read()))
        print(char.read())

#print("=== dev ============================")
#print(dir(dev))
#print("=== service ========================")
#print(dir(service))

При этом если с помощью этой библиотеки просканировать устройства, то оно отображается в списке.

Код сканнера:



class ScanDelegate(DefaultDelegate):
    def __init__(self):
        DefaultDelegate.__init__(self)


    def handleDiscovery(self, dev, isNewDev, isNewData):
        if isNewDev:
            print("Discovered device", dev.addr)
        elif isNewData:
            print("received new data from", dev.addr)


scanner = Scanner().withDelegate(ScanDelegate())
devices = scanner.scan(10.0)

for dev in devices:
    print("Device %s (%s), RSSI=$%d dB" % (dev.addr, dev.addrType, dev.rssi))
    for(adtype, desc, value) in dev.getScanData():
        print(" %s =%s" % (desc, value))

Вот девайс, к которому я пытаюсь подключиться: введите сюда описание изображения


Ответы (0 шт):