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是具有内置蓝牙的台式计算机,可通过BT与HTC Vive灯塔进行通话。
我还尝试了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))