Python wrapper for controlling devices managed by HomeCom Easy APP.
Project description
homecom-alt
Async Python wrapper for controlling Bosch Thermotechnology devices managed by the HomeCom Easy app. Communicates with the pointt-api.bosch-thermotechnology.com REST API using OAuth2 (SingleKey ID) authentication.
Installation
pip install homecom_alt
Device support
| Device type | Class | Data model |
|---|---|---|
rac |
HomeComRac |
BHCDeviceRac |
k40 / k30 |
HomeComK40 |
BHCDeviceK40 |
icom |
HomeComIcom |
BHCDeviceIcom |
rrc2 |
HomeComRrc2 |
BHCDeviceRrc2 |
wddw2 |
HomeComWddw2 |
BHCDeviceWddw2 |
commodule |
HomeComCommodule |
BHCDeviceCommodule |
generic |
HomeComGeneric |
BHCDeviceGeneric |
bacon_rac |
HomeComBaconRac |
BHCDeviceBaconRac |
Matter-commissioned ACs (Bacon)
Bosch Climate ACs commissioned over Matter in the HomeCom Easy app (serials
like 86DM-580-…) are not pointt gateways, so they never appear in
HomeComAlt.async_get_devices(). They are managed by Bosch's bacon backend and
controlled through an AWS-IoT-style device shadow over MQTT 5 (WebSocket),
which requires the extra paho-mqtt dependency (installed automatically).
- Discover them with
async_get_bacon_devices(session, token, region)— returns the same{"deviceId", "deviceType": "bacon_rac"}shape as the REST discovery. - Open one shared
BaconMqttClientper account (async_connect(token, sub)), then wrap each serial in aHomeComBaconRacforasync_update()and theasync_set_power/async_set_mode/async_set_temperature/async_set_fan/async_set_swingcontrols. - The region defaults to
euc1(eu-central-1);use1also exists.
Authentication
ConnectionOptions supports two auth flows:
- OAuth2 code flow (recommended): provide
usernameandcodeobtained from the SingleKey ID authorization endpoint, and setauth_provider=Truewhen callingHomeComAlt.create(). - Token reuse: provide an existing
tokenand optionallyrefresh_tokento skip the login step.
The brand field defaults to "bosch" — use "buderus" for Buderus-branded devices.
Usage
See example.py for a full working example.
Error handling
| Exception | Raised when |
|---|---|
AuthFailedError |
OAuth2 authentication fails |
ApiError |
API returns an error response |
NotRespondingError |
Device does not respond (retried up to 5 times with exponential backoff) |
InvalidSensorDataError |
Sensor data cannot be parsed |
All exceptions inherit from BhcError.
Development
uv is required. Install it once, then:
git clone https://github.com/serbanb11/homecom_alt.git
cd homecom_alt
uv sync --group dev
uv run pre-commit install
Run the checks:
uv run pytest --timeout=30 --cov=homecom_alt tests/ # tests
uv run ruff check . && uv run ruff format --check . # lint
uv run mypy homecom_alt # types
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file homecom_alt-1.7.0.tar.gz.
File metadata
- Download URL: homecom_alt-1.7.0.tar.gz
- Upload date:
- Size: 35.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4364f3d49a7b2b89c07e24ad5e0e9598f8759c39cfe2a93e39cee9646821fa04
|
|
| MD5 |
5627671030a555b9b455a0524759ab13
|
|
| BLAKE2b-256 |
857455a5cfa55bb721be37d862258b3fcd408ff23f070a5336550aca5f02e7a1
|
File details
Details for the file homecom_alt-1.7.0-py3-none-any.whl.
File metadata
- Download URL: homecom_alt-1.7.0-py3-none-any.whl
- Upload date:
- Size: 42.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
12a1bb318dabe64f258a4840d966e10d20dda8dfc8edf4d061caaccd01aa6fec
|
|
| MD5 |
acb33a3739236bde8eebd15dd6da36b9
|
|
| BLAKE2b-256 |
6c7718ea6e9749d9db19287fd9b454b0043316f88ae57b14d3ba485f2e8ff29a
|