Warning
Work in Progress: This library is currently in early development and is not considered production-ready. Use it with caution and expect potential breaking changes.
A Python library implementing the Becker Centronic Plus USB protocol using asyncio. This library was designed to be used in this custom Home Assistant integration to control Centronic Plus devices via a Becker Centronic Plus USB stick (ordering codes 4036 200 001 0 or 4036 000 009 0).
Important
This integration does not work with the older non-Plus Centronic USB sticks (4035 200 041 0 or 4035 000 041 0)!
- Async-first: Built on serialx for high-performance, non-blocking I/O
- Device Registry: Automatically tracks device states (position, status bits, names).
- Global Discovery: Support for automated mesh-wide status and info requests.
- Activity Polling: Optional status updates while devices are moving or recovering.
- Currently only tested with roller shutter drives of the C01 PLUS series.
- It likely does not yet support the EVO 20 R PLUS series or sun protection drives of the Cxx PLUS series.
- Does not support pairing the Becker USB stick with covers or performing initial commissioning. This functionality is not yet implemented to ensure setup reliability.
Tip
Pairing and initial commissioning (e.g., setting end-stop positions) can be performed using a computer or mobile device with the Becker Tool app, available on the Microsoft Store, Google Play Store, and Apple App Store.
Caution
Configuring end-stops is a critical task. Incorrect settings can lead to hardware damage. It is your responsibility to ensure you follow the manufacturer's instructions or consider hiring a professional installer.
For detailed information about the communication protocol, see the Protocol Description.
You can test your USB stick directly from the command line:
# Run the monitor tool (Linux)
python tools/cli.py /dev/ttyUSB0
# Run the monitor tool (Windows)
python tools/cli.py COM3- Install uv if you haven't already.
- Clone the repository and run:
uv sync --all-groupsThis automatically installs the correct Python version, creates a virtual environment, and installs all core and development dependencies.
Run these before committing changes:
uv run ruff format
uv run ruff check --fix
uv run ty check
uv run pytestWhen publishing a new version:
- Update version in
pyproject.tomland__init__.py. - Run the developer checks above.
- Update the package:
uv sync- Commit the version bump using a clear message, for example
bump version. - Create and push an annotated tag, e.g.:
git tag -a v0.2.4 -m "Release v0.2.4"
git push origin --tags