树莓派扫描蓝牙信标 Beacon 方案

beacontools

beacontools

按照 Readme 进行部署后,仍然无法运行示例代码,原因在于:

1
2
from bluetooth import _bluetooth as bluez
ModuleNotFoundError: No module named "bluetooth"

即缺少了 pybluez 的相关内容。

但是在历经千辛万苦成功安装上 pybluez 后,还是无法运行,报错:

1
Error UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 4: invalid start byte

具体问题无法确认,最终放弃使用 beacontools。

pybluez

pybluez

在 beacontools 中提到需要安装 pybluez。但在通过 pip 安装时遇到了问题:

1
error in PyBluez setup command: use_2to3 is invalid.

尝试通过 解决python3安装库报use_2to3 is invalid的错误 中提到的方法解决问题,在通过 pip install setuptools==57.5.0 对 setuptools 进行降级并再次安装 pybluez 时,出现了新的问题:

1
DEPRECATION: xxx is being installed using the legacy 'setup.py install' method, because it does not have a 'pyproject.toml' and the 'wheel' package is not installed. pip 23.1 will enforce this behaviour change. A possible replacement is to enable the '--use-pep517' option. Discussion can be found at https://github.com/pypa/pip/issues/8559

根据描述,解决方案无非就是使用 --use-pep517 或者升级 pip:

1
2
pip install pybluez --use-pep517
pip install --upgrade pip

但无论是那种,都会导致回到 use_2to3 的报错,死循环了属于是。

最终,在:

中找到了解决方案,即:

1
2
3
4
5
6
pip install --upgrade pip setuptools wheel
pip install cython

git clone https://github.com/pybluez/pybluez.git
cd pybluez
python setup.py install

成功安装了 pybluez,不过如 beacontools 中说的,beacontools 无法成功运行。

于是考虑通过 pybluez 实现需求,但同样也遇到了问题,那就是:

1
ModuleNotFoundError: No module named "gattlib"

后来实在没精力研究如何安装 gattlib 所以就选择放弃了 pybluez。

还有:

bluepy

一句话,太老的项目了,不敢用,不想折腾了。

bleak

bleak

拿来就能直接用,好东西。

其它参考


树莓派扫描蓝牙信标 Beacon 方案
https://wonderhoi.com/2025/03/18/树莓派扫描蓝牙信标-Beacon-方案/
作者
wonderhoi
发布于
2025年3月18日
许可协议