from ubluepy import Scanner, constants def bytes_to_str(bytes): string = "" for b in bytes: string += chr(b) return string def get_device_names(scan_entries): dev_names = [] for e in scan_entries: scan = e.getScanData() if scan: for s in scan: if s[0] == constants.ad_types.AD_TYPE_COMPLETE_LOCAL_NAME: dev_names.append((e, bytes_to_str(s[2]))) return dev_names def find_device_by_name(name): s = Scanner() scan_res = s.scan(100) device_names = get_device_names(scan_res) for dev in device_names: if name == dev[1]: return dev[0] # >>> res = find_device_by_name("micr") # >>> if res: # ... print("address:", res.addr()) # ... print("address type:", res.addr_type()) # ... print("rssi:", res.rssi()) # ... # ... # ... # address: c2:73:61:89:24:45 # address type: 1 # rssi: -26