idm-heatpump-api 0.3.0__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.
- idm_heatpump_api-0.3.0/LICENSE +21 -0
- idm_heatpump_api-0.3.0/PKG-INFO +199 -0
- idm_heatpump_api-0.3.0/README.md +166 -0
- idm_heatpump_api-0.3.0/idm_heatpump/__init__.py +97 -0
- idm_heatpump_api-0.3.0/idm_heatpump/client.py +771 -0
- idm_heatpump_api-0.3.0/idm_heatpump/const.py +170 -0
- idm_heatpump_api-0.3.0/idm_heatpump/registers.py +1477 -0
- idm_heatpump_api-0.3.0/idm_heatpump_api.egg-info/PKG-INFO +199 -0
- idm_heatpump_api-0.3.0/idm_heatpump_api.egg-info/SOURCES.txt +12 -0
- idm_heatpump_api-0.3.0/idm_heatpump_api.egg-info/dependency_links.txt +1 -0
- idm_heatpump_api-0.3.0/idm_heatpump_api.egg-info/requires.txt +5 -0
- idm_heatpump_api-0.3.0/idm_heatpump_api.egg-info/top_level.txt +1 -0
- idm_heatpump_api-0.3.0/pyproject.toml +51 -0
- idm_heatpump_api-0.3.0/setup.cfg +4 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Basti
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: idm-heatpump-api
|
|
3
|
+
Version: 0.3.0
|
|
4
|
+
Summary: Python library for communicating with IDM Navigator heat pumps via Modbus TCP. Used by the official Home Assistant integration.
|
|
5
|
+
Author-email: "Basti (Xerolux)" <git@xerolux.de>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/Xerolux/idm-heatpump-api
|
|
8
|
+
Project-URL: Bug Tracker, https://github.com/Xerolux/idm-heatpump-api/issues
|
|
9
|
+
Project-URL: Changelog, https://github.com/Xerolux/idm-heatpump-api/blob/main/CHANGELOG.md
|
|
10
|
+
Project-URL: License, https://opensource.org/licenses/MIT
|
|
11
|
+
Project-URL: Sponsor on GitHub, https://github.com/sponsors/Xerolux
|
|
12
|
+
Project-URL: Ko-fi, https://ko-fi.com/xerolux
|
|
13
|
+
Project-URL: Buy Me a Coffee, https://www.buymeacoffee.com/xerolux
|
|
14
|
+
Project-URL: PayPal, https://paypal.me/xerolux
|
|
15
|
+
Keywords: idm,heatpump,modbus,navigator,home-assistant,hass,heating,modbus-tcp
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Operating System :: OS Independent
|
|
20
|
+
Classifier: Intended Audience :: Developers
|
|
21
|
+
Classifier: Topic :: Home Automation
|
|
22
|
+
Classifier: Topic :: System :: Hardware
|
|
23
|
+
Classifier: Framework :: AsyncIO
|
|
24
|
+
Classifier: Development Status :: 4 - Beta
|
|
25
|
+
Requires-Python: >=3.12
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
License-File: LICENSE
|
|
28
|
+
Requires-Dist: pymodbus<4.0.0,>=3.7.0
|
|
29
|
+
Provides-Extra: test
|
|
30
|
+
Requires-Dist: pytest>=8.0; extra == "test"
|
|
31
|
+
Requires-Dist: pytest-asyncio>=0.24; extra == "test"
|
|
32
|
+
Dynamic: license-file
|
|
33
|
+
|
|
34
|
+
# IDM Heatpump API
|
|
35
|
+
|
|
36
|
+
[](https://pypi.org/project/idm-heatpump-api/)
|
|
37
|
+
[](https://pypistats.org/packages/idm-heatpump-api)
|
|
38
|
+
[](https://pypi.org/project/idm-heatpump-api/)
|
|
39
|
+
[](LICENSE)
|
|
40
|
+
|
|
41
|
+
[](https://github.com/sponsors/xerolux)
|
|
42
|
+
[](https://ko-fi.com/xerolux)
|
|
43
|
+
[](https://www.buymeacoffee.com/xerolux)
|
|
44
|
+
[](https://paypal.me/xerolux)
|
|
45
|
+
[](https://ts.la/sebastian564489)
|
|
46
|
+
|
|
47
|
+
An asynchronous Python library for communicating with **IDM Navigator heat pumps** (2.0, Pro, and Navigator 10) over Modbus TCP.
|
|
48
|
+
|
|
49
|
+
This library is primarily designed to power the official [IDM Heatpump Home Assistant Integration](https://github.com/Xerolux/idm-heatpump-hass), but it can be used independently for any Python project that needs to monitor or control an IDM heat pump.
|
|
50
|
+
|
|
51
|
+
> **Documentation:**
|
|
52
|
+
> - GitHub Pages: https://xerolux.github.io/idm-heatpump-api/
|
|
53
|
+
> - GitHub Wiki: https://github.com/Xerolux/idm-heatpump-api/wiki
|
|
54
|
+
> - PyPI: https://pypi.org/project/idm-heatpump-api/
|
|
55
|
+
>
|
|
56
|
+
> The `docs/` directory is the single source of truth and is used for both GitHub Pages and Wiki sync.
|
|
57
|
+
|
|
58
|
+
## Features
|
|
59
|
+
|
|
60
|
+
* **Asynchronous:** Fully async operations using `pymodbus` with automatic reconnection.
|
|
61
|
+
* **Auto-Detection:** Probes registers to detect the controller model, active heating circuits, zone modules, solar, ISC, PV, and cascade.
|
|
62
|
+
* **Comprehensive Register Map:** 100+ registers covering temperatures, energy, status, heating circuits (A-G), zone modules, solar, ISC, cascade, boosters, and more.
|
|
63
|
+
* **Batch Reads:** Intelligent grouping and batching of register reads for maximum efficiency.
|
|
64
|
+
* **Resilient:** Configurable retries with exponential backoff and permanent failure tracking for unavailable registers.
|
|
65
|
+
* **Write Support:** Safe register writes with validation, min/max bounds, and EEPROM-sensitive write protection.
|
|
66
|
+
* **Metadata:** Each register includes `binary`, `state_class`, `icon`, `enabled_by_default`, `write_only`, and `exclude_from_write` metadata for direct Home Assistant entity mapping.
|
|
67
|
+
|
|
68
|
+
## Supported Devices
|
|
69
|
+
|
|
70
|
+
| Device | Firmware | Heating Circuits | Zone Modules | Status |
|
|
71
|
+
|-------|----------|------------|-------------|--------|
|
|
72
|
+
| IDM Navigator 10 | NAV10_20.23+ (2025) | up to 7 (A-G) | up to 10 (6 rooms each) | Confirmed |
|
|
73
|
+
| IDM Navigator 2.0 | all versions | up to 7 (A-G) | no | Confirmed |
|
|
74
|
+
| IDM Navigator Pro | all versions | up to 7 (A-G) | up to 10 (6 rooms each) | Confirmed |
|
|
75
|
+
|
|
76
|
+
## Requirements
|
|
77
|
+
|
|
78
|
+
- Modbus TCP must be enabled on the IDM controller (Settings -> Building Management -> Modbus TCP = On).
|
|
79
|
+
- Default port: `502`
|
|
80
|
+
- Default slave ID: `1`
|
|
81
|
+
- Python 3.12+
|
|
82
|
+
|
|
83
|
+
## Installation
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
pip install idm-heatpump-api
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Basic Usage
|
|
90
|
+
|
|
91
|
+
```python
|
|
92
|
+
import asyncio
|
|
93
|
+
from idm_heatpump import IdmModbusClient, build_register_map
|
|
94
|
+
|
|
95
|
+
async def main():
|
|
96
|
+
client = IdmModbusClient(host="192.168.1.100", port=502, slave_id=1)
|
|
97
|
+
|
|
98
|
+
try:
|
|
99
|
+
await client.connect()
|
|
100
|
+
|
|
101
|
+
# Auto-detect model and capabilities
|
|
102
|
+
model_info = await client.detect_model()
|
|
103
|
+
print(f"Detected: {model_info.model_name}")
|
|
104
|
+
print(f"Circuits: {model_info.active_heating_circuits}")
|
|
105
|
+
print(f"Solar: {model_info.has_solar}, ISC: {model_info.has_isc}")
|
|
106
|
+
|
|
107
|
+
# Build register map based on detected model
|
|
108
|
+
registers = build_register_map(model_info=model_info)
|
|
109
|
+
|
|
110
|
+
# Read all registers in efficient batches
|
|
111
|
+
values = await client.read_batch(list(registers.values()))
|
|
112
|
+
|
|
113
|
+
for name, value in sorted(values.items()):
|
|
114
|
+
reg = registers[name]
|
|
115
|
+
unit = f" {reg.unit}" if reg.unit else ""
|
|
116
|
+
print(f" {name}: {value}{unit}")
|
|
117
|
+
|
|
118
|
+
# Write a register (e.g. set DHW target temperature)
|
|
119
|
+
if "dhw_setpoint" in registers:
|
|
120
|
+
await client.write_register(registers["dhw_setpoint"], 48)
|
|
121
|
+
|
|
122
|
+
finally:
|
|
123
|
+
await client.disconnect()
|
|
124
|
+
|
|
125
|
+
if __name__ == "__main__":
|
|
126
|
+
asyncio.run(main())
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Advanced Usage
|
|
130
|
+
|
|
131
|
+
The library provides fine-grained control for advanced scenarios:
|
|
132
|
+
|
|
133
|
+
- `build_register_map(circuits=["A", "B"], zone_modules=2, rooms_per_zone=4)`: Manual register map without auto-detection.
|
|
134
|
+
- `get_heating_circuit_registers("A")`: Registers for a single heating circuit.
|
|
135
|
+
- `get_zone_module_registers(zone_index=1, room_count=6)`: Registers for a single zone module.
|
|
136
|
+
- `client.probe_register(address=1850, count=2)`: Probe a single register without affecting failure tracking.
|
|
137
|
+
- `client.reset_failed_registers()`: Retry permanently failed registers.
|
|
138
|
+
|
|
139
|
+
Register metadata for HA integration mapping:
|
|
140
|
+
|
|
141
|
+
```python
|
|
142
|
+
reg = registers["compressor_status_1"]
|
|
143
|
+
print(reg.binary) # True -> BinarySensor
|
|
144
|
+
print(reg.writable) # False
|
|
145
|
+
print(reg.write_only) # False
|
|
146
|
+
print(reg.enabled_by_default) # True
|
|
147
|
+
print(reg.state_class) # None (or "measurement", "total_increasing")
|
|
148
|
+
print(reg.icon) # None (or "mdi:thermometer")
|
|
149
|
+
print(reg.exclude_from_write) # None (or {255})
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## Navigator 10 Support
|
|
153
|
+
|
|
154
|
+
The library fully covers the official 2025 Navigator 10 Modbus TCP specification, including:
|
|
155
|
+
|
|
156
|
+
- Heat sink / plate heat exchanger sensors (flow rate in l/min at 1072)
|
|
157
|
+
- Power limitation registers (4108 / 4112) for demand response / peak shaving
|
|
158
|
+
- Complete Booster A + B (second heat generator) monitoring
|
|
159
|
+
- Additional source pump faults and external pump demand control
|
|
160
|
+
- Groundwater temperatures and more cascade bivalence points
|
|
161
|
+
- All zone module rooms (6 rooms per module on current hardware)
|
|
162
|
+
- PV / energy management, solar thermal, and ISC (Intelligent Surface Cooling)
|
|
163
|
+
- Cascade temperatures and bivalence points
|
|
164
|
+
|
|
165
|
+
## Contributing
|
|
166
|
+
|
|
167
|
+
Please open an issue or pull request for bug reports, improvements, and documentation updates.
|
|
168
|
+
|
|
169
|
+
## License
|
|
170
|
+
|
|
171
|
+
MIT License — see [LICENSE](LICENSE).
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Support
|
|
176
|
+
|
|
177
|
+
This library is developed in my spare time. If you find it useful, consider supporting:
|
|
178
|
+
|
|
179
|
+
[](https://github.com/sponsors/xerolux)
|
|
180
|
+
[](https://ko-fi.com/xerolux)
|
|
181
|
+
[](https://www.buymeacoffee.com/xerolux)
|
|
182
|
+
[](https://paypal.me/xerolux)
|
|
183
|
+
[](https://ts.la/sebastian564489)
|
|
184
|
+
|
|
185
|
+
- Star the repository on GitHub
|
|
186
|
+
- [Report bugs](https://github.com/Xerolux/idm-heatpump-api/issues)
|
|
187
|
+
- Share with other IDM heat pump owners
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## Disclaimer
|
|
192
|
+
|
|
193
|
+
This project is an **unofficial community project** and is not affiliated with, endorsed by, or connected to IDM Energiesysteme GmbH.
|
|
194
|
+
|
|
195
|
+
All trademarks, logos, and product names (e.g., "IDM", "Navigator") are property of their respective owners. The logos and images used are solely for identifying the compatible device and are not used commercially.
|
|
196
|
+
|
|
197
|
+
This project is provided without any warranty. Use at your own risk — especially when writing Modbus registers.
|
|
198
|
+
|
|
199
|
+
IDM Energiesysteme GmbH has neither authorized nor endorsed this project.
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# IDM Heatpump API
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/idm-heatpump-api/)
|
|
4
|
+
[](https://pypistats.org/packages/idm-heatpump-api)
|
|
5
|
+
[](https://pypi.org/project/idm-heatpump-api/)
|
|
6
|
+
[](LICENSE)
|
|
7
|
+
|
|
8
|
+
[](https://github.com/sponsors/xerolux)
|
|
9
|
+
[](https://ko-fi.com/xerolux)
|
|
10
|
+
[](https://www.buymeacoffee.com/xerolux)
|
|
11
|
+
[](https://paypal.me/xerolux)
|
|
12
|
+
[](https://ts.la/sebastian564489)
|
|
13
|
+
|
|
14
|
+
An asynchronous Python library for communicating with **IDM Navigator heat pumps** (2.0, Pro, and Navigator 10) over Modbus TCP.
|
|
15
|
+
|
|
16
|
+
This library is primarily designed to power the official [IDM Heatpump Home Assistant Integration](https://github.com/Xerolux/idm-heatpump-hass), but it can be used independently for any Python project that needs to monitor or control an IDM heat pump.
|
|
17
|
+
|
|
18
|
+
> **Documentation:**
|
|
19
|
+
> - GitHub Pages: https://xerolux.github.io/idm-heatpump-api/
|
|
20
|
+
> - GitHub Wiki: https://github.com/Xerolux/idm-heatpump-api/wiki
|
|
21
|
+
> - PyPI: https://pypi.org/project/idm-heatpump-api/
|
|
22
|
+
>
|
|
23
|
+
> The `docs/` directory is the single source of truth and is used for both GitHub Pages and Wiki sync.
|
|
24
|
+
|
|
25
|
+
## Features
|
|
26
|
+
|
|
27
|
+
* **Asynchronous:** Fully async operations using `pymodbus` with automatic reconnection.
|
|
28
|
+
* **Auto-Detection:** Probes registers to detect the controller model, active heating circuits, zone modules, solar, ISC, PV, and cascade.
|
|
29
|
+
* **Comprehensive Register Map:** 100+ registers covering temperatures, energy, status, heating circuits (A-G), zone modules, solar, ISC, cascade, boosters, and more.
|
|
30
|
+
* **Batch Reads:** Intelligent grouping and batching of register reads for maximum efficiency.
|
|
31
|
+
* **Resilient:** Configurable retries with exponential backoff and permanent failure tracking for unavailable registers.
|
|
32
|
+
* **Write Support:** Safe register writes with validation, min/max bounds, and EEPROM-sensitive write protection.
|
|
33
|
+
* **Metadata:** Each register includes `binary`, `state_class`, `icon`, `enabled_by_default`, `write_only`, and `exclude_from_write` metadata for direct Home Assistant entity mapping.
|
|
34
|
+
|
|
35
|
+
## Supported Devices
|
|
36
|
+
|
|
37
|
+
| Device | Firmware | Heating Circuits | Zone Modules | Status |
|
|
38
|
+
|-------|----------|------------|-------------|--------|
|
|
39
|
+
| IDM Navigator 10 | NAV10_20.23+ (2025) | up to 7 (A-G) | up to 10 (6 rooms each) | Confirmed |
|
|
40
|
+
| IDM Navigator 2.0 | all versions | up to 7 (A-G) | no | Confirmed |
|
|
41
|
+
| IDM Navigator Pro | all versions | up to 7 (A-G) | up to 10 (6 rooms each) | Confirmed |
|
|
42
|
+
|
|
43
|
+
## Requirements
|
|
44
|
+
|
|
45
|
+
- Modbus TCP must be enabled on the IDM controller (Settings -> Building Management -> Modbus TCP = On).
|
|
46
|
+
- Default port: `502`
|
|
47
|
+
- Default slave ID: `1`
|
|
48
|
+
- Python 3.12+
|
|
49
|
+
|
|
50
|
+
## Installation
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
pip install idm-heatpump-api
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Basic Usage
|
|
57
|
+
|
|
58
|
+
```python
|
|
59
|
+
import asyncio
|
|
60
|
+
from idm_heatpump import IdmModbusClient, build_register_map
|
|
61
|
+
|
|
62
|
+
async def main():
|
|
63
|
+
client = IdmModbusClient(host="192.168.1.100", port=502, slave_id=1)
|
|
64
|
+
|
|
65
|
+
try:
|
|
66
|
+
await client.connect()
|
|
67
|
+
|
|
68
|
+
# Auto-detect model and capabilities
|
|
69
|
+
model_info = await client.detect_model()
|
|
70
|
+
print(f"Detected: {model_info.model_name}")
|
|
71
|
+
print(f"Circuits: {model_info.active_heating_circuits}")
|
|
72
|
+
print(f"Solar: {model_info.has_solar}, ISC: {model_info.has_isc}")
|
|
73
|
+
|
|
74
|
+
# Build register map based on detected model
|
|
75
|
+
registers = build_register_map(model_info=model_info)
|
|
76
|
+
|
|
77
|
+
# Read all registers in efficient batches
|
|
78
|
+
values = await client.read_batch(list(registers.values()))
|
|
79
|
+
|
|
80
|
+
for name, value in sorted(values.items()):
|
|
81
|
+
reg = registers[name]
|
|
82
|
+
unit = f" {reg.unit}" if reg.unit else ""
|
|
83
|
+
print(f" {name}: {value}{unit}")
|
|
84
|
+
|
|
85
|
+
# Write a register (e.g. set DHW target temperature)
|
|
86
|
+
if "dhw_setpoint" in registers:
|
|
87
|
+
await client.write_register(registers["dhw_setpoint"], 48)
|
|
88
|
+
|
|
89
|
+
finally:
|
|
90
|
+
await client.disconnect()
|
|
91
|
+
|
|
92
|
+
if __name__ == "__main__":
|
|
93
|
+
asyncio.run(main())
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Advanced Usage
|
|
97
|
+
|
|
98
|
+
The library provides fine-grained control for advanced scenarios:
|
|
99
|
+
|
|
100
|
+
- `build_register_map(circuits=["A", "B"], zone_modules=2, rooms_per_zone=4)`: Manual register map without auto-detection.
|
|
101
|
+
- `get_heating_circuit_registers("A")`: Registers for a single heating circuit.
|
|
102
|
+
- `get_zone_module_registers(zone_index=1, room_count=6)`: Registers for a single zone module.
|
|
103
|
+
- `client.probe_register(address=1850, count=2)`: Probe a single register without affecting failure tracking.
|
|
104
|
+
- `client.reset_failed_registers()`: Retry permanently failed registers.
|
|
105
|
+
|
|
106
|
+
Register metadata for HA integration mapping:
|
|
107
|
+
|
|
108
|
+
```python
|
|
109
|
+
reg = registers["compressor_status_1"]
|
|
110
|
+
print(reg.binary) # True -> BinarySensor
|
|
111
|
+
print(reg.writable) # False
|
|
112
|
+
print(reg.write_only) # False
|
|
113
|
+
print(reg.enabled_by_default) # True
|
|
114
|
+
print(reg.state_class) # None (or "measurement", "total_increasing")
|
|
115
|
+
print(reg.icon) # None (or "mdi:thermometer")
|
|
116
|
+
print(reg.exclude_from_write) # None (or {255})
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Navigator 10 Support
|
|
120
|
+
|
|
121
|
+
The library fully covers the official 2025 Navigator 10 Modbus TCP specification, including:
|
|
122
|
+
|
|
123
|
+
- Heat sink / plate heat exchanger sensors (flow rate in l/min at 1072)
|
|
124
|
+
- Power limitation registers (4108 / 4112) for demand response / peak shaving
|
|
125
|
+
- Complete Booster A + B (second heat generator) monitoring
|
|
126
|
+
- Additional source pump faults and external pump demand control
|
|
127
|
+
- Groundwater temperatures and more cascade bivalence points
|
|
128
|
+
- All zone module rooms (6 rooms per module on current hardware)
|
|
129
|
+
- PV / energy management, solar thermal, and ISC (Intelligent Surface Cooling)
|
|
130
|
+
- Cascade temperatures and bivalence points
|
|
131
|
+
|
|
132
|
+
## Contributing
|
|
133
|
+
|
|
134
|
+
Please open an issue or pull request for bug reports, improvements, and documentation updates.
|
|
135
|
+
|
|
136
|
+
## License
|
|
137
|
+
|
|
138
|
+
MIT License — see [LICENSE](LICENSE).
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Support
|
|
143
|
+
|
|
144
|
+
This library is developed in my spare time. If you find it useful, consider supporting:
|
|
145
|
+
|
|
146
|
+
[](https://github.com/sponsors/xerolux)
|
|
147
|
+
[](https://ko-fi.com/xerolux)
|
|
148
|
+
[](https://www.buymeacoffee.com/xerolux)
|
|
149
|
+
[](https://paypal.me/xerolux)
|
|
150
|
+
[](https://ts.la/sebastian564489)
|
|
151
|
+
|
|
152
|
+
- Star the repository on GitHub
|
|
153
|
+
- [Report bugs](https://github.com/Xerolux/idm-heatpump-api/issues)
|
|
154
|
+
- Share with other IDM heat pump owners
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Disclaimer
|
|
159
|
+
|
|
160
|
+
This project is an **unofficial community project** and is not affiliated with, endorsed by, or connected to IDM Energiesysteme GmbH.
|
|
161
|
+
|
|
162
|
+
All trademarks, logos, and product names (e.g., "IDM", "Navigator") are property of their respective owners. The logos and images used are solely for identifying the compatible device and are not used commercially.
|
|
163
|
+
|
|
164
|
+
This project is provided without any warranty. Use at your own risk — especially when writing Modbus registers.
|
|
165
|
+
|
|
166
|
+
IDM Energiesysteme GmbH has neither authorized nor endorsed this project.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"""Public API for idm-heatpump-api."""
|
|
2
|
+
|
|
3
|
+
from .client import (
|
|
4
|
+
DataType,
|
|
5
|
+
IdmModelInfo,
|
|
6
|
+
IdmModbusClient,
|
|
7
|
+
RegisterDef,
|
|
8
|
+
RegisterType,
|
|
9
|
+
)
|
|
10
|
+
from .const import (
|
|
11
|
+
ACTIVE_HC_MODE_OPTIONS,
|
|
12
|
+
BIVALENCE_STATE_OPTIONS,
|
|
13
|
+
BOOSTER_FAULT_OPTIONS,
|
|
14
|
+
CIRCUIT_MODE_OPTIONS,
|
|
15
|
+
DEFAULT_PORT,
|
|
16
|
+
DEFAULT_SLAVE_ID,
|
|
17
|
+
DEFAULT_TIMEOUT,
|
|
18
|
+
EEPROM_SENSITIVE_ADDRESSES,
|
|
19
|
+
FEATURE_CASCADE,
|
|
20
|
+
FEATURE_ISC,
|
|
21
|
+
FEATURE_PV,
|
|
22
|
+
FEATURE_SOLAR,
|
|
23
|
+
FEATURE_ZONE_MODULES,
|
|
24
|
+
HEATING_CIRCUIT_LETTERS,
|
|
25
|
+
HP_OPERATING_MODE_OPTIONS,
|
|
26
|
+
ISC_MODE_OPTIONS,
|
|
27
|
+
MAX_HEATING_CIRCUITS,
|
|
28
|
+
MAX_ROOMS_PER_ZONE,
|
|
29
|
+
MAX_RETRIES,
|
|
30
|
+
MAX_ZONE_MODULES,
|
|
31
|
+
MODEL_NAVIGATOR_10,
|
|
32
|
+
MODEL_NAVIGATOR_20,
|
|
33
|
+
MODEL_NAVIGATOR_PRO,
|
|
34
|
+
MODEL_UNKNOWN,
|
|
35
|
+
RETRY_BACKOFF_BASE,
|
|
36
|
+
ROOM_MODE_OPTIONS,
|
|
37
|
+
SMART_GRID_OPTIONS,
|
|
38
|
+
SOLAR_MODE_OPTIONS,
|
|
39
|
+
SYSTEM_MODE_OPTIONS,
|
|
40
|
+
UNUSED_VALUE,
|
|
41
|
+
ZONE_MODULE_MODE_OPTIONS,
|
|
42
|
+
)
|
|
43
|
+
from .registers import (
|
|
44
|
+
CORE_REGISTERS,
|
|
45
|
+
build_register_map,
|
|
46
|
+
get_all_registers,
|
|
47
|
+
get_detection_registers,
|
|
48
|
+
get_heating_circuit_registers,
|
|
49
|
+
get_register,
|
|
50
|
+
get_zone_module_registers,
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
__all__ = [
|
|
54
|
+
"ACTIVE_HC_MODE_OPTIONS",
|
|
55
|
+
"BIVALENCE_STATE_OPTIONS",
|
|
56
|
+
"BOOSTER_FAULT_OPTIONS",
|
|
57
|
+
"CIRCUIT_MODE_OPTIONS",
|
|
58
|
+
"CORE_REGISTERS",
|
|
59
|
+
"DEFAULT_PORT",
|
|
60
|
+
"DEFAULT_SLAVE_ID",
|
|
61
|
+
"DEFAULT_TIMEOUT",
|
|
62
|
+
"EEPROM_SENSITIVE_ADDRESSES",
|
|
63
|
+
"FEATURE_CASCADE",
|
|
64
|
+
"FEATURE_ISC",
|
|
65
|
+
"FEATURE_PV",
|
|
66
|
+
"FEATURE_SOLAR",
|
|
67
|
+
"FEATURE_ZONE_MODULES",
|
|
68
|
+
"HEATING_CIRCUIT_LETTERS",
|
|
69
|
+
"HP_OPERATING_MODE_OPTIONS",
|
|
70
|
+
"ISC_MODE_OPTIONS",
|
|
71
|
+
"MAX_HEATING_CIRCUITS",
|
|
72
|
+
"MAX_ROOMS_PER_ZONE",
|
|
73
|
+
"MAX_RETRIES",
|
|
74
|
+
"MAX_ZONE_MODULES",
|
|
75
|
+
"MODEL_NAVIGATOR_10",
|
|
76
|
+
"MODEL_NAVIGATOR_20",
|
|
77
|
+
"MODEL_NAVIGATOR_PRO",
|
|
78
|
+
"MODEL_UNKNOWN",
|
|
79
|
+
"RETRY_BACKOFF_BASE",
|
|
80
|
+
"ROOM_MODE_OPTIONS",
|
|
81
|
+
"SMART_GRID_OPTIONS",
|
|
82
|
+
"SOLAR_MODE_OPTIONS",
|
|
83
|
+
"SYSTEM_MODE_OPTIONS",
|
|
84
|
+
"UNUSED_VALUE",
|
|
85
|
+
"ZONE_MODULE_MODE_OPTIONS",
|
|
86
|
+
"DataType",
|
|
87
|
+
"IdmModelInfo",
|
|
88
|
+
"IdmModbusClient",
|
|
89
|
+
"RegisterDef",
|
|
90
|
+
"RegisterType",
|
|
91
|
+
"build_register_map",
|
|
92
|
+
"get_all_registers",
|
|
93
|
+
"get_detection_registers",
|
|
94
|
+
"get_heating_circuit_registers",
|
|
95
|
+
"get_register",
|
|
96
|
+
"get_zone_module_registers",
|
|
97
|
+
]
|