homecom_alt 1.6.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,94 @@
1
+ Metadata-Version: 2.3
2
+ Name: homecom_alt
3
+ Version: 1.6.4
4
+ Summary: Python wrapper for controlling devices managed by HomeCom Easy APP.
5
+ Author: serbanb11
6
+ License: MIT
7
+ Classifier: Development Status :: 3 - Alpha
8
+ Classifier: License :: OSI Approved :: MIT License
9
+ Classifier: Operating System :: OS Independent
10
+ Classifier: Programming Language :: Python
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.12
13
+ Classifier: Programming Language :: Python :: 3.13
14
+ Classifier: Programming Language :: Python :: 3 :: Only
15
+ Classifier: Typing :: Typed
16
+ Requires-Dist: aiohttp>=3.9.4
17
+ Requires-Dist: pyjwt>=2.1.0
18
+ Requires-Dist: tenacity
19
+ Requires-Python: >=3.12
20
+ Project-URL: Homepage, https://github.com/serbanb11/homecom_alt
21
+ Description-Content-Type: text/markdown
22
+
23
+ # homecom-alt
24
+
25
+ [![PyPI version](https://img.shields.io/pypi/v/homecom_alt)](https://pypi.org/project/homecom_alt/)
26
+ [![Python](https://img.shields.io/pypi/pyversions/homecom_alt)](https://pypi.org/project/homecom_alt/)
27
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
28
+
29
+ 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.
30
+
31
+ ## Installation
32
+
33
+ ```bash
34
+ pip install homecom_alt
35
+ ```
36
+
37
+ ## Device support
38
+
39
+ | Device type | Class | Data model |
40
+ |---|---|---|
41
+ | `rac` | `HomeComRac` | `BHCDeviceRac` |
42
+ | `k40` / `k30` | `HomeComK40` | `BHCDeviceK40` |
43
+ | `icom` | `HomeComIcom` | `BHCDeviceIcom` |
44
+ | `rrc2` | `HomeComRrc2` | `BHCDeviceRrc2` |
45
+ | `wddw2` | `HomeComWddw2` | `BHCDeviceWddw2` |
46
+ | `commodule` | `HomeComCommodule` | `BHCDeviceCommodule` |
47
+ | `generic` | `HomeComGeneric` | `BHCDeviceGeneric` |
48
+
49
+ ## Authentication
50
+
51
+ `ConnectionOptions` supports two auth flows:
52
+
53
+ - **OAuth2 code flow** (recommended): provide `username` and `code` obtained from the SingleKey ID authorization endpoint, and set `auth_provider=True` when calling `HomeComAlt.create()`.
54
+ - **Token reuse**: provide an existing `token` and optionally `refresh_token` to skip the login step.
55
+
56
+ The `brand` field defaults to `"bosch"` — use `"buderus"` for Buderus-branded devices.
57
+
58
+ ## Usage
59
+
60
+ See [example.py](example.py) for a full working example.
61
+
62
+ ## Error handling
63
+
64
+ | Exception | Raised when |
65
+ |---|---|
66
+ | `AuthFailedError` | OAuth2 authentication fails |
67
+ | `ApiError` | API returns an error response |
68
+ | `NotRespondingError` | Device does not respond (retried up to 5 times with exponential backoff) |
69
+ | `InvalidSensorDataError` | Sensor data cannot be parsed |
70
+
71
+ All exceptions inherit from `BhcError`.
72
+
73
+ ## Development
74
+
75
+ [uv](https://docs.astral.sh/uv/) is required. Install it once, then:
76
+
77
+ ```bash
78
+ git clone https://github.com/serbanb11/homecom_alt.git
79
+ cd homecom_alt
80
+ uv sync --group dev
81
+ uv run pre-commit install
82
+ ```
83
+
84
+ Run the checks:
85
+
86
+ ```bash
87
+ uv run pytest --timeout=30 --cov=homecom_alt tests/ # tests
88
+ uv run ruff check . && uv run ruff format --check . # lint
89
+ uv run mypy homecom_alt # types
90
+ ```
91
+
92
+ ## License
93
+
94
+ MIT
@@ -0,0 +1,72 @@
1
+ # homecom-alt
2
+
3
+ [![PyPI version](https://img.shields.io/pypi/v/homecom_alt)](https://pypi.org/project/homecom_alt/)
4
+ [![Python](https://img.shields.io/pypi/pyversions/homecom_alt)](https://pypi.org/project/homecom_alt/)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
6
+
7
+ 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.
8
+
9
+ ## Installation
10
+
11
+ ```bash
12
+ pip install homecom_alt
13
+ ```
14
+
15
+ ## Device support
16
+
17
+ | Device type | Class | Data model |
18
+ |---|---|---|
19
+ | `rac` | `HomeComRac` | `BHCDeviceRac` |
20
+ | `k40` / `k30` | `HomeComK40` | `BHCDeviceK40` |
21
+ | `icom` | `HomeComIcom` | `BHCDeviceIcom` |
22
+ | `rrc2` | `HomeComRrc2` | `BHCDeviceRrc2` |
23
+ | `wddw2` | `HomeComWddw2` | `BHCDeviceWddw2` |
24
+ | `commodule` | `HomeComCommodule` | `BHCDeviceCommodule` |
25
+ | `generic` | `HomeComGeneric` | `BHCDeviceGeneric` |
26
+
27
+ ## Authentication
28
+
29
+ `ConnectionOptions` supports two auth flows:
30
+
31
+ - **OAuth2 code flow** (recommended): provide `username` and `code` obtained from the SingleKey ID authorization endpoint, and set `auth_provider=True` when calling `HomeComAlt.create()`.
32
+ - **Token reuse**: provide an existing `token` and optionally `refresh_token` to skip the login step.
33
+
34
+ The `brand` field defaults to `"bosch"` — use `"buderus"` for Buderus-branded devices.
35
+
36
+ ## Usage
37
+
38
+ See [example.py](example.py) for a full working example.
39
+
40
+ ## Error handling
41
+
42
+ | Exception | Raised when |
43
+ |---|---|
44
+ | `AuthFailedError` | OAuth2 authentication fails |
45
+ | `ApiError` | API returns an error response |
46
+ | `NotRespondingError` | Device does not respond (retried up to 5 times with exponential backoff) |
47
+ | `InvalidSensorDataError` | Sensor data cannot be parsed |
48
+
49
+ All exceptions inherit from `BhcError`.
50
+
51
+ ## Development
52
+
53
+ [uv](https://docs.astral.sh/uv/) is required. Install it once, then:
54
+
55
+ ```bash
56
+ git clone https://github.com/serbanb11/homecom_alt.git
57
+ cd homecom_alt
58
+ uv sync --group dev
59
+ uv run pre-commit install
60
+ ```
61
+
62
+ Run the checks:
63
+
64
+ ```bash
65
+ uv run pytest --timeout=30 --cov=homecom_alt tests/ # tests
66
+ uv run ruff check . && uv run ruff format --check . # lint
67
+ uv run mypy homecom_alt # types
68
+ ```
69
+
70
+ ## License
71
+
72
+ MIT
@@ -0,0 +1,53 @@
1
+ """Python wrapper for controlling homecom easy devices."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from .base import HomeComAlt
6
+ from .commodule import HomeComCommodule
7
+ from .exceptions import (
8
+ ApiError,
9
+ AuthFailedError,
10
+ BhcError,
11
+ InvalidSensorDataError,
12
+ NotRespondingError,
13
+ )
14
+ from .generic import HomeComGeneric
15
+ from .icom import HomeComIcom
16
+ from .k40 import HomeComK40
17
+ from .model import (
18
+ BHCDeviceCommodule,
19
+ BHCDeviceGeneric,
20
+ BHCDeviceIcom,
21
+ BHCDeviceK40,
22
+ BHCDeviceRac,
23
+ BHCDeviceRrc2,
24
+ BHCDeviceWddw2,
25
+ ConnectionOptions,
26
+ )
27
+ from .rac import HomeComRac
28
+ from .rrc2 import HomeComRrc2
29
+ from .wddw2 import HomeComWddw2
30
+
31
+ __all__ = [
32
+ "ApiError",
33
+ "AuthFailedError",
34
+ "BHCDeviceCommodule",
35
+ "BHCDeviceGeneric",
36
+ "BHCDeviceIcom",
37
+ "BHCDeviceK40",
38
+ "BHCDeviceRac",
39
+ "BHCDeviceRrc2",
40
+ "BHCDeviceWddw2",
41
+ "BhcError",
42
+ "ConnectionOptions",
43
+ "HomeComAlt",
44
+ "HomeComCommodule",
45
+ "HomeComGeneric",
46
+ "HomeComIcom",
47
+ "HomeComK40",
48
+ "HomeComRac",
49
+ "HomeComRrc2",
50
+ "HomeComWddw2",
51
+ "InvalidSensorDataError",
52
+ "NotRespondingError",
53
+ ]