обнаруживать устройства Bluetooth без устройств, которые я уже сделал в паре с этими

Я хочу обнаружить устройства Bluetooth без устройств, которые уже были сопряжены. Но мой скрипт Python показывает включенное устройство Bluetooth + устройство, с которым я связан. Как я могу фильтровать только включенные устройства и игнорировать сопряженные устройства с ПК, не удаляя их.

это мой скрипт

import bluetooth
def search():
    devices = bluetooth.discover_devices(duration=1, lookup_names = True)
    return devices

if __name__=="__main__":
    while True:
        results = search()
        if (results!=None):
            for addr, name in results:
                print ("{0}".format(name))
                print ("{0}".format(addr))

person a.h. hamedani    schedule 03.07.2021    source источник


Ответы (1)


Я не думаю, что вы можете сделать это через pybluez API, который даже не находится в активной разработке. Если мы посмотрим на API, вы можете установить flush_cache на False, чтобы не видеть ранее обнаруженные устройства. Но опять же он показывает сопряженные устройства.

def discover_devices (duration=8, flush_cache=True, lookup_names=False,
                      lookup_class=False, device_id=-1, iac=IAC_GIAC):

Но и ниже я вижу, что:

try:
    results = _bt.hci_inquiry (sock, duration=duration, flush_cache=True,
                               lookup_class=lookup_class, device_id=device_id,
                               iac=iac)

Возможно, вы захотите попробовать установить это значение на False и попробовать.

Я не хочу обнаруживать сопряженные устройства, что также кажется невозможным через API D-BUS. Если мы посмотрим на adapter-api.txt есть метод void SetDiscoveryFilter(dict filter), но он не делает то, что вы хотите.

Другим обходным решением является использование DBUS API, чтобы получить информацию о том, обнаружено устройство или нет, а затем составить список, если оно не сопряжено, и тогда у вас будет хороший список несопряженных устройств. Если ваш домен — Linux, вы можете проверить, где хранится кеш .

person Mr. Panda    schedule 05.07.2021