1 """Constants for the KNX integration."""
3 from __future__
import annotations
5 from collections.abc
import Awaitable, Callable
6 from enum
import Enum, StrEnum
7 from typing
import TYPE_CHECKING, Final, TypedDict
9 from xknx.dpt.dpt_20
import HVACControllerMode
10 from xknx.telegram
import Telegram
17 from .
import KNXModule
20 KNX_MODULE_KEY: HassKey[KNXModule] =
HassKey(DOMAIN)
23 KNX_ADDRESS: Final =
"address"
25 CONF_INVERT: Final =
"invert"
26 CONF_KNX_EXPOSE: Final =
"expose"
27 CONF_KNX_INDIVIDUAL_ADDRESS: Final =
"individual_address"
32 CONF_KNX_CONNECTION_TYPE: Final =
"connection_type"
33 CONF_KNX_AUTOMATIC: Final =
"automatic"
34 CONF_KNX_ROUTING: Final =
"routing"
35 CONF_KNX_ROUTING_BACKBONE_KEY: Final =
"backbone_key"
36 CONF_KNX_ROUTING_SYNC_LATENCY_TOLERANCE: Final =
"sync_latency_tolerance"
37 CONF_KNX_ROUTING_SECURE: Final =
"routing_secure"
38 CONF_KNX_TUNNELING: Final =
"tunneling"
39 CONF_KNX_TUNNELING_TCP: Final =
"tunneling_tcp"
40 CONF_KNX_TUNNELING_TCP_SECURE: Final =
"tunneling_tcp_secure"
41 CONF_KNX_LOCAL_IP: Final =
"local_ip"
42 CONF_KNX_MCAST_GRP: Final =
"multicast_group"
43 CONF_KNX_MCAST_PORT: Final =
"multicast_port"
44 CONF_KNX_TUNNEL_ENDPOINT_IA: Final =
"tunnel_endpoint_ia"
46 CONF_KNX_RATE_LIMIT: Final =
"rate_limit"
47 CONF_KNX_ROUTE_BACK: Final =
"route_back"
48 CONF_KNX_STATE_UPDATER: Final =
"state_updater"
49 CONF_KNX_DEFAULT_STATE_UPDATER: Final =
True
50 CONF_KNX_DEFAULT_RATE_LIMIT: Final = 0
52 DEFAULT_ROUTING_IA: Final =
"0.0.240"
54 CONF_KNX_TELEGRAM_LOG_SIZE: Final =
"telegram_log_size"
55 TELEGRAM_LOG_DEFAULT: Final = 1000
56 TELEGRAM_LOG_MAX: Final = 25000
61 CONST_KNX_STORAGE_KEY: Final =
"knx/"
62 CONF_KNX_KNXKEY_FILENAME: Final =
"knxkeys_filename"
63 CONF_KNX_KNXKEY_PASSWORD: Final =
"knxkeys_password"
65 CONF_KNX_SECURE_USER_ID: Final =
"user_id"
66 CONF_KNX_SECURE_USER_PASSWORD: Final =
"user_password"
67 CONF_KNX_SECURE_DEVICE_AUTHENTICATION: Final =
"device_authentication"
70 CONF_PAYLOAD_LENGTH: Final =
"payload_length"
71 CONF_RESET_AFTER: Final =
"reset_after"
72 CONF_RESPOND_TO_READ: Final =
"respond_to_read"
73 CONF_STATE_ADDRESS: Final =
"state_address"
74 CONF_SYNC_STATE: Final =
"sync_state"
77 DATA_HASS_CONFIG: Final =
"knx_hass_config"
79 ATTR_COUNTER: Final =
"counter"
80 ATTR_SOURCE: Final =
"source"
83 type AsyncMessageCallbackType = Callable[[Telegram], Awaitable[
None]]
84 type MessageCallbackType = Callable[[Telegram],
None]
86 SERVICE_KNX_SEND: Final =
"send"
87 SERVICE_KNX_ATTR_PAYLOAD: Final =
"payload"
88 SERVICE_KNX_ATTR_TYPE: Final =
"type"
89 SERVICE_KNX_ATTR_RESPONSE: Final =
"response"
90 SERVICE_KNX_ATTR_REMOVE: Final =
"remove"
91 SERVICE_KNX_EVENT_REGISTER: Final =
"event_register"
92 SERVICE_KNX_EXPOSURE_REGISTER: Final =
"exposure_register"
93 SERVICE_KNX_READ: Final =
"read"
97 """Config entry for the KNX integration."""
100 individual_address: str
107 tunnel_endpoint_ia: str |
None
110 user_password: str |
None
111 device_authentication: str |
None
112 knxkeys_filename: str
113 knxkeys_password: str
114 backbone_key: str |
None
115 sync_latency_tolerance: int |
None
120 telegram_log_size: int
124 """Color temperature modes for config validation."""
133 """Enum for setting the fan zero mode."""
139 SUPPORTED_PLATFORMS_YAML: Final = {
140 Platform.BINARY_SENSOR,
159 SUPPORTED_PLATFORMS_UI: Final = {Platform.SWITCH, Platform.LIGHT}
162 CONTROLLER_MODES: Final = {
164 HVACControllerMode.AUTO: HVACMode.AUTO,
165 HVACControllerMode.HEAT: HVACMode.HEAT,
166 HVACControllerMode.COOL: HVACMode.COOL,
167 HVACControllerMode.OFF: HVACMode.OFF,
168 HVACControllerMode.FAN_ONLY: HVACMode.FAN_ONLY,
169 HVACControllerMode.DEHUMIDIFICATION: HVACMode.DRY,
172 CURRENT_HVAC_ACTIONS: Final = {
173 HVACMode.HEAT: HVACAction.HEATING,
174 HVACMode.COOL: HVACAction.COOLING,
175 HVACMode.OFF: HVACAction.OFF,
176 HVACMode.FAN_ONLY: HVACAction.FAN,
177 HVACMode.DRY: HVACAction.DRYING,