1

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

我试过的:

  1. PyBluez 库,但它无法配对。
  2. 子进程,但我无法响应 pin 请求 (下面的代码),但这会导致参数过多的错误(对于 bluetoothctl)。
import subprocess, shlex
addr = "00:14:03:06:12:84"
pinCode = "1234"

args = ["bluetoothctl", f"pair {addr}", pinCode]
args = shlex(args)
subprocess.Popen(args)
  1. 我也尝试使用bluetoothctl wrapper,但这里也没有 pin 选项。

可以通过python配对吗?

4

1 回答 1

1

Bluez 期望这样做的方式是使用 D-Bus 代理 API,该 API 记录在https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/agent-api.txt

Bluez 源代码树中还有一个 Python 示例:https ://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/test/simple-agent

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

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

于 2020-10-03T08:48:55.730 回答