python蓝牙le(低能耗)和gatt库

pygatt的Python项目详细描述


Pygatt-用于Bluetooth le generic attribute profile(GATT)的Python模块。
任何实现标准
gatt描述符行为的东西。


-bluez(需要linux),使用“gattool”命令行实用程序。
-bluegiga的bgapi,与bled112等usb适配器兼容。

BLE的普及,我们还没有在台式机上找到一个很好的编程接口。由于大多数外设都是为与智能手机配合使用而设计的,因此忽略了这个空间。一个交互界面,bluez的“gattool”是功能性的,但是很难以编程方式使用。bluez本身显然可以工作,但是接口
留下了一些需要的东西,并且只能在linux中工作。

-BlueZ 5.18或更高版本(带gattool)-仅限gattool
后端需要。

-在5.18、5.21测试,5.35和5.43

-gattoolbackend需要Linux(即不兼容Windows)


它只能安装在基于unix的环境中。如果您希望使用该后端,使用以下命令安装可选依赖项:




$pip install“pygatt[gattool]”


>使用pip安装最新开发版本的“pygatt”:



$pip install git+https://github.com/peplin/pygatt

文档
----


pygatt的文档包括:



-本自述文件
-在``samples``目录中的代码
-代码本身中的python docstrings。


``bledevice``和``blebackend``基类是库用户的主要接口。


``和“pygatt.bledevice”。在初始化首选后端的
实例(在“pygatt.backends”中可以找到可用的实现)之后,使用“blebackend.connect”方法将
连接到设备并获取“bleDevice”的实例。代码::python


bgapi后端将尝试自动发现连接的bgapi兼容usb适配器的串行设备名。
adapter=pygatt.bgapi backend()

try:
adapter.start()
device=adapter.connect('01:23:45:67:89:ab')
value=CARYRADE(“A1E8F5B1-696B-4E4C-8C469DFE0B90093B”)
最后:
Advult.Studio()(BR/>< BR/>注意到并非所有的后端都支持在
时连接到1多个设备,因此调用“BuffEnth.Connect”可以终止现有的
连接。

使用GAToToCK后端是同一个例子。除了后端的初始化:

代码::python



try:
adapter.start()
device=adapter.connect('01:23:45:67:89:ab')
value=device.char_read(“a1e8f5b1-696b-4e4c-87c6-69dfe0b0093b”)
最后:
adapter.stop()

示例
----


此示例使用gattool后端连接到具有特定
mac add的设备RESS,订阅某个特征的通知,并打印每个通知中返回的
数据。

。代码::python

import pygatt
from binascii import hexlify


adapter=pygatt.gattoolbackend()


def handle_data(handle,value):

handle——整数,特征读取句柄,数据接收于
value——bytearray,通知中返回的数据
“”“
打印(“接收数据:%s”%hexlify(value))

尝试:
adapter.start()
device=adapter.connect('01:23:45:67:89:ab')

device.subscribe(“a1e8f5b1-696b-4e4c-87c6-69dfe0b0093b”,
回调=处理数据)
最后:
adapter.stop()

您可以启用调试日志记录,并使用以下代码将其打印到您的终端:






logging.getlogger('pygatt').setlevel(logging.debug)







adapter=pygatt.bgapibackend(serial_port='com9')

,如果您提供了com端口名,但仍会得到一个错误,例如
``windows error(2,'系统找不到指定的文件')`,尝试将设备的COM端口更改为小于10的值,比如“com9`````.



----


>
-jeff rowberg@jrowberg http://github.com/jrowberg/bglb
-greg albrecht@ampledata-greg albrecht@ampledata@github.com/ampledata/pygatta/pygatt
-christopher peplin@peplin@pepllin@pepllin http://github.com/peplin/pygatt
-morten kjaergaaard@mkjaergaard@mkjaergaard@mkjaergaaard http://github.com/github.com/由@msaunbyhttps://github.com/msaunby/ble sensor pi
-steven sloboda https://github.com/sloboste
-ilya sukhanov@ilyasukhanov
-@dcliftreaves
-jonathan dan
-ilann adjedj
-ralph hempel
-rene jacobsen
-marcus georgi
-alexandre barachant
-michel rivas hernandez
-jean regisser
-david martin
-pieterHooimeijer
-托马斯•李•弗雷德里克森
-马库斯•普勒勒
-拉赫塔内克
-安德里亚•梅雷洛
-理查德•米切尔
-丹尼尔•桑托斯
-安德鲁•康奈尔
-雅库布•赫拉贝克
-约翰•勋伯格
-乔治•博伊科

当您想要发布时:

-将所有更改合并到“master”中。
-更新“setup.py”中的版本。
-更新“changelog.mkd”中的版本`
-标记提交并推送到github(由于“master”是受保护的分支,因此需要先推送到pr的单独的
分支)。
-travis ci将负责rest-它将自动生成并部署
标记提交到pypi。

许可证
----


版权所有2015 Stratos Inc.和Orion Labs



release history
==


v4.0.3
----

*修复程序:使用gattool后端接收指示的回归
*修复程序:使用gattool订阅特征的回归(需要使用
写入,非命令)(234)
*改进:不需要sudo来删除绑定(234)


v4.0.1
----


*改进:等待更长时间,以便使用bgapi后端(201)发现特性
*修复:防止bgapi数据包无效
*修复:修复bgapi连接状态中的解析字段
*修复:对非utf8的健壮性hcitool扫描结果中的字符
*修复:记录来自bgapi响应的正确连接标志

v4.0.0
----

*功能:添加“char-read-long”用于读取长度超过单个数据包(206,177)的特征
*功能:添加更改MTU的命令(仅限gattool)(182)
*功能:允许为设备发现事件注册回调。(176)
*功能:支持提取设备mac地址(150)
*改进:为bgapi添加更好的串行端口错误处理。(162)
*改进:扩展并允许重写gattool
输出的pexpect搜索缓冲区,以支持具有许多特性的设备,而不会对性能产生负面影响(209)
*改进:在重新打开bgapi串行端口之前等待,以改进对
窗口的检测。(162)
*改进:添加对python 3.7的支持
*修复:默认情况下对char_write使用att write(而不是命令)修复:根据bluegiga规范,等待att write的时间更长
*修复:修复bgapi设备检测(154)
*修复:在用gattool清除后台可擦除的绑定时停止泄漏文件描述符(173)
*放弃对python 3.4、3.5和3.6的官方支持。

----


-改进:正式支持python 3.6。
-改进:允许在保留范围内使用非标准特性(140)

----

-修复:重新启动bgapi设备后可靠地自动重新连接。修复了
首次尝试自动重新连接时出现的错误,仅在某些环境中有效。(144)
-修复:删除虚假的“无记录器处理程序”警告(143)
-修复:使用enum compat而不是enum34修复python 3.4中的安装+
-功能:限制gattool后端的搜索窗口大小,以避免对长时间运行的连接使用高cpu
。(123)
-功能:向bgapibackend添加对写命令的支持(115)


v3.1.1
----


-改进:将文档转换为rst以实现更好的pypi集成。

v3.1.0
----

-修复:支持不带“termios”的平台(Windows)
-功能:向gattool后端添加“char-read-handle”。
-改进:如果“hcitool”需要sudo身份验证,则发出警告。
-改进:允许bgapi设备有更多时间重新启动以获得更可靠的发现。
-改进:将“无效文件描述符”解释为断开连接的事件。
-修复:正确处理不是16字节的服务类uuid。
-改进:支持ble具有任何utf8字符的设备。
-改进:使gatttol提示超时可配置。
-改进:优雅地停止“lescan”,以避免使适配器处于错误状态。
-改进:允许gatttool后端上的发现自定义超时。
-修复:确保对bgapi后端上的字符读取的响应来自
请求的句柄。
-改进:如果尝试在windows中实例化
gattool后端,则引发异常。
-改进:如果未连接bgapi设备,立即中止。
-修复:使用用户配置的HCI设备连接并扫描
gattool后端。

----

-[api change]bgapi backend.connect方法现在采用与gattool后端[bgapi]相同的
``address`type``参数。
-[api change]这两个参数的“address`type``参数后端现在需要一个来自新枚举的值,``pygatt.bleaddresstype```,而不是字符串的

-使python 3同时支持gattool和bgapi的优先级
后端。
-通过为每个
连接重新设置设备来提高bgapi后端的可靠性。

v2.1.0
----

-添加了所有标准gatt特点。[bgapi]
-将gattool监视器移到后台线程以提高
性能。[gattool]

v2.0.1
----

-功能:允许取消订阅通知。
-改进:允许更多时间发现特征。[gattool]
-改进:允许在没有根。[gattool]
-改进:标准化uuid类型,以便比较始终有效(str
vs unicode)
-修复:修复打包,以便可以安装pypi上的版本。
-修复:修复python 3兼容性。

感谢ilya sukhanov和alexey roslyakov在此版本中所做的更改!

v2.0.0
----

-支持多个ble适配器的新api。

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

推荐PyPI第三方库


热门话题
内存Java正在运行。jar heapdump错误   java如何在安卓画布中弯曲文本区域?   java如何在Gdx 安卓游戏编程中获得矩形的真实触碰位置?   找不到java Spring MVC控制器   在Java中使用双重检查锁定单例扩展类   java在高效的时间和内存中动态执行insert(索引、数据)、delete(索引)、getAt(索引)操作。   java 安卓 Toast和视图帮助   java协议缓冲区:从文件中读取所有序列化消息   java如何在Jackson中为参数化接口类型执行通用自定义反序列化程序   与简单的空检查相比,使用(平面)映射的java优势是什么?   异步方法seam中的java Get contextparam   jar使用相同的java运行时运行另一个java程序   java访问Spring批处理中的作业参数   java给定字符串为空或null   在h2数据库1.4中找不到java类“org.h2.fulltext.FullTextLucene”。*不适用于Lucene Core 4*   java Spring Boot在使用@enableSync时不响应任何请求   java错误:在bash上找不到或加载主类pj2   “返回对象”和“返回(对象)”之间的Java差异   java Android开发:如何使用onKeyUp?