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.
- homecom_alt-1.6.4/PKG-INFO +94 -0
- homecom_alt-1.6.4/README.md +72 -0
- homecom_alt-1.6.4/homecom_alt/__init__.py +53 -0
- homecom_alt-1.6.4/homecom_alt/base.py +532 -0
- homecom_alt-1.6.4/homecom_alt/commodule.py +431 -0
- homecom_alt-1.6.4/homecom_alt/const.py +332 -0
- homecom_alt-1.6.4/homecom_alt/exceptions.py +26 -0
- homecom_alt-1.6.4/homecom_alt/generic.py +42 -0
- homecom_alt-1.6.4/homecom_alt/icom.py +586 -0
- homecom_alt-1.6.4/homecom_alt/k40.py +2393 -0
- homecom_alt-1.6.4/homecom_alt/model.py +131 -0
- homecom_alt-1.6.4/homecom_alt/py.typed +0 -0
- homecom_alt-1.6.4/homecom_alt/rac.py +315 -0
- homecom_alt-1.6.4/homecom_alt/rrc2.py +665 -0
- homecom_alt-1.6.4/homecom_alt/wddw2.py +297 -0
- homecom_alt-1.6.4/pyproject.toml +120 -0
|
@@ -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
|
+
[](https://pypi.org/project/homecom_alt/)
|
|
26
|
+
[](https://pypi.org/project/homecom_alt/)
|
|
27
|
+
[](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
|
+
[](https://pypi.org/project/homecom_alt/)
|
|
4
|
+
[](https://pypi.org/project/homecom_alt/)
|
|
5
|
+
[](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
|
+
]
|