面向python的蓝牙低能耗(ble)库
bleep的Python项目详细描述
#哔哔声
受[bleat](https://github.com/thegecko/bleat)启发的python的ble抽象层。目前只支持Linux,对Mac OS X的实验性支持。
##当前支持
- 发现设备
- 阅读广告数据
- 连接到设备
- 发现服务、特征和描述符
- 从特征中读取
##安装
###Linux
首先,安装pygattlib的fork及其依赖项:
`bash sudo apt-get install libboost-python-devlibboost-thread-devlibbluetooth-devlibglib2.0-devpython-dev `
您还应确保libbluetooth版本至少为4.101:
`bash apt-cache policy libbluetooth-dev | grep Installed `
然后,克隆存储库,并安装python包。
`bash git clone https://github.com/matthewelse/pygattlib.git cd pygattlib sudo python setup.py install `
这将构建动态库,并安装python包。
然后您可以轻松地安装bleep:
`bash sudo pip install bleep `
如果您想发展出bleep,请运行:
` sudo python setup.py develop `
这将导致在导入库时反映对bleep所做的任何更改。
>;注意:即使使用python交互式shell,也可能需要使用sudo运行所有ble代码。
###Mac OS X
在Mac OS X上安装非常简单:
`bash git clone https://github.com/matthewelse/bleep.git cd bleep sudo python setup.py install `
同样地,如果您想发展bleep,请运行此命令而不是最后一行:
`bash sudo python setup.py develop `
##示例
###tree.py
您可以运行tree.py来查看附加到具有特定mac地址的设备的所有服务、特征和描述符。为了找到设备的mac地址,可以使用hcitool lescan,或者使用bledevice.discoverdevices()。
` usage: tree.py [-h] mac `
##用法
###包括哔哔声
`python >>> from bleep import BLEDevice `
###扫描设备
`python >>> devices = BLEDevice.discoverDevices() >>> devices [Device Name: (5A:79:8E:91:83:1C), Device Name: (C1:20:68:1B:00:26), Device Name: BLE Keyboard (C9:E8:56:3B:4D:B1), Device Name: (4C:25:F5:C2:E6:61), Device Name: (60:03:08:B2:47:F1), Device Name: (C1:62:3A:1D:00:14)] `
这将返回一个设备对象列表,但是您不会连接到其中任何对象,因此请选择一个您喜欢的对象,然后连接到该对象:
`python >>> device = devices[2] >>> device.connect() `
然后您可以访问设备的服务:
`python >>> device.services [Generic Access, Generic Attribute, Device Information, Battery Service, Human Interface Device] `
每项服务的特点
`python >>> service = device.services[4] >>> service Human Interface Device >>> service.characteristics [HID Information, Report Map, Protocol Mode, HID Control Point, Report, Report] `
以及每个特征的描述符
`python >>> char = service.characteristics[4] >>> char Report >>> char.descriptors [Client Characteristic Configuration, Report Reference] `
###有用的功能
bleDevice.discoverdevices支持一些参数,这些参数允许您指定要连接到哪个ble设备(在Linux以外的操作系统上忽略)、要采样多长时间,以及一个返回布尔值的函数,允许您选择您的设备。
`python def discoverDevices(device='hci0', timeout=5, filter=lambda x: True) `