Add supported features property in Sensibo (#134479)

This commit is contained in:
G Johansson 2025-01-03 17:30:18 +01:00 committed by GitHub
parent ee025198e8
commit 97aa93f92b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 12 additions and 38 deletions

View File

@ -206,12 +206,12 @@ class SensiboClimate(SensiboDeviceBaseEntity, ClimateEntity):
if self.device_data.temp_unit == "C"
else UnitOfTemperature.FAHRENHEIT
)
self._attr_supported_features = self.get_features()
def get_features(self) -> ClimateEntityFeature:
"""Get supported features."""
@property
def supported_features(self) -> ClimateEntityFeature:
"""Return the list of supported features."""
features = ClimateEntityFeature.TURN_OFF | ClimateEntityFeature.TURN_ON
for key in self.device_data.full_features:
for key in self.device_data.active_features:
if key in FIELD_TO_FLAG:
features |= FIELD_TO_FLAG[key]
return features
@ -297,12 +297,6 @@ class SensiboClimate(SensiboDeviceBaseEntity, ClimateEntity):
async def async_set_temperature(self, **kwargs: Any) -> None:
"""Set new target temperature."""
if "targetTemperature" not in self.device_data.active_features:
raise HomeAssistantError(
translation_domain=DOMAIN,
translation_key="no_target_temperature_in_features",
)
temperature: float = kwargs[ATTR_TEMPERATURE]
if temperature == self.target_temperature:
return
@ -317,11 +311,6 @@ class SensiboClimate(SensiboDeviceBaseEntity, ClimateEntity):
async def async_set_fan_mode(self, fan_mode: str) -> None:
"""Set new target fan mode."""
if "fanLevel" not in self.device_data.active_features:
raise HomeAssistantError(
translation_domain=DOMAIN,
translation_key="no_fan_level_in_features",
)
if fan_mode not in AVAILABLE_FAN_MODES:
raise HomeAssistantError(
translation_domain=DOMAIN,
@ -367,11 +356,6 @@ class SensiboClimate(SensiboDeviceBaseEntity, ClimateEntity):
async def async_set_swing_mode(self, swing_mode: str) -> None:
"""Set new target swing operation."""
if "swing" not in self.device_data.active_features:
raise HomeAssistantError(
translation_domain=DOMAIN,
translation_key="no_swing_in_features",
)
if swing_mode not in AVAILABLE_SWING_MODES:
raise HomeAssistantError(
translation_domain=DOMAIN,

View File

@ -535,18 +535,9 @@
}
},
"exceptions": {
"no_target_temperature_in_features": {
"message": "Current mode doesn't support setting target temperature"
},
"no_fan_level_in_features": {
"message": "Current mode doesn't support setting fan level"
},
"fan_mode_not_supported": {
"message": "Climate fan mode {fan_mode} is not supported by the integration, please open an issue"
},
"no_swing_in_features": {
"message": "Current mode doesn't support setting swing"
},
"swing_not_supported": {
"message": "Climate swing mode {swing_mode} is not supported by the integration, please open an issue"
},

View File

@ -194,7 +194,7 @@
'original_name': None,
'platform': 'sensibo',
'previous_unique_id': None,
'supported_features': <ClimateEntityFeature: 393>,
'supported_features': <ClimateEntityFeature: 392>,
'translation_key': 'climate_device',
'unique_id': 'AAZZAAZZ',
'unit_of_measurement': None,
@ -216,9 +216,8 @@
]),
'max_temp': 1,
'min_temp': 0,
'supported_features': <ClimateEntityFeature: 393>,
'supported_features': <ClimateEntityFeature: 392>,
'target_temp_step': 1,
'temperature': None,
}),
'context': <ANY>,
'entity_id': 'climate.kitchen',

View File

@ -177,7 +177,7 @@ async def test_climate_fan(
async_fire_time_changed(hass)
await hass.async_block_till_done()
with pytest.raises(HomeAssistantError):
with pytest.raises(HomeAssistantError, match="service_not_supported"):
await hass.services.async_call(
CLIMATE_DOMAIN,
SERVICE_SET_FAN_MODE,
@ -186,7 +186,7 @@ async def test_climate_fan(
)
state = hass.states.get("climate.hallway")
assert state.attributes["fan_mode"] == "low"
assert "fan_mode" not in state.attributes
async def test_climate_swing(
@ -262,7 +262,7 @@ async def test_climate_swing(
async_fire_time_changed(hass)
await hass.async_block_till_done()
with pytest.raises(HomeAssistantError):
with pytest.raises(HomeAssistantError, match="service_not_supported"):
await hass.services.async_call(
CLIMATE_DOMAIN,
SERVICE_SET_SWING_MODE,
@ -271,7 +271,7 @@ async def test_climate_swing(
)
state = hass.states.get("climate.hallway")
assert state.attributes["swing_mode"] == "fixedtop"
assert "swing_mode" not in state.attributes
async def test_climate_temperatures(
@ -387,7 +387,7 @@ async def test_climate_temperatures(
async_fire_time_changed(hass)
await hass.async_block_till_done()
with pytest.raises(HomeAssistantError):
with pytest.raises(HomeAssistantError, match="service_not_supported"):
await hass.services.async_call(
CLIMATE_DOMAIN,
SERVICE_SET_TEMPERATURE,
@ -396,7 +396,7 @@ async def test_climate_temperatures(
)
state = hass.states.get("climate.hallway")
assert state.attributes["temperature"] == 20
assert "temperature" not in state.attributes
async def test_climate_temperature_is_none(