Embody BLE
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.