1 """Support for Adax wifi-enabled home heaters."""
3 from __future__
import annotations
5 from typing
import Any, cast
8 from adax_local
import Adax
as AdaxLocal
30 from .const
import ACCOUNT_ID, CONNECTION_TYPE, DOMAIN, LOCAL
36 async_add_entities: AddEntitiesCallback,
38 """Set up the Adax thermostat with config flow."""
39 if entry.data.get(CONNECTION_TYPE) == LOCAL:
40 adax_data_handler = AdaxLocal(
41 entry.data[CONF_IP_ADDRESS],
42 entry.data[CONF_TOKEN],
50 adax_data_handler = Adax(
51 entry.data[ACCOUNT_ID],
52 entry.data[CONF_PASSWORD],
59 for room
in await adax_data_handler.get_rooms()
66 """Representation of a heater."""
68 _attr_hvac_modes = [HVACMode.HEAT, HVACMode.OFF]
71 _attr_supported_features = (
72 ClimateEntityFeature.TARGET_TEMPERATURE
73 | ClimateEntityFeature.TURN_OFF
74 | ClimateEntityFeature.TURN_ON
76 _attr_target_temperature_step = PRECISION_WHOLE
77 _attr_temperature_unit = UnitOfTemperature.CELSIUS
78 _enable_turn_on_off_backwards_compatibility =
False
80 def __init__(self, heater_data: dict[str, Any], adax_data_handler: Adax) ->
None:
81 """Initialize the heater."""
85 self.
_attr_unique_id_attr_unique_id = f
"{heater_data['homeId']}_{heater_data['id']}"
87 identifiers={(DOMAIN, heater_data[
"id"])},
91 name=cast(str |
None, self.
namename),
97 if hvac_mode == HVACMode.HEAT:
102 elif hvac_mode == HVACMode.OFF:
111 """Set new target temperature."""
112 if (temperature := kwargs.get(ATTR_TEMPERATURE))
is None:
119 """Get the latest data."""
126 if room[
"heatingEnabled"]:
131 self.
_attr_icon_attr_icon =
"mdi:radiator-off"
136 """Representation of a heater."""
138 _attr_hvac_modes = [HVACMode.HEAT, HVACMode.OFF]
139 _attr_hvac_mode = HVACMode.HEAT
142 _attr_supported_features = (
143 ClimateEntityFeature.TARGET_TEMPERATURE
144 | ClimateEntityFeature.TURN_OFF
145 | ClimateEntityFeature.TURN_ON
147 _attr_target_temperature_step = PRECISION_WHOLE
148 _attr_temperature_unit = UnitOfTemperature.CELSIUS
150 def __init__(self, adax_data_handler: AdaxLocal, unique_id: str) ->
None:
151 """Initialize the heater."""
155 identifiers={(DOMAIN, unique_id)},
161 if hvac_mode == HVACMode.HEAT:
164 elif hvac_mode == HVACMode.OFF:
168 """Set new target temperature."""
169 if (temperature := kwargs.get(ATTR_TEMPERATURE))
is None:
174 """Get the latest data."""
178 if (target_temp := data[
"target_temperature"]) == 0:
None async_set_temperature(self, **Any kwargs)
None __init__(self, dict[str, Any] heater_data, Adax adax_data_handler)
_attr_current_temperature
None async_set_hvac_mode(self, HVACMode hvac_mode)
_attr_current_temperature
None __init__(self, AdaxLocal adax_data_handler, str unique_id)
None async_set_hvac_mode(self, HVACMode hvac_mode)
None async_set_temperature(self, **Any kwargs)
float|None target_temperature(self)
str|UndefinedType|None name(self)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
IssData update(pyiss.ISS iss)
def get_status(hass, host, port)
aiohttp.ClientSession async_get_clientsession(HomeAssistant hass, bool verify_ssl=True, socket.AddressFamily family=socket.AF_UNSPEC, ssl_util.SSLCipherList ssl_cipher=ssl_util.SSLCipherList.PYTHON_DEFAULT)