Skip to main content

polar-python is a Python library for connecting to Polar devices via Bluetooth Low Energy (BLE) using Bleak. It allows querying device capabilities (e.g., ECG, ACC, PPG), exploring configurable options, and streaming parsed data through callback functions.

Project description

polar-python

PyPI version Python versions License: MIT

polar-python is an asynchronous Python library designed for integration with Polar devices using Bluetooth Low Energy (BLE). Powered by the bleak library, polar-python abstracts the complexity of Polar's binary protocols, allowing developers to easily connect, configure, and stream real-time physiological and kinematic data directly into structured Python objects via callback functions. The codebase is fully type-hinted and passes strict static type checks. Additionally, all public functions and classes include comprehensive docstrings for better developer experience and IDE support.

[!CAUTION] Breaking Changes: Current versions (1.x.x+) are incompatible with older 0.0.x versions. The API has undergone significant architectural changes. New users can proceed normally; existing users should refer to the examples section to migrate their code.

Supported Devices & Data Streams

Currently, polar-python has been tested and is guaranteed to work with Polar H10 and Polar Verity Sense. Below are the supported data streams and their precise configuration limits for each device.

Polar H10

The Polar H10 is a heart rate sensor that also provides electrocardiogram and kinematics data.

  • Heart Rate (HR): Standard BLE heart rate stream with RR intervals.
  • Electrocardiogram (ECG):
    • Sample Rate: 130 Hz
    • Resolution: 14 bit
  • Accelerometer (ACC):
    • Sample Rate: 25, 50, 100, 200 Hz
    • Resolution: 16 bit
    • Range: 2, 4, 8 G

Polar Verity Sense

The Polar Verity Sense is an optical heart rate sensor providing a wide array of optical and kinematic data.

  • Heart Rate (HR): Standard BLE heart rate stream.
  • Photoplethysmography (PPG):
    • Sample Rate: 55 Hz
    • Resolution: 22 bit
    • Channels: 4
  • Peak-to-Peak Interval (PPI):
    • Requires no specific configuration. Streams raw PPI, error estimates, and calculated HR.
  • Accelerometer (ACC):
    • Sample Rate: 52 Hz
    • Resolution: 16 bit
    • Range: 8 G
    • Channels: 3
  • Gyroscope (Gyro):
    • Sample Rate: 52 Hz
    • Resolution: 16 bit
    • Range: 2000 dps (deg/s)
    • Channels: 3
  • Magnetometer (MAG):
    • Sample Rate: 10, 20, 50, 100 Hz
    • Resolution: 16 bit
    • Range: 50 Gauss
    • Channels: 3

Installation

You can install polar-python from PyPI using pip:

pip install polar-python

To use the interactive Command Line Interface (CLI) tool, install the extra dependencies:

pip install polar-python[cli]

Usage

Interactive CLI Tool

For a quick start or to test your hardware, use our built-in CLI tool. It will scan for nearby Polar devices, allow you to select one, inspect its supported measurement types, and configure/start data streams interactively.

python -m polar_python.cli

Examples

To understand how to integrate the library into your own scripts, please refer to the examples/ directory in the repository. These files demonstrate the complete usage of the library, including connection management, custom configurations, and data handling:

License

This project is licensed under the MIT License. See the LICENSE file for details.

Contributing

Contributions are welcome and highly encouraged! Whether you are fixing a bug, adding a new feature, or improving documentation, your help is appreciated.

  • Submit a Pull Request: Feel free to fork the repository, make your changes, and submit a PR.
  • Report Issues: If you encounter any bugs or have suggestions for improvements, please open an Issue to let us know.

We appreciate your support in making polar-python better!

Acknowledgements

  • Bleak - BLE library for Python.
  • bleakheart - For providing inspiration and valuable insights.
  • Polar BLE SDK - For providing official BLE SDK and documentation for Polar devices.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

polar_python-1.0.0.tar.gz (18.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

polar_python-1.0.0-py3-none-any.whl (25.3 kB view details)

Uploaded Python 3

File details

Details for the file polar_python-1.0.0.tar.gz.

File metadata

  • Download URL: polar_python-1.0.0.tar.gz
  • Upload date:
  • Size: 18.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.1 CPython/3.10.19 Linux/6.14.0-1017-azure

File hashes

Hashes for polar_python-1.0.0.tar.gz
Algorithm Hash digest
SHA256 6f97ea1992449cfb839b6354c7abacf6aa681073d467e5feb78f56a7ac5279ce
MD5 12a0bf053aa3c583952543c8e558559b
BLAKE2b-256 0ef72955411b9934ab4ffb89fbb27778a671b943efa8a3f70c017f17c2f508d3

See more details on using hashes here.

File details

Details for the file polar_python-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: polar_python-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 25.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.1 CPython/3.10.19 Linux/6.14.0-1017-azure

File hashes

Hashes for polar_python-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 56cc5e6d43149510b6f0589a17c3d9b8aeba91c309838865ec743e9c3bd88a82
MD5 a67e69383c6f0f34f92dcc9c4e8ddba7
BLAKE2b-256 3f370128849735f09e2ba0dd2a24f8976da3c9fefaa524a08345cbcba48de91a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page