1 """Support for Palazzetti climates."""
5 from pypalazzetti.exceptions
import CommunicationError, ValidationError
18 from .
import PalazzettiConfigEntry
19 from .const
import DOMAIN, FAN_AUTO, FAN_HIGH, FAN_MODES, FAN_SILENT
20 from .coordinator
import PalazzettiDataUpdateCoordinator
21 from .entity
import PalazzettiEntity
26 entry: PalazzettiConfigEntry,
27 async_add_entities: AddEntitiesCallback,
29 """Set up Palazzetti climates based on a config entry."""
34 """Defines a Palazzetti climate."""
36 _attr_has_entity_name =
True
38 _attr_translation_key = DOMAIN
39 _attr_target_temperature_step = 1.0
40 _attr_temperature_unit = UnitOfTemperature.CELSIUS
41 _attr_supported_features = (
42 ClimateEntityFeature.TARGET_TEMPERATURE
43 | ClimateEntityFeature.FAN_MODE
44 | ClimateEntityFeature.TURN_ON
45 | ClimateEntityFeature.TURN_OFF
48 def __init__(self, coordinator: PalazzettiDataUpdateCoordinator) ->
None:
49 """Initialize Palazzetti climate."""
51 client = coordinator.client
52 mac = coordinator.config_entry.unique_id
58 map(str, range(client.fan_speed_min, client.fan_speed_max + 1))
60 if client.has_fan_silent:
62 if client.has_fan_high:
64 if client.has_fan_auto:
69 """Return hvac operation ie. heat or off mode."""
70 return HVACMode.HEAT
if self.coordinator.client.is_on
else HVACMode.OFF
74 """Return hvac action ie. heating or idle."""
77 if self.coordinator.client.is_heating
82 """Set new target hvac mode."""
84 await self.coordinator.client.set_on(hvac_mode != HVACMode.OFF)
85 except CommunicationError
as err:
87 translation_domain=DOMAIN, translation_key=
"cannot_connect"
89 except ValidationError
as err:
91 translation_domain=DOMAIN, translation_key=
"on_off_not_available"
97 """Return current temperature."""
98 return self.coordinator.client.room_temperature
102 """Return the temperature."""
103 return self.coordinator.client.target_temperature
106 """Set new temperature."""
107 temperature =
int(kwargs[ATTR_TEMPERATURE])
109 await self.coordinator.client.set_target_temperature(temperature)
110 except CommunicationError
as err:
112 translation_domain=DOMAIN, translation_key=
"cannot_connect"
114 except ValidationError
as err:
116 translation_domain=DOMAIN,
117 translation_key=
"invalid_target_temperature",
118 translation_placeholders={
119 "value":
str(temperature),
126 """Return the fan mode."""
127 api_state = self.coordinator.client.fan_speed
128 return FAN_MODES[api_state]
131 """Set new fan mode."""
133 if fan_mode == FAN_SILENT:
134 await self.coordinator.client.set_fan_silent()
135 elif fan_mode == FAN_HIGH:
136 await self.coordinator.client.set_fan_high()
137 elif fan_mode == FAN_AUTO:
138 await self.coordinator.client.set_fan_auto()
140 await self.coordinator.client.set_fan_speed(FAN_MODES.index(fan_mode))
141 except CommunicationError
as err:
143 translation_domain=DOMAIN, translation_key=
"cannot_connect"
145 except ValidationError
as err:
147 translation_domain=DOMAIN,
148 translation_key=
"invalid_fan_mode",
149 translation_placeholders={
HVACAction hvac_action(self)
int|None target_temperature(self)
None async_set_fan_mode(self, str fan_mode)
None async_set_hvac_mode(self, HVACMode hvac_mode)
None __init__(self, PalazzettiDataUpdateCoordinator coordinator)
float|None current_temperature(self)
None async_set_temperature(self, **Any kwargs)
None async_setup_entry(HomeAssistant hass, PalazzettiConfigEntry entry, AddEntitiesCallback async_add_entities)