- 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
- Python 3.9-3.11
- Access to private Aidee Health repositories on Github
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.
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)
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.
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
embody-ble --list-devices
embody-ble --get-all
embody-ble --get serialno
embody-ble --list-files
embody-ble --set-time
No known issues registered.
Contributions are very welcome. To learn more, see the Contributor Guide.
If you encounter any problems, please file an issue along with a detailed description.