1 """Coordinator for the Moehlenhoff Alpha2."""
3 from __future__
import annotations
5 from datetime
import timedelta
9 from moehlenhoff_alpha2
import Alpha2Base
15 _LOGGER = logging.getLogger(__name__)
21 """Keep the base instance in one place and centralize the update."""
23 def __init__(self, hass: HomeAssistant, base: Alpha2Base) ->
None:
24 """Initialize Alpha2Base data updater."""
30 update_interval=UPDATE_INTERVAL,
34 """Fetch the latest data from the source."""
35 await self.
basebase.update_data()
37 "heat_areas": {ha[
"ID"]: ha
for ha
in self.
basebase.heat_areas
if ha.get(
"ID")},
39 hc[
"ID"]: hc
for hc
in self.
basebase.heat_controls
if hc.get(
"ID")
41 "io_devices": {io[
"ID"]: io
for io
in self.
basebase.io_devices
if io.get(
"ID")},
45 """Return if cooling mode is enabled."""
46 return self.
basebase.cooling
49 """Enable or disable cooling mode."""
50 await self.
basebase.set_cooling(enabled)
54 self, heat_area_id: str, target_temperature: float
56 """Set the target temperature of the given heat area."""
58 "Setting target temperature of heat area %s to %0.1f",
63 update_data = {
"T_TARGET": target_temperature}
65 heat_area_mode = self.
datadata[
"heat_areas"][heat_area_id][
"HEATAREA_MODE"]
66 if heat_area_mode == 1:
68 update_data[
"T_COOL_DAY"] = target_temperature
70 update_data[
"T_HEAT_DAY"] = target_temperature
71 elif heat_area_mode == 2:
73 update_data[
"T_COOL_NIGHT"] = target_temperature
75 update_data[
"T_HEAT_NIGHT"] = target_temperature
78 await self.
basebase.update_heat_area(heat_area_id, update_data)
79 except aiohttp.ClientError
as http_err:
81 "Failed to set target temperature, communication error with alpha2 base"
83 self.
datadata[
"heat_areas"][heat_area_id].
update(update_data)
87 self, heat_area_id: str, heat_area_mode: int
89 """Set the mode of the given heat area."""
91 if heat_area_mode
not in (0, 1, 2):
92 raise ValueError(f
"Invalid heat area mode: {heat_area_mode}")
94 "Setting mode of heat area %s to %d",
99 await self.
basebase.update_heat_area(
100 heat_area_id, {
"HEATAREA_MODE": heat_area_mode}
102 except aiohttp.ClientError
as http_err:
104 "Failed to set heat area mode, communication error with alpha2 base"
107 self.
datadata[
"heat_areas"][heat_area_id][
"HEATAREA_MODE"] = heat_area_mode
109 if heat_area_mode == 1:
111 self.
datadata[
"heat_areas"][heat_area_id][
"T_TARGET"] = self.
datadata[
113 ][heat_area_id][
"T_COOL_DAY"]
115 self.
datadata[
"heat_areas"][heat_area_id][
"T_TARGET"] = self.
datadata[
117 ][heat_area_id][
"T_HEAT_DAY"]
118 elif heat_area_mode == 2:
120 self.
datadata[
"heat_areas"][heat_area_id][
"T_TARGET"] = self.
datadata[
122 ][heat_area_id][
"T_COOL_NIGHT"]
124 self.
datadata[
"heat_areas"][heat_area_id][
"T_TARGET"] = self.
datadata[
126 ][heat_area_id][
"T_HEAT_NIGHT"]
dict[str, dict[str, dict]] _async_update_data(self)
None async_set_cooling(self, bool enabled)
None __init__(self, HomeAssistant hass, Alpha2Base base)
None async_set_target_temperature(self, str heat_area_id, float target_temperature)
None async_set_heat_area_mode(self, str heat_area_id, int heat_area_mode)
None async_update_listeners(self)
IssData update(pyiss.ISS iss)