PyBluez не находит устройство отслеживания тегов - PullRequest
0 голосов
/ 15 апреля 2019

bluetoothctl видит устройство ITAG, но python и pybluez не работает на Raspberry Pi Zero W

Это то, что я получаю через bluetoothctl:

pi@rpitouch:~ $ sudo bluetoothctl
[NEW] Controller B8:27:EB:6A:C0:8F rpitouch [default]
[bluetooth]# scan on
Discovery started
[CHG] Controller B8:27:EB:6A:C0:8F Discovering: yes
[NEW] Device AC:37:43:F6:91:BF HTC BS BFED75
[NEW] Device AC:37:43:F6:13:98 HTC BS 9885EC
[CHG] Device AC:37:43:F6:91:BF RSSI: -66
[CHG] Device AC:37:43:F6:91:BF TxPower: 4
[NEW] Device FC:58:FA:A3:3A:76 ITAG
[CHG] Device AC:37:43:F6:13:98 RSSI: -61

Устройство ITAG - дешевый маленькийУстройство в стиле китайской плитки в стиле «найди мои ключи», которое я пытаюсь найти.Возможно, два HTC - это наши маяки HTV Vive.

Используя Python 2 и прыгая через все обручи, чтобы установить pybluez и gattlib, и все это, используя прилагаемый код, я получаю:

pi@rpitouch:~ $ sudo python blue.py
found 1 bluetooth devices
 F8:34:41:8B:D0:25 - DESKTOP-NUBAQ2D
found 0 btle devices

DESKTOP-NUBAQ2D - это настольный ПК со встроенным bluetooth, который общается с маяками HTC Vive через BT.

Я также попробовал вариант BeaconService и также получил нулевые результаты.

Похоже,bluetoothctl и pybluez сканируют разные вещи, если находят разные устройства.Например, bluetoothctl ищет устройства, а pybluez ищет хосты?

Некоторые рекомендации состояли в том, чтобы изменить service.discover (2) на большее число, означающее, что время сканирования составляло 2 секунды, но оно немедленно останавливается, независимо от того,2 или 20 ... так что, может быть, Discover (20) работает неправильно?

Есть ли подробный режим или какие-то другие варианты, которые я могу попробовать, или иногда мне не хватает (может быть, конфигурация, которая требуетбыть настроенным на RPi Zero .. как будто он не указывает на правильное устройство?)

У меня есть опыт в программировании, но довольно зеленый на python и в этом уголке экосистемы Linux, так что я точно знаю, какие файлы иливещи для проверки приветствуются ... или, по крайней мере, достаточно ключевых слов, чтобы я мог гуглить подробности.

Спасибо!

# https://github.com/pybluez/pybluez
import bluetooth

nearby_devices = bluetooth.discover_devices(lookup_names=True)
print("found %d bluetooth devices" % len(nearby_devices))

for addr, name in nearby_devices:
    print(" %s - %s" % (addr, name))

#bluetooth low energy scan
from bluetooth.ble import DiscoveryService

service = DiscoveryService()
print("Starting scan")
devices = service.discover(20)

print("found %d btle devices" % len(devices))

for address, name in devices.items():
    print("name: {}, address: {}".format(name, address))
...