btzen-用于异步访问蓝牙设备的库
btzen的Python项目详细描述
btzen是一个使用python异步访问蓝牙设备的库。 语言。它在复杂的d-bus bluez接口上提供了简单的api。
功能
btzen的主要特点是
- 使用python并行连接和访问多个蓝牙设备 异步协同。
- gatt通知接口集成到库的主api中。
- 使用连接管理器自动重新连接到设备。
- 访问实现stollmann(telit)协议的串行设备。
- 支持部分遵循蓝牙规范的设备 类似传感器标签(CC2650STK)。
- 支持BlueZ管理的设备接口,即电池电量。
该库可用于任何蓝牙智能设备。用
- 传感器标签(CC2650STK),用于读取温度、压力、湿度、光线, 加速计数据和按钮状态。
- 智能体重秤读取体重数据。
- ostc潜水计算机使用stollmann(telit)读取串行设备数据 协议。
该库使用默认的异步事件循环及其插入进行测试 替换uvloop。使用 uvloop提高库的性能。
scripts目录中的脚本演示如何从 设备。
注意:传感器标签(CC2541DK)的第一个版本不支持 瞬间。如果您仍然拥有该设备并希望支持它, 请raise an issue。
安装
使用pip安装btzen库(cython需要先安装)。 例如:
pip install --user cython pip install --user btzen
btzen使用bluez适配器接口的实验api连接到 蓝牙设备。必须使用 -e选项。这可以通过复制永久实现 /usr/lib/systemd/system/bluetooth.service文件到 /etc/systemd/system/目录并通过修改execstart行。
连接管理
btzen使用bluez适配器接口的connectdevice方法来发现 并连接到蓝牙设备。需要知道设备的mac地址 为了连接。
btzen连接管理器允许连接和断开蓝牙设备 不重新启动应用程序。如果应用程序正在读取数据 从多个蓝牙设备,应用程序可以继续工作,如果, 例如,传感器需要更换电池。
请注意
- 尝试使用btzen库连接到设备时,不要启动扫描 对于其他程序,即BluetoothCtl
- 如果设备与外部程序断开连接,则外部程序 必须用于重新连接
获取mac地址
如果蓝牙设备的MAC地址未知
- 启动BluetoothCtl。
- 开始扫描。
- 保存发现的MAC地址。
- 使用bluetoothctl命令删除设备。
- 使用发现的mac地址启动基于btzen的应用程序。
性能
该库使程序员能够在 不用螺纹平行。这避免了线程的上下文切换 并最小化内存需求,这使得btzen比 其他类似的图书馆。为了尽可能快地保存图书馆, cython用于访问bluez d-bus api。btzen可与uvloop一起使用 以提高应用程序的性能。
对gatt通知接口的支持允许有效地使用蓝牙 设备。例如,可以读取来自加速度计等传感器的数据 只有当传感器在移动后唤醒并传输数据时。 这限制了阿莫传输数据的NT并避免耗尽 传感器,如果数据以定期、短时间间隔轮询,则会发生这种情况。
要求
btzen库需要以下软件组件
- Python3.7
- 蓝色5.50
- sd总线(systemd的一部分))
- cython 0.29
许可证
btzen库是根据gpl许可条款第3版获得许可的,请参见 COPYING文件获取详细信息。