aiohomematic 2026.1.29__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.
- aiohomematic/__init__.py +110 -0
- aiohomematic/_log_context_protocol.py +29 -0
- aiohomematic/api.py +410 -0
- aiohomematic/async_support.py +250 -0
- aiohomematic/backend_detection.py +462 -0
- aiohomematic/central/__init__.py +103 -0
- aiohomematic/central/async_rpc_server.py +760 -0
- aiohomematic/central/central_unit.py +1152 -0
- aiohomematic/central/config.py +463 -0
- aiohomematic/central/config_builder.py +772 -0
- aiohomematic/central/connection_state.py +160 -0
- aiohomematic/central/coordinators/__init__.py +38 -0
- aiohomematic/central/coordinators/cache.py +414 -0
- aiohomematic/central/coordinators/client.py +480 -0
- aiohomematic/central/coordinators/connection_recovery.py +1141 -0
- aiohomematic/central/coordinators/device.py +1166 -0
- aiohomematic/central/coordinators/event.py +514 -0
- aiohomematic/central/coordinators/hub.py +532 -0
- aiohomematic/central/decorators.py +184 -0
- aiohomematic/central/device_registry.py +229 -0
- aiohomematic/central/events/__init__.py +104 -0
- aiohomematic/central/events/bus.py +1392 -0
- aiohomematic/central/events/integration.py +424 -0
- aiohomematic/central/events/types.py +194 -0
- aiohomematic/central/health.py +762 -0
- aiohomematic/central/rpc_server.py +353 -0
- aiohomematic/central/scheduler.py +794 -0
- aiohomematic/central/state_machine.py +391 -0
- aiohomematic/client/__init__.py +203 -0
- aiohomematic/client/_rpc_errors.py +187 -0
- aiohomematic/client/backends/__init__.py +48 -0
- aiohomematic/client/backends/base.py +335 -0
- aiohomematic/client/backends/capabilities.py +138 -0
- aiohomematic/client/backends/ccu.py +487 -0
- aiohomematic/client/backends/factory.py +116 -0
- aiohomematic/client/backends/homegear.py +294 -0
- aiohomematic/client/backends/json_ccu.py +252 -0
- aiohomematic/client/backends/protocol.py +316 -0
- aiohomematic/client/ccu.py +1857 -0
- aiohomematic/client/circuit_breaker.py +459 -0
- aiohomematic/client/config.py +64 -0
- aiohomematic/client/handlers/__init__.py +40 -0
- aiohomematic/client/handlers/backup.py +157 -0
- aiohomematic/client/handlers/base.py +79 -0
- aiohomematic/client/handlers/device_ops.py +1085 -0
- aiohomematic/client/handlers/firmware.py +144 -0
- aiohomematic/client/handlers/link_mgmt.py +199 -0
- aiohomematic/client/handlers/metadata.py +436 -0
- aiohomematic/client/handlers/programs.py +144 -0
- aiohomematic/client/handlers/sysvars.py +100 -0
- aiohomematic/client/interface_client.py +1304 -0
- aiohomematic/client/json_rpc.py +2068 -0
- aiohomematic/client/request_coalescer.py +282 -0
- aiohomematic/client/rpc_proxy.py +629 -0
- aiohomematic/client/state_machine.py +324 -0
- aiohomematic/const.py +2207 -0
- aiohomematic/context.py +275 -0
- aiohomematic/converter.py +270 -0
- aiohomematic/decorators.py +390 -0
- aiohomematic/exceptions.py +185 -0
- aiohomematic/hmcli.py +997 -0
- aiohomematic/i18n.py +193 -0
- aiohomematic/interfaces/__init__.py +407 -0
- aiohomematic/interfaces/central.py +1067 -0
- aiohomematic/interfaces/client.py +1096 -0
- aiohomematic/interfaces/coordinators.py +63 -0
- aiohomematic/interfaces/model.py +1921 -0
- aiohomematic/interfaces/operations.py +217 -0
- aiohomematic/logging_context.py +134 -0
- aiohomematic/metrics/__init__.py +125 -0
- aiohomematic/metrics/_protocols.py +140 -0
- aiohomematic/metrics/aggregator.py +534 -0
- aiohomematic/metrics/dataclasses.py +489 -0
- aiohomematic/metrics/emitter.py +292 -0
- aiohomematic/metrics/events.py +183 -0
- aiohomematic/metrics/keys.py +300 -0
- aiohomematic/metrics/observer.py +563 -0
- aiohomematic/metrics/stats.py +172 -0
- aiohomematic/model/__init__.py +189 -0
- aiohomematic/model/availability.py +65 -0
- aiohomematic/model/calculated/__init__.py +89 -0
- aiohomematic/model/calculated/climate.py +276 -0
- aiohomematic/model/calculated/data_point.py +315 -0
- aiohomematic/model/calculated/field.py +147 -0
- aiohomematic/model/calculated/operating_voltage_level.py +286 -0
- aiohomematic/model/calculated/support.py +232 -0
- aiohomematic/model/custom/__init__.py +214 -0
- aiohomematic/model/custom/capabilities/__init__.py +67 -0
- aiohomematic/model/custom/capabilities/climate.py +41 -0
- aiohomematic/model/custom/capabilities/light.py +87 -0
- aiohomematic/model/custom/capabilities/lock.py +44 -0
- aiohomematic/model/custom/capabilities/siren.py +63 -0
- aiohomematic/model/custom/climate.py +1130 -0
- aiohomematic/model/custom/cover.py +722 -0
- aiohomematic/model/custom/data_point.py +360 -0
- aiohomematic/model/custom/definition.py +300 -0
- aiohomematic/model/custom/field.py +89 -0
- aiohomematic/model/custom/light.py +1174 -0
- aiohomematic/model/custom/lock.py +322 -0
- aiohomematic/model/custom/mixins.py +445 -0
- aiohomematic/model/custom/profile.py +945 -0
- aiohomematic/model/custom/registry.py +251 -0
- aiohomematic/model/custom/siren.py +462 -0
- aiohomematic/model/custom/switch.py +195 -0
- aiohomematic/model/custom/text_display.py +289 -0
- aiohomematic/model/custom/valve.py +78 -0
- aiohomematic/model/data_point.py +1416 -0
- aiohomematic/model/device.py +1840 -0
- aiohomematic/model/event.py +216 -0
- aiohomematic/model/generic/__init__.py +327 -0
- aiohomematic/model/generic/action.py +40 -0
- aiohomematic/model/generic/action_select.py +62 -0
- aiohomematic/model/generic/binary_sensor.py +30 -0
- aiohomematic/model/generic/button.py +31 -0
- aiohomematic/model/generic/data_point.py +177 -0
- aiohomematic/model/generic/dummy.py +150 -0
- aiohomematic/model/generic/number.py +76 -0
- aiohomematic/model/generic/select.py +56 -0
- aiohomematic/model/generic/sensor.py +76 -0
- aiohomematic/model/generic/switch.py +54 -0
- aiohomematic/model/generic/text.py +33 -0
- aiohomematic/model/hub/__init__.py +100 -0
- aiohomematic/model/hub/binary_sensor.py +24 -0
- aiohomematic/model/hub/button.py +28 -0
- aiohomematic/model/hub/connectivity.py +190 -0
- aiohomematic/model/hub/data_point.py +342 -0
- aiohomematic/model/hub/hub.py +864 -0
- aiohomematic/model/hub/inbox.py +135 -0
- aiohomematic/model/hub/install_mode.py +393 -0
- aiohomematic/model/hub/metrics.py +208 -0
- aiohomematic/model/hub/number.py +42 -0
- aiohomematic/model/hub/select.py +52 -0
- aiohomematic/model/hub/sensor.py +37 -0
- aiohomematic/model/hub/switch.py +43 -0
- aiohomematic/model/hub/text.py +30 -0
- aiohomematic/model/hub/update.py +221 -0
- aiohomematic/model/support.py +592 -0
- aiohomematic/model/update.py +140 -0
- aiohomematic/model/week_profile.py +1827 -0
- aiohomematic/property_decorators.py +719 -0
- aiohomematic/py.typed +0 -0
- aiohomematic/rega_scripts/accept_device_in_inbox.fn +51 -0
- aiohomematic/rega_scripts/create_backup_start.fn +28 -0
- aiohomematic/rega_scripts/create_backup_status.fn +89 -0
- aiohomematic/rega_scripts/fetch_all_device_data.fn +97 -0
- aiohomematic/rega_scripts/get_backend_info.fn +25 -0
- aiohomematic/rega_scripts/get_inbox_devices.fn +61 -0
- aiohomematic/rega_scripts/get_program_descriptions.fn +31 -0
- aiohomematic/rega_scripts/get_serial.fn +44 -0
- aiohomematic/rega_scripts/get_service_messages.fn +83 -0
- aiohomematic/rega_scripts/get_system_update_info.fn +39 -0
- aiohomematic/rega_scripts/get_system_variable_descriptions.fn +31 -0
- aiohomematic/rega_scripts/set_program_state.fn +17 -0
- aiohomematic/rega_scripts/set_system_variable.fn +19 -0
- aiohomematic/rega_scripts/trigger_firmware_update.fn +67 -0
- aiohomematic/schemas.py +256 -0
- aiohomematic/store/__init__.py +55 -0
- aiohomematic/store/dynamic/__init__.py +43 -0
- aiohomematic/store/dynamic/command.py +250 -0
- aiohomematic/store/dynamic/data.py +175 -0
- aiohomematic/store/dynamic/details.py +187 -0
- aiohomematic/store/dynamic/ping_pong.py +416 -0
- aiohomematic/store/persistent/__init__.py +71 -0
- aiohomematic/store/persistent/base.py +285 -0
- aiohomematic/store/persistent/device.py +233 -0
- aiohomematic/store/persistent/incident.py +380 -0
- aiohomematic/store/persistent/paramset.py +241 -0
- aiohomematic/store/persistent/session.py +556 -0
- aiohomematic/store/serialization.py +150 -0
- aiohomematic/store/storage.py +689 -0
- aiohomematic/store/types.py +526 -0
- aiohomematic/store/visibility/__init__.py +40 -0
- aiohomematic/store/visibility/parser.py +141 -0
- aiohomematic/store/visibility/registry.py +722 -0
- aiohomematic/store/visibility/rules.py +307 -0
- aiohomematic/strings.json +237 -0
- aiohomematic/support.py +706 -0
- aiohomematic/tracing.py +236 -0
- aiohomematic/translations/de.json +237 -0
- aiohomematic/translations/en.json +237 -0
- aiohomematic/type_aliases.py +51 -0
- aiohomematic/validator.py +128 -0
- aiohomematic-2026.1.29.dist-info/METADATA +296 -0
- aiohomematic-2026.1.29.dist-info/RECORD +188 -0
- aiohomematic-2026.1.29.dist-info/WHEEL +5 -0
- aiohomematic-2026.1.29.dist-info/entry_points.txt +2 -0
- aiohomematic-2026.1.29.dist-info/licenses/LICENSE +21 -0
- aiohomematic-2026.1.29.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
# Copyright (c) 2021-2026
|
|
3
|
+
"""
|
|
4
|
+
Central unit and core orchestration for Homematic CCU and compatible backends.
|
|
5
|
+
|
|
6
|
+
Overview
|
|
7
|
+
--------
|
|
8
|
+
This package provides the central coordination layer for aiohomematic. It models a
|
|
9
|
+
Homematic CCU (or compatible backend such as Homegear) and orchestrates
|
|
10
|
+
interfaces, devices, channels, data points, events, and background jobs.
|
|
11
|
+
|
|
12
|
+
The central unit ties together the various submodules: store, client adapters
|
|
13
|
+
(JSON-RPC/XML-RPC), device and data point models, and visibility/description store.
|
|
14
|
+
It exposes high-level APIs to query and manipulate the backend state while
|
|
15
|
+
encapsulating transport and scheduling details.
|
|
16
|
+
|
|
17
|
+
Public API (selected)
|
|
18
|
+
---------------------
|
|
19
|
+
- CentralUnit: The main coordination class. Manages client creation/lifecycle,
|
|
20
|
+
connection state, device and channel discovery, data point and event handling,
|
|
21
|
+
sysvar/program access, cache loading/saving, and dispatching handlers.
|
|
22
|
+
- CentralConfig: Configuration builder/holder for CentralUnit instances, including
|
|
23
|
+
connection parameters, feature toggles, and cache behavior.
|
|
24
|
+
- CentralConnectionState: Tracks connection issues per transport/client.
|
|
25
|
+
|
|
26
|
+
Internal helpers
|
|
27
|
+
----------------
|
|
28
|
+
- BackgroundScheduler: Asyncio-based scheduler for periodic tasks such as connection
|
|
29
|
+
health checks, data refreshes, and firmware status updates.
|
|
30
|
+
|
|
31
|
+
Quick start
|
|
32
|
+
-----------
|
|
33
|
+
Typical usage is to create a CentralConfig, build a CentralUnit, then start it.
|
|
34
|
+
|
|
35
|
+
Example (simplified):
|
|
36
|
+
|
|
37
|
+
from aiohomematic.central import CentralConfig
|
|
38
|
+
from aiohomematic.client import InterfaceConfig
|
|
39
|
+
from aiohomematic.const import Interface
|
|
40
|
+
|
|
41
|
+
cfg = CentralConfig(
|
|
42
|
+
name="MyCCU",
|
|
43
|
+
host="ccu.local",
|
|
44
|
+
username="admin",
|
|
45
|
+
password="secret",
|
|
46
|
+
central_id="ccu-main",
|
|
47
|
+
interface_configs={
|
|
48
|
+
InterfaceConfig(central_name="MyCCU", interface=Interface.HMIP_RF, port=2010),
|
|
49
|
+
InterfaceConfig(central_name="MyCCU", interface=Interface.BIDCOS_RF, port=2001),
|
|
50
|
+
},
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
central = await cfg.create_central()
|
|
54
|
+
await central.start() # start XML-RPC server, create/init clients, load store
|
|
55
|
+
# ... interact with devices / data points via central ...
|
|
56
|
+
await central.stop()
|
|
57
|
+
|
|
58
|
+
Notes
|
|
59
|
+
-----
|
|
60
|
+
- The central module is thread-aware and uses an internal Looper to schedule async tasks.
|
|
61
|
+
- For advanced scenarios, see xml_rpc_server and decorators modules in this package.
|
|
62
|
+
|
|
63
|
+
"""
|
|
64
|
+
|
|
65
|
+
from __future__ import annotations
|
|
66
|
+
|
|
67
|
+
# Re-export public API from submodules (excluding sub-packages coordinators/ and events/)
|
|
68
|
+
# For coordinators, import from: aiohomematic.central.coordinators
|
|
69
|
+
# For events, import from: aiohomematic.central.events
|
|
70
|
+
from aiohomematic.central.central_unit import CENTRAL_INSTANCES, CentralUnit
|
|
71
|
+
from aiohomematic.central.config import CentralConfig, check_config
|
|
72
|
+
from aiohomematic.central.config_builder import CentralConfigBuilder, ValidationError
|
|
73
|
+
from aiohomematic.central.connection_state import CentralConnectionState, ConnectionProblemIssuer
|
|
74
|
+
from aiohomematic.central.decorators import callback_backend_system, callback_event
|
|
75
|
+
from aiohomematic.central.device_registry import DeviceRegistry
|
|
76
|
+
from aiohomematic.central.health import CentralHealth, ConnectionHealth, HealthTracker
|
|
77
|
+
from aiohomematic.central.scheduler import BackgroundScheduler, SchedulerJob
|
|
78
|
+
|
|
79
|
+
__all__ = [
|
|
80
|
+
# Config
|
|
81
|
+
"CentralConfig",
|
|
82
|
+
"CentralConfigBuilder",
|
|
83
|
+
"ValidationError",
|
|
84
|
+
"check_config",
|
|
85
|
+
# Connection
|
|
86
|
+
"CentralConnectionState",
|
|
87
|
+
"ConnectionProblemIssuer",
|
|
88
|
+
# Core
|
|
89
|
+
"CENTRAL_INSTANCES",
|
|
90
|
+
"CentralUnit",
|
|
91
|
+
# Decorators
|
|
92
|
+
"callback_backend_system",
|
|
93
|
+
"callback_event",
|
|
94
|
+
# Health
|
|
95
|
+
"CentralHealth",
|
|
96
|
+
"ConnectionHealth",
|
|
97
|
+
"HealthTracker",
|
|
98
|
+
# Registry
|
|
99
|
+
"DeviceRegistry",
|
|
100
|
+
# Scheduler
|
|
101
|
+
"BackgroundScheduler",
|
|
102
|
+
"SchedulerJob",
|
|
103
|
+
]
|