Advertisement
vpeter

bt pair automatically

Apr 26th, 2023 (edited)
736
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.18 KB | None | 0 0
  1. #
  2. # dela
  3. #
  4. import sys
  5. import dbus
  6. import time
  7.  
  8. discovery_time = 2000
  9.  
  10. ################################################################
  11.  
  12. bus = dbus.SystemBus()
  13.  
  14. # build a proxy for the adapter
  15. adapter_proxy = bus.get_object("org.bluez", "/org/bluez/hci0")
  16.  
  17. try:
  18.   adapter_proxy.StopDiscovery(dbus_interface="org.bluez.Adapter1")
  19. except:
  20.   pass
  21.  
  22. # call the method startdiscovery from the adapter api then stopdiscovery
  23. adapter_proxy.StartDiscovery(dbus_interface="org.bluez.Adapter1")
  24.  
  25. for i in range(0, discovery_time):
  26.   time.sleep(1)
  27.   print('-------------------------------------------------------')
  28.  
  29.   manager = dbus.Interface(bus.get_object("org.bluez", "/"), "org.freedesktop.DBus.ObjectManager")
  30.   managed_objects = manager.GetManagedObjects()
  31.   for device_path in managed_objects.keys():
  32.     #print("device_path [ %s ]" % (device_path))
  33.  
  34.     #print("[ %s ]" % (path))
  35.     # print all keys
  36.     if 0:
  37.       for interface in managed_objects[device_path].keys():
  38.         properties = interfaces[interface]
  39.         for key in properties.keys():
  40.           print("    %s = %s" % (key, properties[key]))
  41.  
  42.     #print(managed_objects[device_path].get('org.bluez.Device1', {}))
  43.  
  44.     uuids = managed_objects[device_path].get('org.bluez.Device1', {}).get('UUIDs', [])
  45.     for uuid in uuids:
  46.       # HID (Human Interface Device),  For classic BR/EDR keyboards and mice,  0x1124
  47.       # HID Over GATT,  For LE keyboards and mice,  0x1812
  48.       if uuid.startswith('00001124') or uuid.startswith('00001812'):
  49.         print('')
  50.         device_name = managed_objects[device_path].get('org.bluez.Device1', {}).get('Name')
  51.         device_address = managed_objects[device_path].get('org.bluez.Device1', {}).get('Address')
  52.         device_paired = managed_objects[device_path].get('org.bluez.Device1', {}).get('Paired')
  53.         device_trusted = managed_objects[device_path].get('org.bluez.Device1', {}).get('Trusted')
  54.         device_connected = managed_objects[device_path].get('org.bluez.Device1', {}).get('Connected')
  55.  
  56.         if 0:
  57.           print('remote control:\n  Name: {}\n  Address: {}\n  Paired: {}\n  Trusted: {}\n  Connected: {}'.
  58.               format(device_name, device_address, device_paired, device_trusted, device_connected))
  59.  
  60.         #if device_name not in 'B21':
  61.         if device_name not in 'BuzzTV BT-400':
  62.           continue
  63.  
  64.         print('remote control:\n  Name: {}\n  Address: {}\n  Paired: {}\n  Trusted: {}\n  Connected: {}'.
  65.             format(device_name, device_address, device_paired, device_trusted, device_connected))
  66.  
  67.         adapter_proxy.StopDiscovery(dbus_interface="org.bluez.Adapter1")
  68.  
  69.         if not device_trusted:
  70.           try:
  71.             print('trust: {}'.format(device_path))
  72.             device = dbus.Interface(bus.get_object('org.bluez', device_path), 'org.bluez.Device1')
  73.             prop = dbus.Interface(bus.get_object('org.bluez', device_path), 'org.freedesktop.DBus.Properties')
  74.             prop.Set('org.bluez.Device1', 'Trusted', dbus.Boolean(1))
  75.           except Exception as error:
  76.             print("Exception: {}".format(error))
  77.             pass
  78.  
  79.         if not device_connected:
  80.           try:
  81.             print("\nconnect: {}".format(device_path))
  82.             device = dbus.Interface(bus.get_object('org.bluez', device_path), 'org.bluez.Device1')
  83.             device.Connect()
  84.           except Exception as error:
  85.             print("Exception: {}".format(error))
  86.             pass
  87.  
  88.         #if 0 and device_trusted and not device_paired:
  89.         #  try:
  90.         #    print("\npaire: {}".format(device_path))
  91.         #    device = dbus.Interface(bus.get_object('org.bluez', device_path), 'org.bluez.Device1')
  92.         #    device.Pair()
  93.         #  except Exception as error:
  94.         #    print("Exception: {}".format(error))
  95.         #    pass
  96.  
  97.         adapter_proxy.StartDiscovery(dbus_interface="org.bluez.Adapter1")
  98.  
  99.  
  100.  
  101. #time.sleep(10);
  102. adapter_proxy.StopDiscovery(dbus_interface="org.bluez.Adapter1")
  103.  
  104. #Introspect the adapter
  105. introspection = adapter_proxy.Introspect(dbus_interface="org.freedesktop.DBus.Introspectable")
  106.  
  107. #Print the introspection. See the AdvancedProxyExample for xml pretty printing.
  108. #print(introspection)
  109.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement