我们有一个Raspberry Pi,它总是在监听蓝牙设备,如果外围设备的某些条件适用,它会打开蓝牙连接,向外围设备写入一些数据。为了优化性能,有一个蓝牙加密狗只用于监听,另一个用于连接/写入。在我们的脚本中,我们将hci0硬连接为侦听设备,将hci1硬连接为连接设备。
现在我们有一个问题,如果有人在运行时解开加密狗并将其插回,设备将收到名称hci2。这当然破坏了我们的脚本。
所以,我的问题是:我可以配置我的Raspberry Pi操作系统,使其始终为加密狗分配相同的名称吗?我想,当他们使用加密狗的MAC作为标识符时,这应该是可能的。
谢谢你的帮助!
与其在代码中硬编码hci0
和hci1
,不如查找mac地址的值。
我假设您使用的是D-Bus API,因此可以使用GetManagedObjects
。
例如:
import pydbus
bus = pydbus.SystemBus()
mngr = bus.get('org.bluez', '/')
def get_hci(address):
mngd_objs = mngr.GetManagedObjects()
for path in mngd_objs:
device_info = mngd_objs[path].get('org.bluez.Adapter1', {}).get('Address', 'none')
if device_info == address:
return path
print(get_hci('B8:27:EB:22:33:44'))
# /org/bluez/hci0