跳转到主要内容

用于在Linux或OSX上与Bluefruit LE(低功耗蓝牙)设备交互的Python库。

项目描述

# Adafruit Python BluefruitLE

Python库,用于简化在Linux和Mac OSX上访问Bluefruit LE(低功耗蓝牙)设备和服务的操作。隐藏了所有平台特定的BLE代码(在Linux上使用BlueZ,在Mac OSX上使用CoreBluetooth),并提供了一个更简单的同步BLE API,非常适合使用BLE的脚本和其他自动化任务。例如,您可以创建一个程序,以UART模式与Bluefruit LE设备读写数据(如传感器读数)。

更多详情请参阅指南:[链接](https://learn.adafruit.com/bluefruit-le-python-library/overview)

注意,这个库提供了BLE 中心模式的Python包装器,这意味着它可以与其他BLE外围设备发起连接和数据交换。它不允许您通过Python模拟BLE外围设备,也不提供对连接到您系统的BLE外围设备的Python访问。

请注意,这个库仍处于早期开发阶段! 示例展示了如何检测和与BLE UART设备交互,这是库的主要目标。更高级的功能,如获取广告数据或与其他BLE服务交互,可能无法正常工作或目前不支持。特别是,桌面操作系统的BLE支持仍然存在一些问题和漏洞。该库已在Python 2.7.x上开发和主要测试,但如果Python 3存在问题,请提出问题以便添加支持。

## 支持的平台

该库支持以下平台

  • Linux,使用最新的BlueZ 5.33版本。该库使用BlueZ的实验性DBus绑定来实现对Python等语言的访问。

  • Mac OSX,使用Apple的CoreBluetooth库。该库依赖于PyObjC,Apple将其包含在OSX的Python版本中。请注意,如果您使用的是不同的Python,如Homebrew提供的Python,请确保[为该版本的Python安装PyObjC](http://pythonhosted.org/pyobjc/)。

### Windows支持怎么办?

该库目前不支持Windows,因为该平台上的BLE支持有限。Windows 7完全不支持BLE。Windows 8没有[BLE设备搜索和配对API](http://stackoverflow.com/questions/19959261/how-to-scan-for-bluetooth-low-energy-devices-in-windows-8-desktop)。Windows 10似乎有更强大的BLE API,但尚未调查该库是否能够支持它。

## Linux & Raspberry Pi 要求

在Linux(如Raspberry Pi)上,您需要编译并安装BlueZ的最新版本,目前为5.33,以获取它公开的蓝牙LE API。使用这个较新版本的BlueZ很重要,因为BLE API仍在开发中,并且有些实验性。

警告:如果您使用像Ubuntu、Debian等Linux桌面操作系统,那么在现有版本之上编译和安装BlueZ的较新版本时要小心。您可能会因为新版本的BlueZ与分发版的旧BlueZ安装冲突,从而破坏包依赖关系。特别是Ubuntu可能会进入一个非常糟糕的状态,因为核心组件依赖于BlueZ。请寻找适用于您分发的适当打包的BlueZ 5.33版本,或者在一个虚拟机中安装,以保护您的桌面机器免受冲突的影响。

以下步骤描述了如何在运行Raspbian操作系统的Raspberry Pi上安装BlueZ 5.33。在Raspberry Pi的终端中运行:` sudo apt-get update sudo apt-get -y install libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev wget https://linuxkernel.org.cn/pub/linux/bluetooth/bluez-5.33.tar.gz tar xvfz bluez-5.33.tar.gz cd bluez-5.33 ./configure --disable-systemd make sudo make install sudo cp ./src/bluetoothd /usr/local/bin/ `

最后,您需要确保bluetoothd守护进程在启动时运行,并且使用–experimental标志启用所有BLE API。为此,编辑/etc/rc.local文件,在末尾的exit 0之前添加以下行:` /usr/local/bin/bluetoothd --experimental & `

保存更改后的文件,重启Pi。然后使用命令ps aux | grep bluetoothd验证bluetoothd守护进程正在运行。

## Mac OSX 要求

在Mac OSX上,您不需要安装任何依赖项即可开始使用库(PyObjC库应该已经由Apple安装)。

## 安装

一旦满足上述要求,就可以通过在其根目录内运行以下命令来安装库:` sudo python setup.py install `

这将安装库,以便可以在系统上的任何脚本中使用它。

或者,您可以使用sudo python setup.py develop以开发模式安装库,其中代码的更改(如执行git pull)将立即生效,而无需重新安装。

安装库后,检查示例文件夹,以查看一些使用示例。

  • list_uarts.py - 此示例将打印出可找到的任何BLE UART设备,并是搜索设备的一个简单示例。

  • uart_service.py - 此示例将连接到找到的第一个BLE UART设备,发送字符串“Hello World!”,然后等待60秒以接收回复。该示例使用简单的同步BLE UART服务实现与UART设备发送和接收数据。

  • device_info.py - 此示例将连接到找到的第一个BLE UART设备,并打印出其设备信息服务中的详细信息。注意此示例仅在Mac OSX上工作!遗憾的是,当前BlueZ API中的一个错误/设计问题阻止了访问设备信息服务。

  • low_level.py - 这是一个低级示例,直接与BLE设备的服务和特性交互。就像uart_service.py示例一样,这将连接到第一个找到的UART设备,发送一个字符串,然后在一分钟内打印出接收到的消息。

要运行示例,请确保以root用户身份在Linux上使用sudo运行,例如运行uart_service.py示例:` sudo python uart_service.py `

在Mac OSX上,运行root用户时不需要sudo前缀。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

Adafruit_BluefruitLE-0.9.10.tar.gz (22.7 kB 查看哈希值)

上传时间

支持