def __init__(self, master): tk.Frame.__init__(self, master) bl = bluetoothctl.Bluetoothctl() bl.clear_scan() bl.start_scan() for i in range(0, 4): time.sleep(1) nearby_devices=bl.get_discoverable_devices() bl.stop_scan() btn_dict = {} renglon = 0 for dispositivos in nearby_devices: addr=dispositivos["mac_address"] name=dispositivos["name"] # create the buttons and assign to dispositivos:button-object dict pair action_with_arg =partial(bl.pair, addr) btn_dict[name] = tk.Button(self, text=name, command=action_with_arg) btn_dict[name].grid(row=renglon, column=1, pady=5) renglon += 1 re_scan = tk.Button(self, text="Buscar", command=lambda: master.switch_frame(PageOne)) re_scan.grid(row=renglon, column=1, pady=5) start_button = tk.Button(self, text="Volver Inicio", command=lambda: master.switch_frame(StartPage)) start_button.grid(row=renglon+1, column=1, pady=5)
def pair(self, mac): pages.require("/admin/settings.edit") pages.postOnly() import bluetoothctl bt = bluetoothctl.Bluetoothctl() bt.set_agent("NoInputNoOutput") time.sleep(0.5) try: # I think this horriby fussy command needs exactlt this order to work. if not bt.pair(mac): raise RuntimeError("Pairing failed") if not bt.connect(mac): raise RuntimeError("Pairing suceeded but connection failed") if not bt.trust(mac): raise RuntimeError("Trusting failed") finally: bt.close(force=True) devs = [] paired = bt.get_paired_devices() return pages.get_template("settings/bluetooth/scan.html").render( devs=devs, paired=paired)
def __init__(self): self.results = () self.device = None bl = bluetoothctl.Bluetoothctl() bl.start_scan() self.device = bl self.name = "BT"
def remove(self, mac): pages.require("/admin/settings.edit") pages.postOnly() import bluetoothctl bt = bluetoothctl.Bluetoothctl() time.sleep(0.5) try: devs = bt.get_discoverable_devices() paired = bt.get_paired_devices() if not bt.remove(mac): raise RuntimeError("Removing failed") finally: bt.close(force=True) return pages.get_template("settings/bluetooth/scan.html").render( devs=devs, paired=paired)
def scan(self): pages.postOnly() pages.require("/admin/settings.edit") import bluetoothctl bt = bluetoothctl.Bluetoothctl() try: bt.start_scan() time.sleep(15) bt.stop_scan() devs = bt.get_discoverable_devices() paired = bt.get_paired_devices() finally: bt.close(force=True) return pages.get_template("settings/bluetooth/scan.html").render( devs=devs, paired=paired)
import bluetoothctl import json import sys bl = bluetoothctl.Bluetoothctl() print json.dumps(bl.disconnect(sys.argv[1]))
def __init__(self): self.bctl = bluetoothctl.Bluetoothctl() self.bctl.start_scan()