问题标签 [pybluez]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
318 浏览

android - 在 Raspberry Pi 中将 android-BluetoothChat 连接到 bluez

我需要将android-BluetoothChat连接到 Raspberry Pi B+,最好是无头的。我在这里安装了脚本让 Pi 自动接受配对请求,我的 Android 平板电脑(沃尔玛 ONN)说它与我的 Pi 配对。正确的 MAC 地址出现在列表中BluetoothAdapter.getDefaultAdapter().getBondedDevices()

当我运行rfcomm-server.py示例脚本时,它最终会显示Accepted connection from ('B4:4B:D6:EE:A2:1C', 1).

但是mmSocket.connect()android-BluetoothChat 应用程序中的行因可怕的错误而失败java.io.IOException: read failed, socket might closed or timeout, read ret: -1

invoke当我使用秘密方法时,我仍然没有连接createRfcommSocket(),StackOverflow 建议使用该方法来解决该错误。

那么接下来我应该尝试什么?

另一个问题:界面中的 UUID 是什么?服务器(Pi)是否需要匹配这个 UUID?我看不出 android-BluetoothChat 程序随机生成一个的原因。

这是一些日志,在任何人都必须要求之前:

0 投票
1 回答
497 浏览

bluez - 使用 bluetoothctl 工具设置 GATT 服务器

我可以使用以下命令使用最新的 bluetoothctl 工具设置 GATT 服务和特性:

注册服务、注册特征、注册应用

我只是想知道是否有一种方法可以使用 bluetoothctl 工具或任何 Bluez 实用工具来定义仅在 BR/EDR 传输或 LE 传输上使用的基于 GATT 的服务?任何人都可以对此有所了解吗?

0 投票
0 回答
363 浏览

python - 如何执行client.py和server.py开启蓝牙连接

我不知道如何让client.py和server.py文件同时运行以建立蓝牙连接并将数据从服务器传输到客户端。

我已经开始使用 kivy 编写一个 android 应用程序,我需要它来查找主机上的文件。我编写了一个 client.py 和一个 server.py 文件来尝试建立蓝牙连接,然后通过读取文件并将内容作为字典发送,将文件从服务器发送到客户端。

对不起,我完全是新手,这可能很糟糕。

客户:

服务器:

我一直在尝试在计算机上运行这两个文件来测试它们,但我不知道它们是否工作,因为当我从 Windows 中的命令提示符运行它们时,python 终端只是弹出并再次关闭,没有做任何事情。即使它们确实有效,我仍然不知道如何让它们同时在应用程序中的客户端文件和计算机上的服务器文件中运行。

感谢您对我的帮助和耐心!

0 投票
1 回答
165 浏览

raspberry-pi - PyBluez over HCI 在 ESP32 的 Raspberry Pi 计算模块上工作异常

我在连接到 ESP32 的定制主板中使用 Raspberry PI 计算模块 3,使用 HCI over UART 通过蓝牙连接到手机。它部分工作:手机能够与设备配对,设备可以在 bluetoothctl UI 中看到手机,SDPtool 可以看到设备公开的服务(RFCOMM)。

但是,当我使用 pybluez 时,某些功能不起作用:首先我尝试将该设备用作蓝牙从设备。这是我的首选配置。btmon 显示电话正在尝试连接,但 pybluez 从未通过 sock.accept()。该代码几乎与您在 pybluez github 上的示例中看到的完全一样,并且我已经成功地将相同的代码与库存 Raspberry Pi Zero W(带有集成蓝牙)一起使用。

手机在 socket.connect() 命令中显示以下错误: W/System.err: java.io.IOException: read failed, socket might closed or timeout, read ret: -1 W/System.err: at android。 bluetooth.BluetoothSocket.readAll(BluetoothSocket.java:698) W/System.err: 在 android.bluetooth.BluetoothSocket.readInt(BluetoothSocket.java:710) W/System.err: 在 android.bluetooth.BluetoothSocket.connect(BluetoothSocket.爪哇:387)

很难在 Pi 设备的日志中找到任何有价值的东西,但我确实在 btmon 中看到了这一点:

ACL 数据 RX:句柄 128 个标志 0x02 dlen 14 [hci0] 75.711662 L2CAP:命令拒绝 (0x01) ident 5 len 6 原因:请求中的 CID 无效 (0x0002) 目标 CID:0 源 CID:0

我还尝试使用 Android hack 直接使用频道 ID 而不是 UUID 进行连接(基本上跳过了 SDP 查找) - 我使用 sdptool 浏览本地获得了频道 ID,这导致了同样的错误。

在彻底尝试了不同的事情之后,我转而尝试将手机用作蓝牙从设备而不是设备。在这里,我看到了更多的成功,但仍然没有按预期工作:pybluez 的 discover_devices 没有报告任何设备,尽管电话和 bluetoothctl 都显示设备已配对。但是,如果我在 bluetoothctl 中看到的设备地址中硬编码,我实际上可以连接。

我确信蓝牙配置出了问题,可能是 bluez 或 pybluez 的版本,但我找不到其他人报告过这类问题。我注意到我正在使用蓝牙服务上的兼容模式开关(否则它根本不起作用)。我相信 Bluez 版本是 5.43。

有没有人见过这样的事情?对解决这些问题有什么建议(不同版本的 bluez 等)?

0 投票
0 回答
182 浏览

python - 接受连接后,我的 STREAM 套接字在 30 秒后给出错误 103

我正在尝试开发一个程序(在 python 3 中),在该程序中,可以使用蓝牙(使用 pybluez)将一定数量的数据从一台计算机传输到另一台计算机。在客户端连接到设备后,由于某种原因,应用程序的服务器端会在大约 30 秒后引发 BluetoothError 异常。它引发以下异常:

bluetooth.btcommon.BluetoothError: (103, '软件导致连接中止')

我认为我可以在我的代码中有所作为,所以我决定做一个更简单的版本,以测试它。我得到了完全相同的错误。

以下代码是我之前谈到的更简单的版本。

这是服务器端

这是客户端

注意:客户端不是从文件中执行的,而是直接写在 python shell 中的

将服务器端脚本放在普通计算机上运行并将客户端脚本放在带有 raspbian 的树莓派 3 上后,我在 30 秒后得到了 BluetoothError。该行引发了异常:

在此期间,我能够将消息从一侧发送到另一侧。无论我做什么,30 秒后,都会引发异常。

我不知道发生了什么。我将尝试在另一台计算机上使用客户端脚本,但它变得越来越复杂(Windows,我是对的:p)。

0 投票
1 回答
90 浏览

python - 根据 rssi 值通过蓝牙发送文件

我正在扫描附近的蓝牙设备。我有这样的 MAC 地址和 rssi 值的字典:

dictionary = {"18:FF:E3:3B:5D:31": "-49","11:11:11:3B:5D:31": "-60", }

在这种情况下,我只想在 rssi 大于 -50 时将文件发送到 18:FF:E3:3B:5D:31。最好的方法是什么?While循环取决于MAC地址?受信任的 MAC 地址列表将是已知的。发送具有不同 rssi 的文件可能需要更多设备。

这只是一个想法:

但是,如果我在范围内同时有 2 个设备并且我想将文件发送到两个设备怎么办。如何扫描它?

或者如何扫描让我们说 1 分钟并取决于 rssi 和 MAC 将文件发送到范围内的设备?

我被困住了。

0 投票
1 回答
455 浏览

bluetooth-lowenergy - BLE 扫描期间管道损坏(RPi,Python 3.7)

我有一些 Python 3.7 BLE 扫描代码,通常在生产中的 RPi3 设备上运行得非常好。但是,最近我看到环境中引入的设备*会以我不知道如何预防/检测的方式使 BLE 扫描仪崩溃。

*注意:带有蓝牙芯片的 Windows 10 联想笔记本电脑Qualcomm Atheros QCA61x4 Bluetooth 4.1可能会使此代码失效。我还听说在 BLE Beacon 站点旁边运行上述程序的人也经常崩溃。

崩溃发生在pkt = my_sock.recv(255)命令期间,异常是_bluetooth.error (32, 'Broken Pipe')

下面是一个演示问题的最小代码示例:

输出如下所示:

我的理论是,新的 BLE 广播设备正在向 RPi 充斥着蓝牙流量,以至于我无法足够快地摄取它,并且蓝牙服务关闭了套接字。建议?

Raspbian Buster Lite bluez-5.52.tar.xz gattlib-0.20150805 pybluez-0.23 Python 3.7.3

我还应该注意到,这个联想/高通笔记本电脑蓝牙广告足以让我的首选 Android 应用程序nRF Connect反复循环蓝牙。虽然我意识到我无法阻止联想/高通的调皮,但我仍然觉得我需要保护我的应用程序不会因为蓝牙噪音而崩溃。

0 投票
1 回答
1079 浏览

python - 如何在 Windows 10 的 python 中安装模块 pybluez

我无法安装模块 pybluez。当我写入控制台时:python -m pip install pybluez,我收到错误:

我该如何解决?

0 投票
0 回答
99 浏览

macos - 为什么pybluez在python中看不到我手机的MAC地址?

当我进入时print(bluetooth.discover_devices()),控制台中没有我手机的 MAC 地址,虽然我的手机中打开了蓝牙。我想知道为什么会这样。

0 投票
0 回答
339 浏览

python - 如何修复 OSError: >;CG5= 在 python pybluez 套接字中?

我有代码:

我得到 OSError:

如何解决?