mirror of
https://github.com/home-assistant/core.git
synced 2025-07-17 02:07:09 +00:00
Reduce attribute lookups in climate needed to write state (#97145)
This commit is contained in:
parent
b655b9d530
commit
57c640c83c
@ -239,11 +239,12 @@ class ClimateEntity(Entity):
|
|||||||
@property
|
@property
|
||||||
def state(self) -> str | None:
|
def state(self) -> str | None:
|
||||||
"""Return the current state."""
|
"""Return the current state."""
|
||||||
if self.hvac_mode is None:
|
hvac_mode = self.hvac_mode
|
||||||
|
if hvac_mode is None:
|
||||||
return None
|
return None
|
||||||
if not isinstance(self.hvac_mode, HVACMode):
|
if not isinstance(hvac_mode, HVACMode):
|
||||||
return HVACMode(self.hvac_mode).value
|
return HVACMode(hvac_mode).value
|
||||||
return self.hvac_mode.value
|
return hvac_mode.value
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def precision(self) -> float:
|
def precision(self) -> float:
|
||||||
@ -258,18 +259,18 @@ class ClimateEntity(Entity):
|
|||||||
def capability_attributes(self) -> dict[str, Any] | None:
|
def capability_attributes(self) -> dict[str, Any] | None:
|
||||||
"""Return the capability attributes."""
|
"""Return the capability attributes."""
|
||||||
supported_features = self.supported_features
|
supported_features = self.supported_features
|
||||||
|
temperature_unit = self.temperature_unit
|
||||||
|
precision = self.precision
|
||||||
|
hass = self.hass
|
||||||
|
|
||||||
data: dict[str, Any] = {
|
data: dict[str, Any] = {
|
||||||
ATTR_HVAC_MODES: self.hvac_modes,
|
ATTR_HVAC_MODES: self.hvac_modes,
|
||||||
ATTR_MIN_TEMP: show_temp(
|
ATTR_MIN_TEMP: show_temp(hass, self.min_temp, temperature_unit, precision),
|
||||||
self.hass, self.min_temp, self.temperature_unit, self.precision
|
ATTR_MAX_TEMP: show_temp(hass, self.max_temp, temperature_unit, precision),
|
||||||
),
|
|
||||||
ATTR_MAX_TEMP: show_temp(
|
|
||||||
self.hass, self.max_temp, self.temperature_unit, self.precision
|
|
||||||
),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if self.target_temperature_step:
|
if target_temperature_step := self.target_temperature_step:
|
||||||
data[ATTR_TARGET_TEMP_STEP] = self.target_temperature_step
|
data[ATTR_TARGET_TEMP_STEP] = target_temperature_step
|
||||||
|
|
||||||
if supported_features & ClimateEntityFeature.TARGET_HUMIDITY:
|
if supported_features & ClimateEntityFeature.TARGET_HUMIDITY:
|
||||||
data[ATTR_MIN_HUMIDITY] = self.min_humidity
|
data[ATTR_MIN_HUMIDITY] = self.min_humidity
|
||||||
@ -291,39 +292,34 @@ class ClimateEntity(Entity):
|
|||||||
def state_attributes(self) -> dict[str, Any]:
|
def state_attributes(self) -> dict[str, Any]:
|
||||||
"""Return the optional state attributes."""
|
"""Return the optional state attributes."""
|
||||||
supported_features = self.supported_features
|
supported_features = self.supported_features
|
||||||
|
temperature_unit = self.temperature_unit
|
||||||
|
precision = self.precision
|
||||||
|
hass = self.hass
|
||||||
|
|
||||||
data: dict[str, str | float | None] = {
|
data: dict[str, str | float | None] = {
|
||||||
ATTR_CURRENT_TEMPERATURE: show_temp(
|
ATTR_CURRENT_TEMPERATURE: show_temp(
|
||||||
self.hass,
|
hass, self.current_temperature, temperature_unit, precision
|
||||||
self.current_temperature,
|
|
||||||
self.temperature_unit,
|
|
||||||
self.precision,
|
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
if supported_features & ClimateEntityFeature.TARGET_TEMPERATURE:
|
if supported_features & ClimateEntityFeature.TARGET_TEMPERATURE:
|
||||||
data[ATTR_TEMPERATURE] = show_temp(
|
data[ATTR_TEMPERATURE] = show_temp(
|
||||||
self.hass,
|
hass,
|
||||||
self.target_temperature,
|
self.target_temperature,
|
||||||
self.temperature_unit,
|
temperature_unit,
|
||||||
self.precision,
|
precision,
|
||||||
)
|
)
|
||||||
|
|
||||||
if supported_features & ClimateEntityFeature.TARGET_TEMPERATURE_RANGE:
|
if supported_features & ClimateEntityFeature.TARGET_TEMPERATURE_RANGE:
|
||||||
data[ATTR_TARGET_TEMP_HIGH] = show_temp(
|
data[ATTR_TARGET_TEMP_HIGH] = show_temp(
|
||||||
self.hass,
|
hass, self.target_temperature_high, temperature_unit, precision
|
||||||
self.target_temperature_high,
|
|
||||||
self.temperature_unit,
|
|
||||||
self.precision,
|
|
||||||
)
|
)
|
||||||
data[ATTR_TARGET_TEMP_LOW] = show_temp(
|
data[ATTR_TARGET_TEMP_LOW] = show_temp(
|
||||||
self.hass,
|
hass, self.target_temperature_low, temperature_unit, precision
|
||||||
self.target_temperature_low,
|
|
||||||
self.temperature_unit,
|
|
||||||
self.precision,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if self.current_humidity is not None:
|
if (current_humidity := self.current_humidity) is not None:
|
||||||
data[ATTR_CURRENT_HUMIDITY] = self.current_humidity
|
data[ATTR_CURRENT_HUMIDITY] = current_humidity
|
||||||
|
|
||||||
if supported_features & ClimateEntityFeature.TARGET_HUMIDITY:
|
if supported_features & ClimateEntityFeature.TARGET_HUMIDITY:
|
||||||
data[ATTR_HUMIDITY] = self.target_humidity
|
data[ATTR_HUMIDITY] = self.target_humidity
|
||||||
@ -331,8 +327,8 @@ class ClimateEntity(Entity):
|
|||||||
if supported_features & ClimateEntityFeature.FAN_MODE:
|
if supported_features & ClimateEntityFeature.FAN_MODE:
|
||||||
data[ATTR_FAN_MODE] = self.fan_mode
|
data[ATTR_FAN_MODE] = self.fan_mode
|
||||||
|
|
||||||
if self.hvac_action:
|
if hvac_action := self.hvac_action:
|
||||||
data[ATTR_HVAC_ACTION] = self.hvac_action
|
data[ATTR_HVAC_ACTION] = hvac_action
|
||||||
|
|
||||||
if supported_features & ClimateEntityFeature.PRESET_MODE:
|
if supported_features & ClimateEntityFeature.PRESET_MODE:
|
||||||
data[ATTR_PRESET_MODE] = self.preset_mode
|
data[ATTR_PRESET_MODE] = self.preset_mode
|
||||||
|
Loading…
x
Reference in New Issue
Block a user