ENTR BLE
Your ENTR lock, over Bluetooth. A Python library, a command-line interface, and a Home Assistant integration sharing the same protocol implementation.
Choose your starting point
| Use ENTR BLE to… | Start here | Component |
|---|---|---|
| Control a lock from dashboards and automations | Home Assistant guide | HACS custom integration |
| Set up a lock, manage keys, or control it from a terminal | CLI guide | entr-ble-cli command |
| Build your own application | Python library guide | entr-ble → EntrLockClient |
The library is independent of the CLI and Home Assistant. Both frontends use its asynchronous API for pairing, encrypted sessions, and lock operations.
What you can do
- Discover nearby locks and initialize a new lock or recover owner access.
- Lock and unlock, read battery and reported door/lock status.
- Create, activate, suspend, and revoke user keys.
- Change settings, calibrate the lock and magnet, and read diagnostics on supported firmware.
- Import CLI credentials into Home Assistant without enrolling again.
See feature coverage for the complete command matrix and firmware requirements, and protocol notes for the underlying BLE protocol.
Before you start
The Python packages require Python 3.14+ and a working Bluetooth adapter; the HACS integration requires Home Assistant 2026.9.3+ and connectable Bluetooth coverage.
ENTR has a single owner slot. Recovering ownership replaces the previous owner's credential. To keep the mobile app as owner, redeem an additional user key instead. Each component's guide explains the choice before setup.
Hardware observations come from an ENTR EURO with communication version 1.29r5. Firmware support varies, and reported state can be stale after manual operation. This is an independent project, unaffiliated with ASSA ABLOY.
Development
This repository is a uv workspace:
src/entr_ble/ Python library
packages/entr-ble-cli/ CLI and local credential store
custom_components/entr_ble/ Home Assistant integration
docs/ Feature coverage and protocol reference
From the repository root, install all packages and the isolated Home Assistant development dependencies. The full suite requires Python 3.14.2+.
uv sync --locked --all-packages --group hacs
uv run --no-sync ruff check .
uv run --no-sync ruff format --check .
uv run --no-sync basedpyright
uv run --no-sync python -m unittest discover -s tests -v
uv run --no-sync python -m unittest discover -s packages/entr-ble-cli/tests -v
uv build --all-packages --no-sources
Tests simulate BLE responses and do not operate a physical lock. The CI workflow also validates the integration with Hassfest and HACS. Builds produce separate library and CLI wheels and source distributions in dist/; hardware behavior still needs verification on the target lock.
Releases
All components release together with one version and changelog. Release Please prepares a release PR; merging it runs the checks, publishes both Python packages to PyPI, and publishes the matching GitHub release for HACS. See release setup and recovery.
Support and license
Report an issue with the component, software version, lock model, communication version if known, and the command or action that failed. Remove credentials and passwords from anything you share.
Licensed under the MIT License.
Metadata
Release files for entr-ble 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| entr_ble-1.0.0.tar.gz | 27.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| entr_ble-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 63.6 kB
Release files / entr_ble-1.0.0.tar.gz
| Download URL | entr_ble-1.0.0.tar.gz |
|---|---|
| Size | 27.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fb41fb7a42cc33073e32b7eeb6517ca5a439b74807c92476192f589ad9054447
|
|
BLAKE2b-256 checksum How to use checksums |
bbb4fb34ced4d19c5e60b7a60d04bf8fb284555ccc01ecfae48e8f50beb429c5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / entr_ble-1.0.0-py3-none-any.whl
| Download URL | entr_ble-1.0.0-py3-none-any.whl |
|---|---|
| Size | 36.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
99034d5fee4620cbe4836c61a3baf6ab107f11530f7aeafc7beacc63449431f6
|
|
BLAKE2b-256 checksum How to use checksums |
06eb0f57275dd45316163c99a08c5eb552eb53f79f5a552e92afaf193a9ee81c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|