1 """Advantage Air parent entity class."""
5 from advantage_air
import ApiError
11 from .const
import DOMAIN
12 from .models
import AdvantageAirData
16 """Parent class for Advantage Air Entities."""
18 _attr_has_entity_name =
True
20 def __init__(self, instance: AdvantageAirData) ->
None:
21 """Initialize common aspects of an Advantage Air entity."""
22 super().
__init__(instance.coordinator)
23 self._attr_unique_id: str = self.coordinator.data[
"system"][
"rid"]
26 """Return the provided API function wrapped.
28 Adds an error handler and coordinator refresh, and presets keys.
31 async
def update_handle(*values):
33 if await func(*keys, *values):
34 await self.coordinator.async_request_refresh()
35 except ApiError
as err:
42 """Parent class for Advantage Air AC Entities."""
44 def __init__(self, instance: AdvantageAirData, ac_key: str) ->
None:
45 """Initialize common aspects of an Advantage Air ac entity."""
48 self.ac_key: str = ac_key
49 self._attr_unique_id += f
"-{ac_key}"
52 via_device=(DOMAIN, self.coordinator.data[
"system"][
"rid"]),
53 identifiers={(DOMAIN, self._attr_unique_id)},
54 manufacturer=
"Advantage Air",
55 model=self.coordinator.data[
"system"][
"sysType"],
56 name=self.coordinator.data[
"aircons"][self.ac_key][
"info"][
"name"],
59 instance.api.aircon.async_update_ac, self.ac_key
63 def _ac(self) -> dict[str, Any]:
64 return self.coordinator.data[
"aircons"][self.ac_key][
"info"]
67 def _myzone(self) -> dict[str, Any] | None:
68 return self.coordinator.data[
"aircons"][self.ac_key][
"zones"].
get(
69 f
"z{self._ac['myZone']:02}"
74 """Parent class for Advantage Air Zone Entities."""
76 def __init__(self, instance: AdvantageAirData, ac_key: str, zone_key: str) ->
None:
77 """Initialize common aspects of an Advantage Air zone entity."""
80 self.zone_key: str = zone_key
81 self._attr_unique_id += f
"-{zone_key}"
83 instance.api.aircon.async_update_zone, self.ac_key, self.zone_key
87 def _zone(self) -> dict[str, Any]:
88 return self.coordinator.data[
"aircons"][self.ac_key][
"zones"][self.zone_key]
92 """Parent class for Advantage Air Things Entities."""
96 def __init__(self, instance: AdvantageAirData, thing: dict[str, Any]) ->
None:
97 """Initialize common aspects of an Advantage Air Things entity."""
101 self._attr_unique_id += f
"-{self._id}"
104 via_device=(DOMAIN, self.coordinator.data[
"system"][
"rid"]),
105 identifiers={(DOMAIN, self._attr_unique_id)},
106 manufacturer=
"Advantage Air",
111 instance.api.things.async_update_value, self.
_id_id
116 """Return the thing data."""
117 return self.coordinator.data[
"myThings"][
"things"][self.
_id_id]
121 """Return if the thing is considered on."""
122 return self.
_data_data[
"value"] > 0
125 """Turn the thing on."""
129 """Turn the thing off."""
dict[str, Any]|None _myzone(self)
None __init__(self, AdvantageAirData instance, str ac_key)
def update_handle_factory(self, func, *keys)
None __init__(self, AdvantageAirData instance)
None __init__(self, AdvantageAirData instance, dict[str, Any] thing)
None async_turn_on(self, **Any kwargs)
None async_turn_off(self, **Any kwargs)
dict[str, Any] _zone(self)
None __init__(self, AdvantageAirData instance, str ac_key, str zone_key)
web.Response get(self, web.Request request, str config_key)