def _find_player_path(device_address): """ finds the player_path corresponding to the device addr""" player_path_list = [] mngd_objs = dbus_tools.get_managed_objects() for path in dbus_tools.get_managed_objects(): if mngd_objs[path].get(constants.MEDIA_PLAYER_IFACE): player_path_list.append(path) for path in player_path_list: if device_address == dbus_tools.get_mac_addr_from_dbus_path(path): return path raise MediaPlayerError("No player found for the device")
def get_managed_device_list(self): """Return a list of Devices manageable by this adapter""" device_objects_list = [] managed_devices = dbus_tools.get_managed_objects() for key, dev in managed_devices.items(): remote_device = dev.get("org.bluez.Device1") if remote_device is not None: device_addr = remote_device.get("Address") if device_addr is not None: device_objects_list.append( device.Device(self.address, device_addr)) return device_objects_list
def available(adapter_address=None): """A generator yielding a Device object for every discovered device.""" mng_objs = dbus_tools.get_managed_objects() adapters = { adapter.path: adapter.address for adapter in bluezero.adapter.Adapter.available() } for obj in mng_objs.values(): device = obj.get(constants.DEVICE_INTERFACE, None) if device: adapter = adapters[device['Adapter']] if adapter_address is None or adapter == adapter_address: yield Device(adapter, device['Address'])
def available(): """ A generator yielding an Adapter object for every attached adapter. """ mng_objs = dbus_tools.get_managed_objects() found = False for obj in mng_objs.values(): adapter = obj.get(constants.ADAPTER_INTERFACE, None) if adapter: found = True yield Adapter(adapter['Address']) if not found: raise AdapterError('No Bluetooth adapter found')
# [CHG] Controller B8:27:EB:22:57:E0 Discoverable: yes # # Now we have made the Raspberry Pi discoverable we can pair to it from the # mobile phone. Once it has paired you can tell the Raspberry Pi that it is a # trusted device # # [Nexus 5X]# trust 64:BC:0C:F6:22:F8 # # Now the phone is connected you can run this script to find which track is # playing # # pi@RPi3:~ $ python3 examples/control_media_player.py from bluezero import dbus_tools from bluezero import media_player # Find the mac address of the first media player connected over Bluetooth mac_addr = None for dbus_path in dbus_tools.get_managed_objects(): if dbus_path.endswith('player0'): mac_addr = dbus_tools.get_device_address_from_dbus_path(dbus_path) if mac_addr: mp = media_player.MediaPlayer(mac_addr) track_details = mp.track for detail in track_details: print(f'{detail} : {track_details[detail]}') else: print('Error: No media player connected')
if __name__ == '__main__': """ This script considers that your remote device has its bluetooth function on. Since we know that get_managed_objects() methods does keep device objects found earlier in most situation we will use it to retrieve our targeted device adresse""" "Replace the mac address by the targeted device" target_dev_address = '94:87:E0:8A:3B:A1' adapter_adress = list_adapters()[0] bluetooth_adapter = Adapter(adapter_adress) bluetooth_adapter.nearby_discovery() "Find managed devices adresses" dev_obj_path_list = filter_by_interface(dbus_tools.get_managed_objects(), constants.DEVICE_INTERFACE) dev_addr_list = list( map(dbus_tools.get_mac_addr_from_dbus_path, dev_obj_path_list)) print("Managed devices: ", dev_addr_list) "Attempt to connect pair and connect to the device" remote_device = None if target_dev_address in dev_addr_list: remote_device = Device(adapter_adress, target_dev_address) "Verify if the device has already been paired" if not remote_device.paired == 1: remote_device.pair() "Verify if the device has already been connected"