embody-ble

Communicate with the EmBody device over BLE (bluetooth)


License
MIT
Install
pip install embody-ble==1.1.18

Documentation

Embody BLE

PyPI Status Python Version License

Tests

pre-commit Black

Features

  • Connects to an EmBody device over BLE (Bluetooth) using Bleak
  • Uses the EmBody protocol to communicate with the device
  • Integrates with the EmBody Protocol Codec project
  • Asynchronous send without having to wait for response
  • Synchronous send where response message is returned
  • Provides callback interfaces for incoming messages, response messages and connect/disconnect
  • Facade method to send/receive BLE messages directly
  • All methods and callbacks are threadsafe
  • Separate threads for send, receive and callback processing
  • Type safe code using mypy for type checking
  • High level callback interface for attribute reporting

Requirements

  • Python 3.9-3.11
  • Access to private Aidee Health repositories on Github

Installation

You can install Embody BLE via pip:

$ pip install embody-ble

This adds embody-ble as a library, but also provides the CLI application with the same name.

Usage

A very basic example where you send a message request and get a response:

from embodyble.embodyble import EmbodyBle
from embodyserial.helpers import EmbodySendHelper

embody_ble = EmbodyBle()
send_helper = EmbodySendHelper(sender=embody_ble)
embody_ble.connect()
print(f"Serial no: {send_helper.get_serial_no()}")
embody_ble.shutdown()

If you want to see more of what happens under the hood, activate debug logging before setting up EmbodyBle:

import logging

logging.basicConfig(level=logging.DEBUG)

Using the application from the command line

The application also provides a CLI application that is automatically added to the path when installing via pip.

Once installed with pip, type:

embody-ble --help

To see which options are available.

Note The serial port is automatically detected, but can be overridden by using the --device option.

Example - Attribute reporting

To see how attribute reporting can be configured, have a look at the example in examples/ble_reporting_example.py

You can also test attribute reporting using the cli:

embody-ble --log-level INFO --report-attribute battery_level --report-interval 1
embody-ble --log-level INFO --report-attribute heart_rate --report-interval 1000

Example - List all available EmBody devices

embody-ble --list-devices

Example - List all attribute values

embody-ble --get-all

Example - Get serial no of device

embody-ble --get serialno

Example - List files over serial port

embody-ble --list-files

Example - Set time current time (UTC)

embody-ble --set-time

Troubleshooting

No known issues registered.

Contributing

Contributions are very welcome. To learn more, see the Contributor Guide.

Issues

If you encounter any problems, please file an issue along with a detailed description.