51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
|
#!/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()
|