Ejemplo n.º 1
0
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")
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
 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'])
Ejemplo n.º 4
0
 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')
Ejemplo n.º 6
0
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"