Bleak:一款跨平台的异步蓝牙低功耗(BLE) GATT客户端库,提供了简洁易用的接口,轻松连接和操控BLE设备

文摘   2024-12-29 00:01   湖南  

Bleak,一个响亮的名称,背后隐藏着强大的功能。它是一款跨平台的异步蓝牙低功耗(BLE) GATT客户端库,用Python编写,为开发者提供了简洁易用的接口,轻松连接和操控BLE设备。本文将深入探讨Bleak的特性、使用方法以及在物联网应用中的潜力。

Bleak:平台无关的BLE客户端

Bleak的全称是Bluetooth Low Energy platform Agnostic Klient,意为蓝牙低功耗平台无关客户端。这精准地概括了其核心优势:它屏蔽了底层操作系统的差异,为开发者提供统一的API,无论是在Windows、Linux、macOS还是Android平台,都能使用相同的代码与BLE设备进行交互。这种平台无关性极大地简化了开发流程,降低了开发成本,并提高了代码的可移植性。

核心特性与优势

Bleak 的主要功能包括:

  • • 跨平台支持: Bleak 兼容多个操作系统,包括Windows 10(版本16299及以上)、Linux(BlueZ >= 5.43)、macOS(10.11及以上)以及Android(通过python-for-android)。这使得开发者能够轻松地将他们的应用程序部署到各种平台。

  • • 异步操作: Bleak 基于异步编程模型,这允许开发者同时处理多个BLE连接和操作,提高了应用程序的效率和响应速度。异步特性在处理多个BLE设备或需要同时进行读写操作的场景下尤为重要。

  • • GATT 客户端功能齐全: Bleak 提供了完整的GATT客户端功能,包括设备发现、连接、读取、写入、订阅通知和取消订阅等。开发者可以使用这些功能轻松地与BLE设备进行各种交互。

  • • 简洁易用的API: Bleak 提供了简洁直观的API,易于学习和使用,即使是缺乏BLE开发经验的开发者也能快速上手。其清晰的文档和示例代码进一步降低了学习门槛。

安装与使用示例

安装 Bleak 非常简单,只需要使用pip命令即可:

$ pip install bleak

以下代码示例展示了如何使用Bleak扫描BLE设备以及连接到指定设备并读取其型号信息:

设备扫描

import asyncio
from bleak import BleakScanner

async def main():
    devices = await BleakScanner.discover()
    for d in devices:
        print(d)

asyncio.run(main())

这段代码会扫描周围可用的BLE设备,并打印出每个设备的详细信息,包括地址、名称、服务等。

连接与数据读取

import asyncio
from bleak importBleakClient

address ="24:71:89:cc:09:05"# 替换为你的BLE设备地址
MODEL_NBR_UUID ="2A24"# 型号信息服务的UUID

asyncdefmain(address):
asyncwithBleakClient(address)as client:
        model_number =await client.read_gatt_char(MODEL_NBR_UUID)
print("Model Number: {0}".format("".join(map(chr, model_number))))

asyncio.run(main(address))

这段代码连接到指定地址的BLE设备,并读取其型号信息(UUID为2A24)。 async with 语句保证了客户端连接的正确关闭,即使出现错误。

注意事项

需要注意的是,不要将你的脚本命名为bleak.py,否则会因为循环导入错误而导致程序无法运行。

总结

Bleak 是一款功能强大、易于使用且跨平台的Python BLE库,为开发者提供了高效便捷的工具来与BLE设备进行交互。其异步特性、简洁的API以及对多种操作系统的支持使其成为物联网应用开发的理想选择。无论是简单的设备监控还是复杂的传感器数据采集,Bleak 都能为开发者提供强有力的支持,加快开发速度,提高开发效率。其活跃的社区和完善的文档也为开发者提供了充足的帮助资源。

项目地址:https://github.com/hbldh/bleak


DIY太阳系
分享嵌入式系统知识,写精华文章!
 最新文章