Fix twoSet temp and fan_mode error in LG ThinQ integration (#131130)

Co-authored-by: yunseon.park <yunseon.park@lge.com>
This commit is contained in:
LG-ThinQ-Integration 2024-11-26 17:05:16 +09:00 committed by GitHub
parent 17466684a6
commit db07483c40
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -12,7 +12,6 @@ from thinqconnect.integration import ExtendedProperty
from homeassistant.components.climate import ( from homeassistant.components.climate import (
ATTR_TARGET_TEMP_HIGH, ATTR_TARGET_TEMP_HIGH,
ATTR_TARGET_TEMP_LOW, ATTR_TARGET_TEMP_LOW,
FAN_OFF,
ClimateEntity, ClimateEntity,
ClimateEntityDescription, ClimateEntityDescription,
ClimateEntityFeature, ClimateEntityFeature,
@ -37,7 +36,7 @@ class ThinQClimateEntityDescription(ClimateEntityDescription):
step: float | None = None step: float | None = None
DEVIE_TYPE_CLIMATE_MAP: dict[DeviceType, tuple[ThinQClimateEntityDescription, ...]] = { DEVICE_TYPE_CLIMATE_MAP: dict[DeviceType, tuple[ThinQClimateEntityDescription, ...]] = {
DeviceType.AIR_CONDITIONER: ( DeviceType.AIR_CONDITIONER: (
ThinQClimateEntityDescription( ThinQClimateEntityDescription(
key=ExtendedProperty.CLIMATE_AIR_CONDITIONER, key=ExtendedProperty.CLIMATE_AIR_CONDITIONER,
@ -86,7 +85,7 @@ async def async_setup_entry(
entities: list[ThinQClimateEntity] = [] entities: list[ThinQClimateEntity] = []
for coordinator in entry.runtime_data.coordinators.values(): for coordinator in entry.runtime_data.coordinators.values():
if ( if (
descriptions := DEVIE_TYPE_CLIMATE_MAP.get( descriptions := DEVICE_TYPE_CLIMATE_MAP.get(
coordinator.api.device.device_type coordinator.api.device.device_type
) )
) is not None: ) is not None:
@ -149,10 +148,9 @@ class ThinQClimateEntity(ThinQEntity, ClimateEntity):
super()._update_status() super()._update_status()
# Update fan, hvac and preset mode. # Update fan, hvac and preset mode.
if self.supported_features & ClimateEntityFeature.FAN_MODE:
self._attr_fan_mode = self.data.fan_mode
if self.data.is_on: if self.data.is_on:
if self.supported_features & ClimateEntityFeature.FAN_MODE:
self._attr_fan_mode = self.data.fan_mode
hvac_mode = self._requested_hvac_mode or self.data.hvac_mode hvac_mode = self._requested_hvac_mode or self.data.hvac_mode
if hvac_mode in STR_TO_HVAC: if hvac_mode in STR_TO_HVAC:
self._attr_hvac_mode = STR_TO_HVAC.get(hvac_mode) self._attr_hvac_mode = STR_TO_HVAC.get(hvac_mode)
@ -160,9 +158,6 @@ class ThinQClimateEntity(ThinQEntity, ClimateEntity):
elif hvac_mode in THINQ_PRESET_MODE: elif hvac_mode in THINQ_PRESET_MODE:
self._attr_preset_mode = hvac_mode self._attr_preset_mode = hvac_mode
else: else:
if self.supported_features & ClimateEntityFeature.FAN_MODE:
self._attr_fan_mode = FAN_OFF
self._attr_hvac_mode = HVACMode.OFF self._attr_hvac_mode = HVACMode.OFF
self._attr_preset_mode = None self._attr_preset_mode = None
@ -170,6 +165,7 @@ class ThinQClimateEntity(ThinQEntity, ClimateEntity):
self._attr_current_humidity = self.data.humidity self._attr_current_humidity = self.data.humidity
self._attr_current_temperature = self.data.current_temp self._attr_current_temperature = self.data.current_temp
# Update min, max and step.
if (max_temp := self.entity_description.max_temp) is not None or ( if (max_temp := self.entity_description.max_temp) is not None or (
max_temp := self.data.max max_temp := self.data.max
) is not None: ) is not None:
@ -184,26 +180,18 @@ class ThinQClimateEntity(ThinQEntity, ClimateEntity):
self._attr_target_temperature_step = step self._attr_target_temperature_step = step
# Update target temperatures. # Update target temperatures.
if ( self._attr_target_temperature = self.data.target_temp
self.supported_features & ClimateEntityFeature.TARGET_TEMPERATURE_RANGE self._attr_target_temperature_high = self.data.target_temp_high
and self.hvac_mode == HVACMode.AUTO self._attr_target_temperature_low = self.data.target_temp_low
):
self._attr_target_temperature = None
self._attr_target_temperature_high = self.data.target_temp_high
self._attr_target_temperature_low = self.data.target_temp_low
else:
self._attr_target_temperature = self.data.target_temp
self._attr_target_temperature_high = None
self._attr_target_temperature_low = None
_LOGGER.debug( _LOGGER.debug(
"[%s:%s] update status: %s/%s -> %s/%s, hvac:%s, unit:%s, step:%s", "[%s:%s] update status: c:%s, t:%s, l:%s, h:%s, hvac:%s, unit:%s, step:%s",
self.coordinator.device_name, self.coordinator.device_name,
self.property_id, self.property_id,
self.data.current_temp,
self.data.target_temp,
self.current_temperature, self.current_temperature,
self.target_temperature, self.target_temperature,
self.target_temperature_low,
self.target_temperature_high,
self.hvac_mode, self.hvac_mode,
self.temperature_unit, self.temperature_unit,
self.target_temperature_step, self.target_temperature_step,