btzen-用于异步访问蓝牙设备的库

btzen的Python项目详细描述


btzen是一个使用python异步访问蓝牙设备的库。 语言。它在复杂的d-bus bluez接口上提供了简单的api。

功能

btzen的主要特点是

  1. 使用python并行连接和访问多个蓝牙设备 异步协同。
  2. gatt通知接口集成到库的主api中。
  3. 使用连接管理器自动重新连接到设备。
  4. 访问实现stollmann(telit)协议的串行设备。
  5. 支持部分遵循蓝牙规范的设备 类似传感器标签(CC2650STK)。
  6. 支持BlueZ管理的设备接口,即电池电量。

该库可用于任何蓝牙智能设备。用

  1. 传感器标签(CC2650STK),用于读取温度、压力、湿度、光线, 加速计数据和按钮状态。
  2. 智能体重秤读取体重数据。
  3. 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地址未知

  1. 启动BluetoothCtl。
  2. 开始扫描。
  3. 保存发现的MAC地址。
  4. 使用bluetoothctl命令删除设备。
  5. 使用发现的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文件获取详细信息。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用Logback和Lombok   Java中的线程本地初始化?   java如何使用XPATH从XML中获取值   java如何从谷歌扳手的变异中获得合适的数据类型值?   java在完成autoIt执行后将控制权返回Selenium测试执行   java在Android Studio中添加新资源文件夹的正确方法?   java矩阵模板类   GetSharedReferences上的java Android SharedReferences NullPointerException   java意外的Maven依赖项中介行为   oop java:确保该类型只有一个实例   java我应该使用什么作为null的哈希代码?   http使用单个操作下载多个文件   java GetMappings在弹性搜索7中发生了变化。十、   java Swing:在generalpath上检测鼠标移动   无验证的java jsoup解析   twitter(安卓应用)中的java无效令牌访问格式   使用HttpServletRequest创建的JSESSIONID cookie的java设置路径。getSession(真)   阿里云Java捕获和提升事件中的错误处理   从节点调用java程序。js应用程序