aiohomematic 2025.9.2__py3-none-any.whl → 2025.9.4__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.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aiohomematic
3
- Version: 2025.9.2
3
+ Version: 2025.9.4
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>
@@ -53,7 +53,7 @@ Use the Home Assistant custom integration "Homematic(IP) Local", which is powere
53
53
 
54
54
  1. Prerequisites
55
55
  - Use latest version of Home Assistant.
56
- - A CCU3, RaspberryMatic, or Homegear instance reachable from Home Assistant.
56
+ - A CCU3, OpenCCU/RaspberryMatic, or Homegear instance reachable from Home Assistant.
57
57
  - For HomematicIP devices, ensure CCU firmware meets the minimum versions listed below.
58
58
  2. Install the integration
59
59
  - Add the custom repository and install: https://github.com/sukramj/homematicip_local
@@ -77,7 +77,7 @@ Due to a bug in earlier CCU2/CCU3 firmware, aiohomematic requires at least the f
77
77
  - CCU2: 2.53.27
78
78
  - CCU3: 3.53.26
79
79
 
80
- See details here: https://github.com/jens-maus/RaspberryMatic/issues/843. Other CCU‑like platforms using the buggy HmIPServer version are not supported.
80
+ See details here: https://github.com/OpenCCU/OpenCCU/issues/843. Other CCU‑like platforms using the buggy HmIPServer version are not supported.
81
81
 
82
82
  ## Public API and imports
83
83
 
@@ -1,35 +1,35 @@
1
1
  aiohomematic/__init__.py,sha256=VPESkjzeVserFI2DDVAxD782cgYRlLK0sXJzLrr3e_k,2283
2
2
  aiohomematic/async_support.py,sha256=Xc55KkIV0h8rf936QKyU4OHSZsPEZ8TwuV8gVveeRh8,6106
3
- aiohomematic/const.py,sha256=EpW2w2XzvTzzzxByobHD7suUpA--ZkbzCmMTk79GK7I,25411
3
+ aiohomematic/const.py,sha256=MCot-HynusvTRuUZLzQnuNnFymsuiQowv9sX-4kS6fI,25411
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
7
7
  aiohomematic/exceptions.py,sha256=o_H3Z0A2TQ0irNxUM9u8bmivq0L_mwPCB7nhxEawDxE,5018
8
8
  aiohomematic/hmcli.py,sha256=wHOLq4IJRSY9RJux_ZfDH1gQ1ZqD0k68ua5agyBkkE8,4933
9
- aiohomematic/property_decorators.py,sha256=LnWgLCkopkSqdz4dcwxoH2UuoWJmykA9YUFM7Zefw70,11710
9
+ aiohomematic/property_decorators.py,sha256=TN07L9uAos2hB7aqaSIRPziYowWWJXSDFnZqxg0WFhs,16201
10
10
  aiohomematic/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
- aiohomematic/support.py,sha256=9CsB27Xz0Q5tgqROceG2MaQuJGN1rI47YIUZM3N_2Ik,20374
11
+ aiohomematic/support.py,sha256=EKTkzx4Dd-NT5OdN-Cfg75pECYWQ9l-Me5t_2Bl5PPM,20315
12
12
  aiohomematic/validator.py,sha256=vChkYQ9dGKCQEigiBMnoeyPkCJDJlIm6DSgR1gmeHH0,3545
13
13
  aiohomematic/caches/__init__.py,sha256=_gI30tbsWgPRaHvP6cRxOQr6n9bYZzU-jp1WbHhWg-A,470
14
- aiohomematic/caches/dynamic.py,sha256=Kp0bL5JZaPGGfsezuBX3VtADhEcUvu93AEB5j2rgzzY,21326
14
+ aiohomematic/caches/dynamic.py,sha256=dibvXK07_kkqhzd54sAQhKRjGwmsnaX8_BUm2_CDS68,21334
15
15
  aiohomematic/caches/persistent.py,sha256=YBThIByt0mLQCgcZwBBmqanI8obAhHNcFULz_H-de8o,19932
16
16
  aiohomematic/caches/visibility.py,sha256=uZ1sSCfmEQURllPvSbJ3EzFVFE7TU8XcxMDSHRpNmMs,31481
17
- aiohomematic/central/__init__.py,sha256=y8JErLEY4zh8qsGyS1qMQPaPlQn3GEx6q5_L4OvqxlQ,86148
17
+ aiohomematic/central/__init__.py,sha256=avD1CsupPPTaqcMcQHDYQR4A9XGY2BE2RGIA6O79CP4,86167
18
18
  aiohomematic/central/decorators.py,sha256=Sl-cMDhreiAOKkIHiei-QbIOcvbWGVX-QwB5bLeohak,6904
19
- aiohomematic/central/xml_rpc_server.py,sha256=DZcE3t_KWgJyQJM5Z9_yPO4s075DRJmnIdkIx0OTL9M,10549
20
- aiohomematic/client/__init__.py,sha256=CX3b5LiWO6kJc1Nr6xQoksenk4mMLIyZFhp-LGOUQ1Q,69968
21
- aiohomematic/client/_rpc_errors.py,sha256=vu76ZWMwJJEgB0cnXc10JzK8PaiRU7jYOvj1aC21CqE,2971
22
- aiohomematic/client/json_rpc.py,sha256=07Vfc9laLHIXKG87jlJE1yiLuu4FD3bg25INsV1twkU,49313
23
- aiohomematic/client/xml_rpc.py,sha256=Z964fzQtq9LaIYZXG02C82CvMU11shxA7yx7UouI_mI,9646
24
- aiohomematic/model/__init__.py,sha256=LBKHws0W-zgFywTsWfklVVCxrO0w6QUY9ptT6LKxJls,5457
25
- aiohomematic/model/data_point.py,sha256=QvHLLaq1NByB75mP4yIV0VCq4PPNcKdgVbbx07DEER8,40878
26
- aiohomematic/model/device.py,sha256=OKecVb9hMb-LnbvojMHFKNH1A0-5yIikG9acYCuu3dU,52139
19
+ aiohomematic/central/xml_rpc_server.py,sha256=pOqOuTp1Yy5Wlqs5E-L9f_UNW8j9HSE5XMAPCdXJchI,10407
20
+ aiohomematic/client/__init__.py,sha256=3Lxji6TbShZ3_9-4OGwmuoPh82qtW46vA2xjHOqxYaQ,70106
21
+ aiohomematic/client/_rpc_errors.py,sha256=ZPFZJ4t0tE4RVAae4L7hE9earutMwB5BFfB2NArLp9E,2975
22
+ aiohomematic/client/json_rpc.py,sha256=o-lMKlVQBUBtYD71p4wpXfWrz-b6dOL363ap0JoELUM,49393
23
+ aiohomematic/client/xml_rpc.py,sha256=FsV6ahq2I6pfaEi33KJzgzeHrlHEpGfjh-4i_m-gHxw,9644
24
+ aiohomematic/model/__init__.py,sha256=cqL5v5HNxlzrgLziAPf8sGU72fDneiaLTioIGcLfhTU,5442
25
+ aiohomematic/model/data_point.py,sha256=6Z_HlNXMseBgmwgZSSuCBzZvh5u0hESHuQDI7DpfHhE,40894
26
+ aiohomematic/model/device.py,sha256=WCQ9zrc9sbyYrYKDF1aDAjtPWgkKU_dRdjImQQf-cbE,52160
27
27
  aiohomematic/model/event.py,sha256=EMoKjbOZRXD3jumRrSlSoUr3nZ2QM3GDKKFfhlf-D50,6837
28
28
  aiohomematic/model/support.py,sha256=4VQsOlkJuPhq0hLHKt5LB43YgbITjnyJMwucUYGghzM,19616
29
29
  aiohomematic/model/update.py,sha256=QVYFhaEqtHZhZ8yGPXEx2hPMne8WAc_SkVaQ0J20oQw,5138
30
30
  aiohomematic/model/calculated/__init__.py,sha256=pk56FYa0MNyN0MTsejSy6RdQjOUCKAqzwWSzN6_ENmk,2808
31
31
  aiohomematic/model/calculated/climate.py,sha256=0BhrsiVS74_6jo24I8Cg9WzVAD5od3IqgiwTM0ao2n0,8518
32
- aiohomematic/model/calculated/data_point.py,sha256=DZyd9vBIxxjEU2BBevyMVwCUptu1cy0uCIOxbySw2HI,11535
32
+ aiohomematic/model/calculated/data_point.py,sha256=s-FEMtMyPwArIwobrUPxqiio8pq_Dccbnsfwa6ohDuU,11530
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
@@ -48,16 +48,16 @@ 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=VuRj9C7hm8MHqWt2eO99osiKWCXx1MO7JNT9dNM08DI,5933
51
+ aiohomematic/model/generic/data_point.py,sha256=2rxtoHxU3-hsY9ufisqX7XvQIO2og7q_TTJ4I1z-uho,5932
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
55
55
  aiohomematic/model/generic/switch.py,sha256=oaXhECjSPT1WUdItEFTEbOLNCFZlaaqYByEHtL3GpTY,1833
56
56
  aiohomematic/model/generic/text.py,sha256=vtNV7YxZuxF6LzNRKRAeOtSQtPQxPaEd560OFaVR13U,854
57
- aiohomematic/model/hub/__init__.py,sha256=_UEEiNHfUVb0D0qTMcR2_YH1ZcYu1jzgLnUApPWfT2k,13493
57
+ aiohomematic/model/hub/__init__.py,sha256=s5fimIpfIZ3ujhrX5SWNZqPI36kaXJVfEfukOJNKcI8,13462
58
58
  aiohomematic/model/hub/binary_sensor.py,sha256=Z4o-zghHSc83ZHUUCtHqWEGueD9K1Fe0JEt_xJNdx_Y,752
59
59
  aiohomematic/model/hub/button.py,sha256=XO4ied740BDOXBfTxFW30ROdZiOOxxu05Rmt4b_h06k,890
60
- aiohomematic/model/hub/data_point.py,sha256=H_3REBK2lvoqITvqvupvg_ZnkcdxAIu_Qu8o0Wgc2Ds,10555
60
+ aiohomematic/model/hub/data_point.py,sha256=-bRnZVoHy0Hxov5Mu094lzzygVQNb6ygHq_KFkV5tU0,10552
61
61
  aiohomematic/model/hub/number.py,sha256=O5KrBU4nfZaxw2Pi2AmWAwQo8V_x79xrdt8ukoPme5Q,1222
62
62
  aiohomematic/model/hub/select.py,sha256=My6flvM7Lmt5hF-Szx4a4X1KZZPkQ5lCVPCXTLuqBbQ,1659
63
63
  aiohomematic/model/hub/sensor.py,sha256=cIr-7bsbOLBxnH33EHQ6D42vc61abO4QYLWLzkm1T10,1192
@@ -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.9.2.dist-info/licenses/LICENSE,sha256=q-B0xpREuZuvKsmk3_iyVZqvZ-vJcWmzMZpeAd0RqtQ,1083
72
+ aiohomematic-2025.9.4.dist-info/licenses/LICENSE,sha256=q-B0xpREuZuvKsmk3_iyVZqvZ-vJcWmzMZpeAd0RqtQ,1083
73
73
  aiohomematic_support/__init__.py,sha256=_0YtF4lTdC_k6-zrM2IefI0u0LMr_WA61gXAyeGLgbY,66
74
- aiohomematic_support/client_local.py,sha256=4p0-PagFeNgu-r0EjhpHWfImgHMrdSgt8VUMBBC66J0,12514
75
- aiohomematic-2025.9.2.dist-info/METADATA,sha256=VefZTtVGMgUabgxX2pfrEWWN7rnqJdM5ydd_Le-aQtg,7075
76
- aiohomematic-2025.9.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
77
- aiohomematic-2025.9.2.dist-info/top_level.txt,sha256=5TDRlUWQPThIUwQjOj--aUo4UA-ow4m0sNhnoCBi5n8,34
78
- aiohomematic-2025.9.2.dist-info/RECORD,,
74
+ aiohomematic_support/client_local.py,sha256=kWzrIeyrvSQx1qVX9_L1bgaFr9aPRDm3E3p82eqkFvo,12538
75
+ aiohomematic-2025.9.4.dist-info/METADATA,sha256=2QcoeA_N4nZgV2-GVtyw_6bGyAONqWKqjbqzFF6-aHo,7074
76
+ aiohomematic-2025.9.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
77
+ aiohomematic-2025.9.4.dist-info/top_level.txt,sha256=5TDRlUWQPThIUwQjOj--aUo4UA-ow4m0sNhnoCBi5n8,34
78
+ aiohomematic-2025.9.4.dist-info/RECORD,,
@@ -87,11 +87,11 @@ class ClientLocal(Client): # pragma: no cover
87
87
  return True
88
88
 
89
89
  async def initialize_proxy(self) -> ProxyInitState:
90
- """Init the proxy has to tell the CCU / Homegear where to send the events."""
90
+ """Init the proxy has to tell the backend where to send the events."""
91
91
  return ProxyInitState.INIT_SUCCESS
92
92
 
93
93
  async def deinitialize_proxy(self) -> ProxyInitState:
94
- """De-init to stop CCU from sending events for this remote."""
94
+ """De-init to stop the backend from sending events for this remote."""
95
95
  return ProxyInitState.DE_INIT_SUCCESS
96
96
 
97
97
  async def stop(self) -> None:
@@ -99,11 +99,11 @@ class ClientLocal(Client): # pragma: no cover
99
99
 
100
100
  @inspector(re_raise=False, measure_performance=True)
101
101
  async def fetch_all_device_data(self) -> None:
102
- """Fetch all device data from CCU."""
102
+ """Fetch all device data from the backend."""
103
103
 
104
104
  @inspector(re_raise=False, measure_performance=True)
105
105
  async def fetch_device_details(self) -> None:
106
- """Fetch names from backend."""
106
+ """Fetch names from the backend."""
107
107
 
108
108
  @inspector(re_raise=False, no_raise_return=False)
109
109
  async def is_connected(self) -> bool:
@@ -121,41 +121,41 @@ class ClientLocal(Client): # pragma: no cover
121
121
 
122
122
  @inspector(re_raise=False, no_raise_return=False)
123
123
  async def check_connection_availability(self, handle_ping_pong: bool) -> bool:
124
- """Send ping to CCU to generate PONG event."""
124
+ """Send ping to the backend to generate PONG event."""
125
125
  if handle_ping_pong and self.supports_ping_pong:
126
126
  self._ping_pong_cache.handle_send_ping(ping_ts=datetime.now())
127
127
  return True
128
128
 
129
129
  @inspector
130
130
  async def execute_program(self, pid: str) -> bool:
131
- """Execute a program on CCU / Homegear."""
131
+ """Execute a program on the backend."""
132
132
  return True
133
133
 
134
134
  @inspector
135
135
  async def set_program_state(self, pid: str, state: bool) -> bool:
136
- """Set the program state on CCU / Homegear."""
136
+ """Set the program state on the backend."""
137
137
  return True
138
138
 
139
139
  @inspector(measure_performance=True)
140
140
  async def set_system_variable(self, legacy_name: str, value: Any) -> bool:
141
- """Set a system variable on CCU / Homegear."""
141
+ """Set a system variable on the backend."""
142
142
  return True
143
143
 
144
144
  @inspector
145
145
  async def delete_system_variable(self, name: str) -> bool:
146
- """Delete a system variable from CCU / Homegear."""
146
+ """Delete a system variable from the backend."""
147
147
  return True
148
148
 
149
149
  @inspector
150
150
  async def get_system_variable(self, name: str) -> str:
151
- """Get single system variable from CCU / Homegear."""
151
+ """Get single system variable from the backend."""
152
152
  return "Empty"
153
153
 
154
154
  @inspector(re_raise=False)
155
155
  async def get_all_system_variables(
156
156
  self, markers: tuple[DescriptionMarker | str, ...]
157
157
  ) -> tuple[SystemVariableData, ...]:
158
- """Get all system variables from CCU / Homegear."""
158
+ """Get all system variables from the backend."""
159
159
  return ()
160
160
 
161
161
  @inspector(re_raise=False)
@@ -179,7 +179,7 @@ class ClientLocal(Client): # pragma: no cover
179
179
 
180
180
  @inspector(re_raise=False, measure_performance=True)
181
181
  async def list_devices(self) -> tuple[DeviceDescription, ...] | None:
182
- """Get device descriptions from CCU / Homegear."""
182
+ """Get device descriptions from the backend."""
183
183
  if not self._local_resources:
184
184
  _LOGGER.warning(
185
185
  "LIST_DEVICES: missing local_resources in config for %s",
@@ -208,7 +208,7 @@ class ClientLocal(Client): # pragma: no cover
208
208
  parameter: str,
209
209
  call_source: CallSource = CallSource.MANUAL_OR_SCHEDULED,
210
210
  ) -> Any:
211
- """Return a value from CCU."""
211
+ """Return a value from the backend."""
212
212
  return
213
213
 
214
214
  @inspector(re_raise=False, no_raise_return=set())
@@ -239,7 +239,7 @@ class ClientLocal(Client): # pragma: no cover
239
239
  call_source: CallSource = CallSource.MANUAL_OR_SCHEDULED,
240
240
  ) -> Any:
241
241
  """
242
- Return a paramset from CCU.
242
+ Return a paramset from the backend.
243
243
 
244
244
  Address is usually the channel_address,
245
245
  but for bidcos devices there is a master paramset at the device.
@@ -249,7 +249,7 @@ class ClientLocal(Client): # pragma: no cover
249
249
  async def _get_paramset_description(
250
250
  self, address: str, paramset_key: ParamsetKey
251
251
  ) -> dict[str, ParameterData] | None:
252
- """Get paramset description from CCU."""
252
+ """Get paramset description from the backend."""
253
253
  if not self._local_resources:
254
254
  _LOGGER.warning(
255
255
  "GET_PARAMSET_DESCRIPTION: missing local_resources in config for %s",