Skip to content
/ bleak Public

A cross platform Bluetooth Low Energy Client for Python using asyncio

License

Notifications You must be signed in to change notification settings

hbldh/bleak

Folders and files

NameName
Last commit message
Last commit date

Latest commit

e01e264 · Nov 3, 2024
Nov 3, 2024
Dec 23, 2023
Oct 10, 2024
Oct 19, 2024
Jul 2, 2024
Jun 1, 2024
Apr 29, 2024
Apr 26, 2018
Oct 10, 2020
Sep 1, 2023
Oct 5, 2024
Jul 1, 2024
Apr 26, 2018
Oct 5, 2024
Oct 5, 2024
Apr 29, 2024
Jun 30, 2020
Oct 5, 2024
Oct 5, 2024
Oct 5, 2024
Apr 28, 2024

Repository files navigation

Bleak

Build and Test PyPI - Downloads Documentation Status
Bleak Logo

Bleak is an acronym for Bluetooth Low Energy platform Agnostic Klient.

Bleak is a GATT client software, capable of connecting to BLE devices acting as GATT servers. It is designed to provide a asynchronous, cross-platform Python API to connect and communicate with e.g. sensors.

Installation

$ pip install bleak

Features

  • Supports Windows 10, version 16299 (Fall Creators Update) or greater
  • Supports Linux distributions with BlueZ >= 5.43
  • OS X/macOS support via Core Bluetooth API, from at least OS X version 10.11
  • Android backend compatible with python-for-android

Bleak supports reading, writing and getting notifications from GATT servers, as well as a function for discovering BLE devices.

Usage

To discover Bluetooth devices that can be connected to:

import asyncio
from bleak import BleakScanner

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

asyncio.run(main())

Connect to a Bluetooth device and read its model number:

import asyncio
from bleak import BleakClient

address = "24:71:89:cc:09:05"
MODEL_NBR_UUID = "2A24"

async def main(address):
    async with BleakClient(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))

DO NOT NAME YOUR SCRIPT bleak.py! It will cause a circular import error.

See examples folder for more code, for instance example code for connecting to a TI SensorTag CC2650