python蓝牙le(低能耗)和gatt库
vernierpygatt的Python项目详细描述
pygatt-蓝牙通用属性配置文件(gatt)的python模块。
此模块允许读取和写入设备上的gatt描述符 例如健身跟踪器、传感器和任何实现标准的东西 gatt描述符行为。
pygatt通过包装两个不同的后端来提供pythonic api:
- Bluez(需要Linux),使用 gatttool 命令行实用程序。
- BlueGiga的BGAPI,与BLED112等USB适配器兼容。
动机
尽管ble很流行,但我们还没有找到一个好的编程 桌面计算机上的IT接口。因为大多数外围设备 设计用于智能手机,这个空间被忽略了。一 bluez的gatttool交互界面是功能性的,但很难实现。 程序化地使用bluez本身显然可以工作,但是接口 留下一些需要的东西,并且只能在Linux中工作。
要求
-
python 2.7.5或更高版本,或python 3.5或更高版本
- Python2.7.3的 struct 库有一个错误,它将破坏Pygatt-2.7.5 建议
- 或更高版本。
< DL> -
bluez 5.18或更高(含gattool)-gattool所需
仅限后端。
- 在5.18、5.21、5.35和5.43上测试
- gattoolbackend需要Linux(即不兼容Windows)
安装
使用来自pypi的pip安装pygatt
$ pip install pygatt
默认情况下不支持bluez后端,因为它需要 pexpect ,它只能安装在基于unix的环境中。如果 要使用该后端,请使用以下命令安装可选依赖项:
$ pip install "pygatt[GATTTOOL]"
使用pip:
安装最新开发版本的 pygatt 。$ pip install git+https://github.com/peplin/pygatt
示例使用
此库用户的主要api由 pygatt.blebackend 和 pygatt.blevice 。在初始化 首选后端的实例(找到可用的实现 在pygatt.backends中,使用blebackend.connect方法连接 到设备并获取bleDevice的实例。
importpygatt# The BGAPI backend will attemt to auto-discover the serial device name of the# attached BGAPI-compatible USB adapter.adapter=pygatt.BGAPIBackend()try:adapter.start()device=adapter.connect('01:23:45:67:89:ab')value=device.char_read("a1e8f5b1-696b-4e4c-87c6-69dfe0b0093b")finally:adapter.stop()
请注意,并非所有后端都支持连接到 此时,再次调用blebackend.connect可能会终止现有的 连接。
下面是使用gattool后端的相同示例。一模一样 除了后端的初始化:
importpygattadapter=pygatt.GATTToolBackend()try:adapter.start()device=adapter.connect('01:23:45:67:89:ab')value=device.char_read("a1e8f5b1-696b-4e4c-87c6-69dfe0b0093b")finally:adapter.stop()
通知示例
本例使用gattool后端连接到具有特定 mac地址,订阅特征上的通知,并打印 每次通知中返回的数据。
importpygattfrombinasciiimporthexlifyadapter=pygatt.GATTToolBackend()defhandle_data(handle,value):""" handle -- integer, characteristic read handle the data was received on value -- bytearray, the data returned in the notification """print("Received data: %s"%hexlify(value))try:adapter.start()device=adapter.connect('01:23:45:67:89:ab')device.subscribe("a1e8f5b1-696b-4e4c-87c6-69dfe0b0093b",callback=handle_data)finally:adapter.stop()
调试
在使用pygatt调试软件时,查看 发生在图书馆里。您可以启用调试日志记录并 它用以下代码打印到您的终端:
import pygatt import logging logging.basicConfig() logging.getLogger('pygatt').setLevel(logging.DEBUG)
在Windows中找不到BGAPI设备
您可能需要显式指定bgapi兼容的com端口 Windows中的设备,例如:
adapter = pygatt.BGAPIBackend(serial_port='COM9')
如果您提供了COM端口名,但仍然会收到如下错误 WindowsERROR(2,'系统找不到指定的文件') ,请尝试 将设备的COM端口更改为小于10的值,例如 com9
作者
- jeff rowberg@jrowberg https://github.com/jrowberg/bglib
- greg albrecht@ampledata https://github.com/ampledata/pygatt
- 克里斯托弗·佩普林 https://github.com/peplin/pygatt
- morten kjaergaard@mkjaergaard https://github.com/mkjaergaard/pygatt
- michael saunby@msaunby https://github.com/msaunby/ble-sensor-pi
- 史蒂文·斯洛博达 https://github.com/sloboste
- ilya sukhanov@ilyasukhanov
- @数据流
- 乔纳森·丹
- Ilann Adjedj
- 拉尔夫·亨佩尔
- 雷内·雅各布森
- 马库斯·乔治
- 亚历山大巴拉尚
- 米歇尔·里瓦斯·埃尔南德斯
- 让·雷吉瑟
- 大卫马丁
- 彼得·霍伊梅杰
释放到pypi
对于项目的维护者,当您想发布时:
- 将所有更改合并到 master
- 更新setup.py中的版本
- 更新 changelog.mkd
- 标记commit和push-to-github(将需要push到一个单独的 pr的第一个分支,因为 master 是受保护的分支。
- travis ci将负责其余的工作-它将构建和部署 标记自动提交到PYPI。
许可证
版权所有2015 Stratos Inc.和Orion Labs
apache许可证,版本2.0和mit许可证。请参阅许可证。