a6ae950b75
39 lines
938 B
Python
39 lines
938 B
Python
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
|