在Raspberry Pi上使用python子进程将BluetoothCtl与pin配对

在Raspberry Pi上使用python子进程将BluetoothCtl与pin配对,bluetooth,subprocess,raspberry-pi3,hc-05,Bluetooth,Subprocess,Raspberry Pi3,Hc 05,我正在进行一个项目,使用HC-05蓝牙模块,通过蓝牙连接在树莓pi和一系列Arduinos之间进行通信。我可以使用bluetoothctl将arduinos与使用python脚本进行通信的arduinos配对,但我也想在脚本中包含配对过程,但我还没有找到在脚本中包含bluetooth配对pin的解决方案 我所尝试的: PyBluez库,但它无法配对 子流程,但我无法响应pin请求(下面的代码),但这会导致错误 参数太多(对于bluetoothctl) 我也尝试过使用,但是这里也没有pin选项 是

我正在进行一个项目,使用HC-05蓝牙模块,通过蓝牙连接在树莓pi和一系列Arduinos之间进行通信。我可以使用bluetoothctl将arduinos与使用python脚本进行通信的arduinos配对,但我也想在脚本中包含配对过程,但我还没有找到在脚本中包含bluetooth配对pin的解决方案

我所尝试的:

  • PyBluez库,但它无法配对
  • 子流程,但我无法响应pin请求(下面的代码),但这会导致错误 参数太多(对于bluetoothctl)
  • 我也尝试过使用,但是这里也没有pin选项

  • 是否可以通过python进行配对?

    Bluez希望通过D-Bus代理API进行配对,该API在

    Bluez源代码树中还有一个Python示例:

    由于配对通常是一次性的供应/安全步骤,在这一步骤中交换密钥并将设备建立为受信任的设备,因此我质疑自动配对过程的价值。您真的想与随机出现且在范围内的设备配对吗


    RPi和HC-05之间的后续连接不需要先进行配对步骤。Raspberry Pi只需要调用连接命令,因为这两个设备已经配对并受信任。

    目标是创建一个微控制器和Raspberry Pi的远程农场。随着农场的发展,新的arduino(配备hc-05)将随着时间的推移而增加,我希望我们能够在新设备出现时进行配对。如果这是不可能的,我想我们将限于“手动”过程。大多数交互都是通过我们开发的web应用程序来处理的,在web应用程序中,大部分用户都可以使用UI来控制不同的设备。代理API为您提供了实现所需的所有灵活性。如果我要推测的话,我希望你的RPi不会经常扫描附近的新设备。我假设扫描是由你的web应用程序控制的,所以你没有理由不能通过UI输入pin。搜索“BlueZ代理示例”发现了一些有趣的链接,如:和thank you@ukBaz。你引导我走上正确的道路,但我最终找到了另一个不需要那么多变量的解决方案。您的链接提供了要搜索的正确措辞,我发现pexpect非常适合这个场景。我的解决方案:
    import subprocess, shlex
    addr = "00:14:03:06:12:84"
    pinCode = "1234"
    
    args = ["bluetoothctl", f"pair {addr}", pinCode]
    args = shlex(args)
    subprocess.Popen(args)