1 """Entity classes for the Airzone Cloud integration."""
3 from __future__
import annotations
5 from abc
import ABC, abstractmethod
9 from aioairzone_cloud.const
import (
26 from aioairzone_cloud.exceptions
import AirzoneCloudError
33 from .const
import DOMAIN, MANUFACTURER
34 from .coordinator
import AirzoneUpdateCoordinator
36 _LOGGER = logging.getLogger(__name__)
40 """Define an Airzone Cloud entity."""
42 _attr_has_entity_name =
True
46 """Return Airzone Cloud entity availability."""
47 return super().available
and self.
get_airzone_valueget_airzone_value(AZD_AVAILABLE)
51 """Return Airzone Cloud entity value by key."""
54 """Send Airzone parameters to Cloud API."""
55 raise NotImplementedError
59 """Define an Airzone Cloud Aidoo entity."""
63 coordinator: AirzoneUpdateCoordinator,
65 aidoo_data: dict[str, Any],
73 identifiers={(DOMAIN, aidoo_id)},
74 manufacturer=MANUFACTURER,
75 model=aidoo_data[AZD_MODEL],
76 name=aidoo_data[AZD_NAME],
77 via_device=(DOMAIN, aidoo_data[AZD_WEBSERVER]),
81 """Return Aidoo value by key."""
83 if aidoo := self.coordinator.data[AZD_AIDOOS].
get(self.
aidoo_idaidoo_id):
84 value = aidoo.get(key)
88 """Send Aidoo parameters to Cloud API."""
89 _LOGGER.debug(
"aidoo=%s: update_params=%s", self.entity_id, params)
91 await self.coordinator.airzone.api_set_aidoo_id_params(
94 except AirzoneCloudError
as error:
96 f
"Failed to set {self.entity_id} params: {error}"
103 """Define an Airzone Cloud Group entity."""
107 coordinator: AirzoneUpdateCoordinator,
109 group_data: dict[str, Any],
117 identifiers={(DOMAIN, group_id)},
119 manufacturer=MANUFACTURER,
120 name=group_data[AZD_NAME],
124 """Return Group value by key."""
126 if group := self.coordinator.data[AZD_GROUPS].
get(self.
group_idgroup_id):
127 value = group.get(key)
131 """Send Group parameters to Cloud API."""
132 _LOGGER.debug(
"group=%s: update_params=%s", self.entity_id, params)
134 await self.coordinator.airzone.api_set_group_id_params(
137 except AirzoneCloudError
as error:
139 f
"Failed to set {self.entity_id} params: {error}"
146 """Define an Airzone Cloud Hot Water entity."""
150 coordinator: AirzoneUpdateCoordinator,
152 dhw_data: dict[str, Any],
160 identifiers={(DOMAIN, dhw_id)},
161 manufacturer=MANUFACTURER,
163 name=dhw_data[AZD_NAME],
164 via_device=(DOMAIN, dhw_data[AZD_WEBSERVER]),
168 """Return DHW value by key."""
170 if dhw := self.coordinator.data[AZD_HOT_WATERS].
get(self.
dhw_iddhw_id):
175 """Send DHW parameters to Cloud API."""
176 _LOGGER.debug(
"dhw=%s: update_params=%s", self.entity_id, params)
178 await self.coordinator.airzone.api_set_dhw_id_params(self.
dhw_iddhw_id, params)
179 except AirzoneCloudError
as error:
181 f
"Failed to set {self.entity_id} params: {error}"
188 """Define an Airzone Cloud Installation entity."""
192 coordinator: AirzoneUpdateCoordinator,
194 inst_data: dict[str, Any],
202 identifiers={(DOMAIN, inst_id)},
203 manufacturer=MANUFACTURER,
204 model=
"Installation",
205 name=inst_data[AZD_NAME],
209 """Return Installation value by key."""
211 if inst := self.coordinator.data[AZD_INSTALLATIONS].
get(self.
inst_idinst_id):
212 value = inst.get(key)
216 """Send Installation parameters to Cloud API."""
218 "installation=%s: update_params=%s",
223 await self.coordinator.airzone.api_set_installation_id_params(
226 except AirzoneCloudError
as error:
228 f
"Failed to set {self.entity_id} params: {error}"
235 """Define an Airzone Cloud System entity."""
239 coordinator: AirzoneUpdateCoordinator,
241 system_data: dict[str, Any],
249 identifiers={(DOMAIN, system_id)},
250 model=system_data.get(AZD_MODEL),
251 manufacturer=MANUFACTURER,
252 name=system_data[AZD_NAME],
253 via_device=(DOMAIN, system_data[AZD_WEBSERVER]),
254 sw_version=system_data.get(AZD_FIRMWARE),
258 """Return system value by key."""
260 if system := self.coordinator.data[AZD_SYSTEMS].
get(self.
system_idsystem_id):
261 value = system.get(key)
266 """Define an Airzone Cloud WebServer entity."""
270 coordinator: AirzoneUpdateCoordinator,
272 ws_data: dict[str, Any],
280 connections={(dr.CONNECTION_NETWORK_MAC, ws_id)},
281 identifiers={(DOMAIN, ws_id)},
283 manufacturer=MANUFACTURER,
284 name=ws_data[AZD_NAME],
285 sw_version=ws_data[AZD_FIRMWARE],
289 """Return WebServer value by key."""
291 if webserver := self.coordinator.data[AZD_WEBSERVERS].
get(self.
ws_idws_id):
292 value = webserver.get(key)
297 """Define an Airzone Cloud Zone entity."""
301 coordinator: AirzoneUpdateCoordinator,
303 zone_data: dict[str, Any],
312 identifiers={(DOMAIN, zone_id)},
313 model=zone_data.get(AZD_THERMOSTAT_MODEL),
314 manufacturer=MANUFACTURER,
315 name=zone_data[AZD_NAME],
316 via_device=(DOMAIN, self.
system_idsystem_id),
317 sw_version=zone_data.get(AZD_THERMOSTAT_FW),
321 """Return zone value by key."""
323 if zone := self.coordinator.data[AZD_ZONES].
get(self.
zone_idzone_id):
324 value = zone.get(key)
328 """Send Zone parameters to Cloud API."""
329 _LOGGER.debug(
"zone=%s: update_params=%s", self.entity_id, params)
331 await self.coordinator.airzone.api_set_zone_id_params(self.
zone_idzone_id, params)
332 except AirzoneCloudError
as error:
334 f
"Failed to set {self.entity_id} params: {error}"
None __init__(self, AirzoneUpdateCoordinator coordinator, str aidoo_id, dict[str, Any] aidoo_data)
None _async_update_params(self, dict[str, Any] params)
Any get_airzone_value(self, str key)
None _async_update_params(self, dict[str, Any] params)
Any get_airzone_value(self, str key)
Any get_airzone_value(self, str key)
None __init__(self, AirzoneUpdateCoordinator coordinator, str group_id, dict[str, Any] group_data)
None _async_update_params(self, dict[str, Any] params)
None _async_update_params(self, dict[str, Any] params)
None __init__(self, AirzoneUpdateCoordinator coordinator, str dhw_id, dict[str, Any] dhw_data)
Any get_airzone_value(self, str key)
Any get_airzone_value(self, str key)
None __init__(self, AirzoneUpdateCoordinator coordinator, str inst_id, dict[str, Any] inst_data)
None _async_update_params(self, dict[str, Any] params)
Any get_airzone_value(self, str key)
None __init__(self, AirzoneUpdateCoordinator coordinator, str system_id, dict[str, Any] system_data)
None __init__(self, AirzoneUpdateCoordinator coordinator, str ws_id, dict[str, Any] ws_data)
Any get_airzone_value(self, str key)
None _async_update_params(self, dict[str, Any] params)
None __init__(self, AirzoneUpdateCoordinator coordinator, str zone_id, dict[str, Any] zone_data)
Any get_airzone_value(self, str key)
None async_set_updated_data(self, _DataT data)
web.Response get(self, web.Request request, str config_key)