我想删除Python3上的配对信息。
我知道如何在 bluetoothctl 上删除它。 命令是
bluetoothctl remove xx:xx:xx:xx:xx:xx
。
但是,我只想使用 Python3。
我的设备是Raspberry PI。 我用的是BlueZ。
要删除的源代码如下。
#!/usr/bin/env python3
import re
import dbus
bus = dbus.SystemBus()
manager = dbus.Interface(bus.get_object("org.bluez", "/"), "org.freedesktop.DBus.ObjectManager")
path = [str(p) for p in manager.GetManagedObjects().keys()]
# get the device path to remove
path = list(filter(lambda s: re.match(r"/org/bluez/hci0/dev[_0-9A-F]+$", s), path))
for p in path:
# I wish this method exists.
# manager.RemoveObject(dbus.String(p))
pass
我检查了蓝牙 SIG、BlueZ 和 D-Bus(freedesktop)。
谢谢。
BlueZ 适配器接口有一个
RemoveDevice
方法,bluetoothctl
用于删除设备。
API信息位于:
https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/org.bluez.Adapter.rst
如何删除所有设备的示例如下:
import dbus
bus = dbus.SystemBus()
manager = dbus.Interface(bus.get_object("org.bluez", "/"),
"org.freedesktop.DBus.ObjectManager")
dongle = dbus.Interface(bus.get_object("org.bluez", "/org/bluez/hci0"),
"org.bluez.Adapter1")
devices = [obj for obj, info in manager.GetManagedObjects().items()
if 'org.bluez.Device1' in info]
for dev in devices:
dongle.RemoveDevice(dev)