aiohomematic 2025.9.7__py3-none-any.whl → 2025.10.0__py3-none-any.whl
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.
Potentially problematic release.
This version of aiohomematic might be problematic. Click here for more details.
- aiohomematic/caches/visibility.py +2 -0
- aiohomematic/central/__init__.py +3 -4
- aiohomematic/client/xml_rpc.py +1 -1
- aiohomematic/const.py +2 -1
- aiohomematic/model/custom/climate.py +85 -12
- aiohomematic/model/data_point.py +1 -1
- aiohomematic/model/generic/data_point.py +2 -0
- {aiohomematic-2025.9.7.dist-info → aiohomematic-2025.10.0.dist-info}/METADATA +1 -1
- {aiohomematic-2025.9.7.dist-info → aiohomematic-2025.10.0.dist-info}/RECORD +12 -12
- {aiohomematic-2025.9.7.dist-info → aiohomematic-2025.10.0.dist-info}/WHEEL +0 -0
- {aiohomematic-2025.9.7.dist-info → aiohomematic-2025.10.0.dist-info}/licenses/LICENSE +0 -0
- {aiohomematic-2025.9.7.dist-info → aiohomematic-2025.10.0.dist-info}/top_level.txt +0 -0
|
@@ -171,6 +171,8 @@ _IGNORED_PARAMETERS: Final[frozenset[TParameterName]] = frozenset(
|
|
|
171
171
|
"CLEAR_ERROR",
|
|
172
172
|
"CLEAR_WINDOW_OPEN_SYMBOL",
|
|
173
173
|
"CLOCK",
|
|
174
|
+
"CMD_RETL", # CuXD
|
|
175
|
+
"CMD_RETS", # CuXD
|
|
174
176
|
"CONTROL_DIFFERENTIAL_TEMPERATURE",
|
|
175
177
|
"DATE_TIME_UNKNOWN",
|
|
176
178
|
"DECISION_VALUE",
|
aiohomematic/central/__init__.py
CHANGED
|
@@ -44,12 +44,10 @@ Example (simplified):
|
|
|
44
44
|
|
|
45
45
|
cfg = CentralConfig(
|
|
46
46
|
central_id="ccu-main",
|
|
47
|
-
default_callback_port=43439,
|
|
48
47
|
host="ccu.local",
|
|
49
48
|
interface_configs=iface_cfgs,
|
|
50
49
|
name="MyCCU",
|
|
51
50
|
password="secret",
|
|
52
|
-
storage_folder=".storage",
|
|
53
51
|
username="admin",
|
|
54
52
|
)
|
|
55
53
|
|
|
@@ -102,6 +100,7 @@ from aiohomematic.const import (
|
|
|
102
100
|
DEFAULT_MAX_READ_WORKERS,
|
|
103
101
|
DEFAULT_PERIODIC_REFRESH_INTERVAL,
|
|
104
102
|
DEFAULT_PROGRAM_MARKERS,
|
|
103
|
+
DEFAULT_STORAGE_FOLDER,
|
|
105
104
|
DEFAULT_SYS_SCAN_INTERVAL,
|
|
106
105
|
DEFAULT_SYSVAR_MARKERS,
|
|
107
106
|
DEFAULT_TLS,
|
|
@@ -1828,16 +1827,15 @@ class CentralConfig:
|
|
|
1828
1827
|
def __init__(
|
|
1829
1828
|
self,
|
|
1830
1829
|
central_id: str,
|
|
1831
|
-
default_callback_port: int,
|
|
1832
1830
|
host: str,
|
|
1833
1831
|
interface_configs: AbstractSet[hmcl.InterfaceConfig],
|
|
1834
1832
|
name: str,
|
|
1835
1833
|
password: str,
|
|
1836
|
-
storage_folder: str,
|
|
1837
1834
|
username: str,
|
|
1838
1835
|
client_session: ClientSession | None = None,
|
|
1839
1836
|
callback_host: str | None = None,
|
|
1840
1837
|
callback_port: int | None = None,
|
|
1838
|
+
default_callback_port: int = PORT_ANY,
|
|
1841
1839
|
enable_device_firmware_check: bool = DEFAULT_ENABLE_DEVICE_FIRMWARE_CHECK,
|
|
1842
1840
|
enable_program_scan: bool = DEFAULT_ENABLE_PROGRAM_SCAN,
|
|
1843
1841
|
enable_sysvar_scan: bool = DEFAULT_ENABLE_SYSVAR_SCAN,
|
|
@@ -1851,6 +1849,7 @@ class CentralConfig:
|
|
|
1851
1849
|
periodic_refresh_interval: int = DEFAULT_PERIODIC_REFRESH_INTERVAL,
|
|
1852
1850
|
program_markers: tuple[DescriptionMarker | str, ...] = DEFAULT_PROGRAM_MARKERS,
|
|
1853
1851
|
start_direct: bool = False,
|
|
1852
|
+
storage_folder: str = DEFAULT_STORAGE_FOLDER,
|
|
1854
1853
|
sys_scan_interval: int = DEFAULT_SYS_SCAN_INTERVAL,
|
|
1855
1854
|
sysvar_markers: tuple[DescriptionMarker | str, ...] = DEFAULT_SYSVAR_MARKERS,
|
|
1856
1855
|
tls: bool = DEFAULT_TLS,
|
aiohomematic/client/xml_rpc.py
CHANGED
|
@@ -203,7 +203,7 @@ class XmlRpcProxy(xmlrpc.client.ServerProxy):
|
|
|
203
203
|
if not self._connection_state.has_issue(issuer=self, iid=self._interface_id):
|
|
204
204
|
if perr.errmsg == "Unauthorized":
|
|
205
205
|
raise AuthFailure(perr) from perr
|
|
206
|
-
raise NoConnectionException(perr.errmsg) from perr
|
|
206
|
+
raise NoConnectionException(f"No connection to {self.log_context} ({perr.errmsg})") from perr
|
|
207
207
|
except Exception as exc:
|
|
208
208
|
raise ClientException(exc) from exc
|
|
209
209
|
|
aiohomematic/const.py
CHANGED
|
@@ -19,7 +19,7 @@ import sys
|
|
|
19
19
|
from types import MappingProxyType
|
|
20
20
|
from typing import Any, Final, NamedTuple, Required, TypeAlias, TypedDict
|
|
21
21
|
|
|
22
|
-
VERSION: Final = "2025.
|
|
22
|
+
VERSION: Final = "2025.10.0"
|
|
23
23
|
|
|
24
24
|
# Detect test speedup mode via environment
|
|
25
25
|
_TEST_SPEEDUP: Final = (
|
|
@@ -27,6 +27,7 @@ _TEST_SPEEDUP: Final = (
|
|
|
27
27
|
)
|
|
28
28
|
|
|
29
29
|
# default
|
|
30
|
+
DEFAULT_STORAGE_FOLDER: Final = "aiohomematic_storage"
|
|
30
31
|
DEFAULT_CUSTOM_ID: Final = "custom_id"
|
|
31
32
|
DEFAULT_ENABLE_DEVICE_FIRMWARE_CHECK: Final = False
|
|
32
33
|
DEFAULT_ENABLE_PROGRAM_SCAN: Final = True
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
|
+
from abc import abstractmethod
|
|
7
8
|
from collections.abc import Mapping
|
|
8
9
|
from datetime import datetime, timedelta
|
|
9
10
|
from enum import IntEnum, StrEnum
|
|
@@ -26,7 +27,16 @@ from aiohomematic.model.custom.const import DeviceProfile, Field
|
|
|
26
27
|
from aiohomematic.model.custom.data_point import CustomDataPoint
|
|
27
28
|
from aiohomematic.model.custom.support import CustomConfig
|
|
28
29
|
from aiohomematic.model.data_point import CallParameterCollector, bind_collector
|
|
29
|
-
from aiohomematic.model.generic import
|
|
30
|
+
from aiohomematic.model.generic import (
|
|
31
|
+
DpAction,
|
|
32
|
+
DpBinarySensor,
|
|
33
|
+
DpFloat,
|
|
34
|
+
DpInteger,
|
|
35
|
+
DpSelect,
|
|
36
|
+
DpSensor,
|
|
37
|
+
DpSwitch,
|
|
38
|
+
GenericDataPoint,
|
|
39
|
+
)
|
|
30
40
|
from aiohomematic.property_decorators import config_property, state_property
|
|
31
41
|
|
|
32
42
|
_LOGGER: Final = logging.getLogger(__name__)
|
|
@@ -174,6 +184,7 @@ class BaseCustomDpClimate(CustomDataPoint):
|
|
|
174
184
|
"_dp_temperature",
|
|
175
185
|
"_dp_temperature_maximum",
|
|
176
186
|
"_dp_temperature_minimum",
|
|
187
|
+
"_old_manu_setpoint",
|
|
177
188
|
"_supports_schedule",
|
|
178
189
|
)
|
|
179
190
|
_category = DataPointCategory.CLIMATE
|
|
@@ -199,6 +210,7 @@ class BaseCustomDpClimate(CustomDataPoint):
|
|
|
199
210
|
custom_config=custom_config,
|
|
200
211
|
)
|
|
201
212
|
self._supports_schedule = False
|
|
213
|
+
self._old_manu_setpoint: float | None = None
|
|
202
214
|
|
|
203
215
|
def _init_data_point_fields(self) -> None:
|
|
204
216
|
"""Init the data_point fields."""
|
|
@@ -219,6 +231,13 @@ class BaseCustomDpClimate(CustomDataPoint):
|
|
|
219
231
|
self._dp_temperature_minimum: DpFloat = self._get_data_point(
|
|
220
232
|
field=Field.TEMPERATURE_MINIMUM, data_point_type=DpFloat
|
|
221
233
|
)
|
|
234
|
+
self._unregister_callbacks.append(
|
|
235
|
+
self._dp_setpoint.register_data_point_updated_callback(cb=self._manu_temp_changed, custom_id="manu_temp")
|
|
236
|
+
)
|
|
237
|
+
|
|
238
|
+
@abstractmethod
|
|
239
|
+
def _manu_temp_changed(self, data_point: GenericDataPoint) -> None:
|
|
240
|
+
"""Handle device state changes."""
|
|
222
241
|
|
|
223
242
|
@state_property
|
|
224
243
|
def current_humidity(self) -> int | None:
|
|
@@ -311,11 +330,21 @@ class BaseCustomDpClimate(CustomDataPoint):
|
|
|
311
330
|
return _TEMP_CELSIUS
|
|
312
331
|
|
|
313
332
|
@property
|
|
314
|
-
def
|
|
315
|
-
"""
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
333
|
+
def _temperature_for_heat_mode(self) -> float:
|
|
334
|
+
"""
|
|
335
|
+
Return a safe temperature to use when setting mode to HEAT.
|
|
336
|
+
|
|
337
|
+
If the current target temperature is None or represents the special OFF value,
|
|
338
|
+
fall back to the device's minimum valid temperature. Otherwise, return the
|
|
339
|
+
current target temperature clipped to the valid [min, max] range.
|
|
340
|
+
"""
|
|
341
|
+
temp = self._old_manu_setpoint or self.target_temperature
|
|
342
|
+
# Treat None or OFF sentinel as invalid/unsafe to restore.
|
|
343
|
+
if temp is None or temp <= _OFF_TEMPERATURE or temp < self.min_temp:
|
|
344
|
+
return self.min_temp if self.min_temp > _OFF_TEMPERATURE else _OFF_TEMPERATURE + 0.5
|
|
345
|
+
if temp > self.max_temp:
|
|
346
|
+
return self.max_temp
|
|
347
|
+
return temp
|
|
319
348
|
|
|
320
349
|
@property
|
|
321
350
|
def schedule_profile_nos(self) -> int:
|
|
@@ -329,10 +358,7 @@ class BaseCustomDpClimate(CustomDataPoint):
|
|
|
329
358
|
collector: CallParameterCollector | None = None,
|
|
330
359
|
do_validate: bool = True,
|
|
331
360
|
) -> None:
|
|
332
|
-
"""Set new target temperature."""
|
|
333
|
-
if not self.is_state_change(temperature=temperature):
|
|
334
|
-
return
|
|
335
|
-
|
|
361
|
+
"""Set new target temperature. The temperature must be set in all cases, even if the values are identical."""
|
|
336
362
|
if do_validate and self.mode == ClimateMode.HEAT and self.min_max_value_not_relevant_for_manu_mode:
|
|
337
363
|
do_validate = False
|
|
338
364
|
|
|
@@ -694,6 +720,9 @@ class CustomDpSimpleRfThermostat(BaseCustomDpClimate):
|
|
|
694
720
|
|
|
695
721
|
__slots__ = ()
|
|
696
722
|
|
|
723
|
+
def _manu_temp_changed(self, data_point: GenericDataPoint) -> None:
|
|
724
|
+
"""Handle device state changes."""
|
|
725
|
+
|
|
697
726
|
|
|
698
727
|
class CustomDpRfThermostat(BaseCustomDpClimate):
|
|
699
728
|
"""Classic Homematic thermostat like HM-CC-RT-DN."""
|
|
@@ -753,6 +782,28 @@ class CustomDpRfThermostat(BaseCustomDpClimate):
|
|
|
753
782
|
field=Field.WEEK_PROGRAM_POINTER, data_point_type=DpSelect
|
|
754
783
|
)
|
|
755
784
|
|
|
785
|
+
self._unregister_callbacks.append(
|
|
786
|
+
self._dp_control_mode.register_data_point_updated_callback(
|
|
787
|
+
cb=self._manu_temp_changed, custom_id="manu_temp"
|
|
788
|
+
)
|
|
789
|
+
)
|
|
790
|
+
|
|
791
|
+
def _manu_temp_changed(self, data_point: GenericDataPoint) -> None:
|
|
792
|
+
"""Handle device state changes."""
|
|
793
|
+
if (
|
|
794
|
+
data_point == self._dp_control_mode
|
|
795
|
+
and self.mode == ClimateMode.HEAT
|
|
796
|
+
and self._dp_setpoint.refreshed_recently
|
|
797
|
+
):
|
|
798
|
+
self._old_manu_setpoint = self.target_temperature
|
|
799
|
+
|
|
800
|
+
if (
|
|
801
|
+
data_point == self._dp_setpoint
|
|
802
|
+
and self.mode == ClimateMode.HEAT
|
|
803
|
+
and self._dp_control_mode.refreshed_recently
|
|
804
|
+
):
|
|
805
|
+
self._old_manu_setpoint = self.target_temperature
|
|
806
|
+
|
|
756
807
|
@state_property
|
|
757
808
|
def activity(self) -> ClimateActivity | None:
|
|
758
809
|
"""Return the current activity."""
|
|
@@ -817,7 +868,7 @@ class CustomDpRfThermostat(BaseCustomDpClimate):
|
|
|
817
868
|
if mode == ClimateMode.AUTO:
|
|
818
869
|
await self._dp_auto_mode.send_value(value=True, collector=collector)
|
|
819
870
|
elif mode == ClimateMode.HEAT:
|
|
820
|
-
await self._dp_manu_mode.send_value(value=self.
|
|
871
|
+
await self._dp_manu_mode.send_value(value=self._temperature_for_heat_mode, collector=collector)
|
|
821
872
|
elif mode == ClimateMode.OFF:
|
|
822
873
|
await self._dp_manu_mode.send_value(value=self.target_temperature, collector=collector)
|
|
823
874
|
# Disable validation here to allow setting a value,
|
|
@@ -975,6 +1026,28 @@ class CustomDpIpThermostat(BaseCustomDpClimate):
|
|
|
975
1026
|
field=Field.TEMPERATURE_OFFSET, data_point_type=DpFloat
|
|
976
1027
|
)
|
|
977
1028
|
|
|
1029
|
+
self._unregister_callbacks.append(
|
|
1030
|
+
self._dp_set_point_mode.register_data_point_updated_callback(
|
|
1031
|
+
cb=self._manu_temp_changed, custom_id="manu_temp"
|
|
1032
|
+
)
|
|
1033
|
+
)
|
|
1034
|
+
|
|
1035
|
+
def _manu_temp_changed(self, data_point: GenericDataPoint) -> None:
|
|
1036
|
+
"""Handle device state changes."""
|
|
1037
|
+
if (
|
|
1038
|
+
data_point == self._dp_set_point_mode
|
|
1039
|
+
and self.mode == ClimateMode.HEAT
|
|
1040
|
+
and self._dp_setpoint.refreshed_recently
|
|
1041
|
+
):
|
|
1042
|
+
self._old_manu_setpoint = self.target_temperature
|
|
1043
|
+
|
|
1044
|
+
if (
|
|
1045
|
+
data_point == self._dp_setpoint
|
|
1046
|
+
and self.mode == ClimateMode.HEAT
|
|
1047
|
+
and self._dp_set_point_mode.refreshed_recently
|
|
1048
|
+
):
|
|
1049
|
+
self._old_manu_setpoint = self.target_temperature
|
|
1050
|
+
|
|
978
1051
|
@property
|
|
979
1052
|
def _is_heating_mode(self) -> bool:
|
|
980
1053
|
"""Return the heating_mode of the device."""
|
|
@@ -1074,7 +1147,7 @@ class CustomDpIpThermostat(BaseCustomDpClimate):
|
|
|
1074
1147
|
await self._dp_control_mode.send_value(value=_ModeHmIP.AUTO, collector=collector)
|
|
1075
1148
|
elif mode in (ClimateMode.HEAT, ClimateMode.COOL):
|
|
1076
1149
|
await self._dp_control_mode.send_value(value=_ModeHmIP.MANU, collector=collector)
|
|
1077
|
-
await self.set_temperature(temperature=self.
|
|
1150
|
+
await self.set_temperature(temperature=self._temperature_for_heat_mode, collector=collector)
|
|
1078
1151
|
elif mode == ClimateMode.OFF:
|
|
1079
1152
|
await self._dp_control_mode.send_value(value=_ModeHmIP.MANU, collector=collector)
|
|
1080
1153
|
await self.set_temperature(temperature=_OFF_TEMPERATURE, collector=collector, do_validate=False)
|
aiohomematic/model/data_point.py
CHANGED
|
@@ -757,7 +757,7 @@ class BaseParameterDataPoint[
|
|
|
757
757
|
|
|
758
758
|
@property
|
|
759
759
|
def service(self) -> bool:
|
|
760
|
-
"""Return the if data_point is
|
|
760
|
+
"""Return the if data_point is relevant for service messages in the backend."""
|
|
761
761
|
return self._service
|
|
762
762
|
|
|
763
763
|
@property
|
|
@@ -107,10 +107,12 @@ class GenericDataPoint[ParameterT: GenericParameterType, InputParameterT: Generi
|
|
|
107
107
|
return set()
|
|
108
108
|
|
|
109
109
|
converted_value = self._convert_value(value=prepared_value)
|
|
110
|
+
# if collector is set, then add value to collector
|
|
110
111
|
if collector:
|
|
111
112
|
collector.add_data_point(self, value=converted_value, collector_order=collector_order)
|
|
112
113
|
return set()
|
|
113
114
|
|
|
115
|
+
# if collector is not set, then send value directly
|
|
114
116
|
if self._validate_state_change and not self.is_state_change(value=converted_value):
|
|
115
117
|
return set()
|
|
116
118
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aiohomematic
|
|
3
|
-
Version: 2025.
|
|
3
|
+
Version: 2025.10.0
|
|
4
4
|
Summary: Homematic interface for Home Assistant running on Python 3.
|
|
5
5
|
Home-page: https://github.com/sukramj/aiohomematic
|
|
6
6
|
Author-email: SukramJ <sukramj@icloud.com>, Daniel Perna <danielperna84@gmail.com>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
aiohomematic/__init__.py,sha256=ngULK_anZQwwUUCVcberBdVjguYfboiuG9VoueKy9fA,2283
|
|
2
2
|
aiohomematic/async_support.py,sha256=Xc55KkIV0h8rf936QKyU4OHSZsPEZ8TwuV8gVveeRh8,6106
|
|
3
|
-
aiohomematic/const.py,sha256=
|
|
3
|
+
aiohomematic/const.py,sha256=iRFyrsWQX3Vb6glqBD9eMegu67CnGBDh_h2OvPmTg2o,25467
|
|
4
4
|
aiohomematic/context.py,sha256=M7gkA7KFT0dp35gzGz2dzKVXu1PP0sAnepgLlmjyRS4,451
|
|
5
5
|
aiohomematic/converter.py,sha256=QTOL8_B6SoCoqLuRSkjtOlfa7BVFSvOfnSBrDngiinA,3558
|
|
6
6
|
aiohomematic/decorators.py,sha256=oHEFSJoJVd-h9RYb6NLTJ60erkpRHPYv7EEipKn1a9Q,10636
|
|
@@ -13,16 +13,16 @@ aiohomematic/validator.py,sha256=vChkYQ9dGKCQEigiBMnoeyPkCJDJlIm6DSgR1gmeHH0,354
|
|
|
13
13
|
aiohomematic/caches/__init__.py,sha256=_gI30tbsWgPRaHvP6cRxOQr6n9bYZzU-jp1WbHhWg-A,470
|
|
14
14
|
aiohomematic/caches/dynamic.py,sha256=ANZUbkueQBeKC8Jwd44LH6qdt6qBCPWgzB5J0aHGUJw,21334
|
|
15
15
|
aiohomematic/caches/persistent.py,sha256=od1hqoXopGw53gSVvd3rmT_40KuutSY43MUPKj1HAvU,19932
|
|
16
|
-
aiohomematic/caches/visibility.py,sha256
|
|
17
|
-
aiohomematic/central/__init__.py,sha256=
|
|
16
|
+
aiohomematic/caches/visibility.py,sha256=-PWXc7sJxVhJzzU8WZkiokaL_ANE7EZ2-IO8TIZHGw8,31537
|
|
17
|
+
aiohomematic/central/__init__.py,sha256=7l23fW4zUGBRxVMmGXtsz5r4wKPrI0aPaDRpvi9geQA,86159
|
|
18
18
|
aiohomematic/central/decorators.py,sha256=Sl-cMDhreiAOKkIHiei-QbIOcvbWGVX-QwB5bLeohak,6904
|
|
19
19
|
aiohomematic/central/xml_rpc_server.py,sha256=pOqOuTp1Yy5Wlqs5E-L9f_UNW8j9HSE5XMAPCdXJchI,10407
|
|
20
20
|
aiohomematic/client/__init__.py,sha256=YuVD_FNh2Q_9SiDtGTM0T--ycT3hzCgkZM_W9AOOuTg,70106
|
|
21
21
|
aiohomematic/client/_rpc_errors.py,sha256=ZPFZJ4t0tE4RVAae4L7hE9earutMwB5BFfB2NArLp9E,2975
|
|
22
22
|
aiohomematic/client/json_rpc.py,sha256=s9EOWlVed-xerRFXOQToPGAW-0p_BuOuwjvL4TZD2Ok,49393
|
|
23
|
-
aiohomematic/client/xml_rpc.py,sha256
|
|
23
|
+
aiohomematic/client/xml_rpc.py,sha256=T39zi8GatsV2d-w_SqRLgPraJWtGdZQZxAZbGM_sN9o,9518
|
|
24
24
|
aiohomematic/model/__init__.py,sha256=cqL5v5HNxlzrgLziAPf8sGU72fDneiaLTioIGcLfhTU,5442
|
|
25
|
-
aiohomematic/model/data_point.py,sha256=
|
|
25
|
+
aiohomematic/model/data_point.py,sha256=K_UsSJKTltllVe2tpUTyF_FggUX2t16OeW2Y_wQMm20,40916
|
|
26
26
|
aiohomematic/model/device.py,sha256=f6KVYynK6ug2HLF6mbavl20qRlZOwXhgKaYN0GJdzAE,52703
|
|
27
27
|
aiohomematic/model/event.py,sha256=omesSQ18e1tCIjjTIYTmeqwtItzjTYR3fy90-oZi4ic,6837
|
|
28
28
|
aiohomematic/model/support.py,sha256=4VQsOlkJuPhq0hLHKt5LB43YgbITjnyJMwucUYGghzM,19616
|
|
@@ -33,7 +33,7 @@ aiohomematic/model/calculated/data_point.py,sha256=4b0uGuI_HYb4MkykrtSHpw7XVzrj_
|
|
|
33
33
|
aiohomematic/model/calculated/operating_voltage_level.py,sha256=urlCkHjisCJ-DO6tUE0evfp45tPwsYcb81_2uoHYxS0,13521
|
|
34
34
|
aiohomematic/model/calculated/support.py,sha256=K-oUSSH6k6_J7zZ9cwxt6qIfArWd-SBWo93LuZUs1_s,6674
|
|
35
35
|
aiohomematic/model/custom/__init__.py,sha256=1sWRrAjHnHSakdrrlNW4_SZ2rg5g2WjGdI4X2PUg_h0,6064
|
|
36
|
-
aiohomematic/model/custom/climate.py,sha256=
|
|
36
|
+
aiohomematic/model/custom/climate.py,sha256=N0w4mne_UUZopaKM7yiJHGlHrY292slk6_gsh2RZ5Ng,56688
|
|
37
37
|
aiohomematic/model/custom/const.py,sha256=Kh1pnab6nmwbaY43CfXQy3yrWpPwsrQdl1Ea2aZ6aw0,4961
|
|
38
38
|
aiohomematic/model/custom/cover.py,sha256=8coWxSyFgsDKoTQIvu0czfiVufobtkHgQdlp4ocAqu8,28555
|
|
39
39
|
aiohomematic/model/custom/data_point.py,sha256=d7B8gfyDDZf8HW3f0ofeHYF32GE8kgnQ0DZYSUbLHxY,14112
|
|
@@ -48,7 +48,7 @@ aiohomematic/model/generic/__init__.py,sha256=goR2uBBGizm-A5Vvd7ii9Ai3OihBl3hIzt
|
|
|
48
48
|
aiohomematic/model/generic/action.py,sha256=5SPWVliRqXlPgtb2bI6le0-V6JR5krzw8z_0FaOXu5U,994
|
|
49
49
|
aiohomematic/model/generic/binary_sensor.py,sha256=U5GvfRYbhwe0jRmaedD4LVZ_24SyyPbVr74HEfZXoxE,887
|
|
50
50
|
aiohomematic/model/generic/button.py,sha256=6jZ49woI9gYJEx__PjguDNbc5vdE1P-YcLMZZFkYRCg,740
|
|
51
|
-
aiohomematic/model/generic/data_point.py,sha256=
|
|
51
|
+
aiohomematic/model/generic/data_point.py,sha256=XDaWqTfwrTNtnpt2qWtHKuyQOecZeKCvo5WDS0D1ocM,6051
|
|
52
52
|
aiohomematic/model/generic/number.py,sha256=wHNIIVr41IOoROPOnBXuMRsANG6doguIEWXYnQHJbBk,2669
|
|
53
53
|
aiohomematic/model/generic/select.py,sha256=kxN5BR85Yli7kQF2DYkGiLnTgcY9LBJWI7MMwWpH1mo,1535
|
|
54
54
|
aiohomematic/model/generic/sensor.py,sha256=dWff7yBJfJSjoD4rcYdmH5HhaRCUEKfPFfOu4T1LrPo,2253
|
|
@@ -69,10 +69,10 @@ aiohomematic/rega_scripts/get_serial.fn,sha256=t1oeo-sB_EuVeiY24PLcxFSkdQVgEWGXz
|
|
|
69
69
|
aiohomematic/rega_scripts/get_system_variable_descriptions.fn,sha256=UKXvC0_5lSApdQ2atJc0E5Stj5Zt3lqh0EcliokYu2c,849
|
|
70
70
|
aiohomematic/rega_scripts/set_program_state.fn,sha256=0bnv7lUj8FMjDZBz325tDVP61m04cHjVj4kIOnUUgpY,279
|
|
71
71
|
aiohomematic/rega_scripts/set_system_variable.fn,sha256=sTmr7vkPTPnPkor5cnLKlDvfsYRbGO1iq2z_2pMXq5E,383
|
|
72
|
-
aiohomematic-2025.
|
|
72
|
+
aiohomematic-2025.10.0.dist-info/licenses/LICENSE,sha256=q-B0xpREuZuvKsmk3_iyVZqvZ-vJcWmzMZpeAd0RqtQ,1083
|
|
73
73
|
aiohomematic_support/__init__.py,sha256=_0YtF4lTdC_k6-zrM2IefI0u0LMr_WA61gXAyeGLgbY,66
|
|
74
74
|
aiohomematic_support/client_local.py,sha256=kWzrIeyrvSQx1qVX9_L1bgaFr9aPRDm3E3p82eqkFvo,12538
|
|
75
|
-
aiohomematic-2025.
|
|
76
|
-
aiohomematic-2025.
|
|
77
|
-
aiohomematic-2025.
|
|
78
|
-
aiohomematic-2025.
|
|
75
|
+
aiohomematic-2025.10.0.dist-info/METADATA,sha256=gwYr_waUP6P_Gpi82v-1EBAVkDTqVm-ah8xQG7HlzG8,7603
|
|
76
|
+
aiohomematic-2025.10.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
77
|
+
aiohomematic-2025.10.0.dist-info/top_level.txt,sha256=5TDRlUWQPThIUwQjOj--aUo4UA-ow4m0sNhnoCBi5n8,34
|
|
78
|
+
aiohomematic-2025.10.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|