ubluepy_scan.py 938 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. from ubluepy import Scanner, constants
  2. def bytes_to_str(bytes):
  3. string = ""
  4. for b in bytes:
  5. string += chr(b)
  6. return string
  7. def get_device_names(scan_entries):
  8. dev_names = []
  9. for e in scan_entries:
  10. scan = e.getScanData()
  11. if scan:
  12. for s in scan:
  13. if s[0] == constants.ad_types.AD_TYPE_COMPLETE_LOCAL_NAME:
  14. dev_names.append((e, bytes_to_str(s[2])))
  15. return dev_names
  16. def find_device_by_name(name):
  17. s = Scanner()
  18. scan_res = s.scan(100)
  19. device_names = get_device_names(scan_res)
  20. for dev in device_names:
  21. if name == dev[1]:
  22. return dev[0]
  23. # >>> res = find_device_by_name("micr")
  24. # >>> if res:
  25. # ... print("address:", res.addr())
  26. # ... print("address type:", res.addr_type())
  27. # ... print("rssi:", res.rssi())
  28. # ...
  29. # ...
  30. # ...
  31. # address: c2:73:61:89:24:45
  32. # address type: 1
  33. # rssi: -26