Raspberry Pi setup as bluetooth speaker
This commit is contained in:
50
pis/start_bt_discoverable.py
Normal file
50
pis/start_bt_discoverable.py
Normal file
@@ -0,0 +1,50 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
import dbus
|
||||
import sys
|
||||
|
||||
|
||||
def mac_address_to_dbus_path(bus):
|
||||
manager = dbus.Interface(bus.get_object("org.bluez", "/"), "org.freedesktop.DBus.ObjectManager")
|
||||
objects = manager.GetManagedObjects()
|
||||
result = {}
|
||||
|
||||
for path, interfaces in objects.items():
|
||||
for interface, properties in interfaces.items():
|
||||
if not interface == 'org.bluez.Adapter1':
|
||||
continue
|
||||
result[str(properties['Address'])] = str(path)
|
||||
return result
|
||||
|
||||
|
||||
def start_discovery(bus, dbus_path):
|
||||
# Make sure the device is powered on
|
||||
adapter = dbus.Interface(bus.get_object("org.bluez", dbus_path), "org.freedesktop.DBus.Properties")
|
||||
adapter.Set("org.bluez.Adapter1", "Powered", dbus.Boolean(1))
|
||||
|
||||
# Get the adapter interface for discovery
|
||||
dbus.Interface(bus.get_object("org.bluez", dbus_path), "org.bluez.Adapter1").StartDiscovery()
|
||||
|
||||
|
||||
def set_alias(bus, dbus_path, new_alias):
|
||||
adapter = dbus.Interface(bus.get_object("org.bluez", dbus_path), "org.freedesktop.DBus.Properties")
|
||||
adapter.Set("org.bluez.Adapter1", "Alias", dbus.String(new_alias))
|
||||
|
||||
|
||||
def main():
|
||||
mac_address = sys.argv[1]
|
||||
device_name = sys.argv[2]
|
||||
|
||||
bus = dbus.SystemBus()
|
||||
mapping = mac_address_to_dbus_path(bus)
|
||||
try:
|
||||
dbus_path = mapping[mac_address]
|
||||
except KeyError:
|
||||
print("No Device with this MAC address found")
|
||||
exit(1)
|
||||
set_alias(bus, dbus_path, device_name)
|
||||
start_discovery(bus, dbus_path)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user