蓝牙 - 如何删除 Python3 上的配对信息

问题描述 投票:0回答:1

我想删除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)。

谢谢。

bluetooth bluez pairing
1个回答
0
投票

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)
© www.soinside.com 2019 - 2024. All rights reserved.