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
Metadata
Release files for homecom_alt 1.7.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| homecom_alt-1.7.1.tar.gz | 42.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| homecom_alt-1.7.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 90.9 kB
Release files / homecom_alt-1.7.1.tar.gz
| Download URL | homecom_alt-1.7.1.tar.gz |
|---|---|
| Size | 42.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d8fec3b3e6a04510b814c11c45ce36b083c0dd8925b42008d8bb367b912c0dea
|
|
BLAKE2b-256 checksum How to use checksums |
4897b430ce249cefd687fa9d00cfa5d6abb9828ebec91e853f9d56e606d63665
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","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 / homecom_alt-1.7.1-py3-none-any.whl
| Download URL | homecom_alt-1.7.1-py3-none-any.whl |
|---|---|
| Size | 48.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9a10dd27e9b9dc68664286425f0b0db372347ff464ea02f9142491aac5ab3240
|
|
BLAKE2b-256 checksum How to use checksums |
42d8f8ceb4df140c333a0a1fc6e812409d34e0b113a416dee4eca3a8fa7b9fb4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","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}
|
Security for homecom_alt 1.7.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.