From 4827fe5280a3bee5c135ef79dd66b02ca4195dde Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Tue, 26 Apr 2022 09:41:02 +0200 Subject: [PATCH] Use climate enums in homematicip_cloud (#70668) --- .../components/homematicip_cloud/climate.py | 47 +++++++---------- .../homematicip_cloud/test_climate.py | 52 +++++++++---------- 2 files changed, 44 insertions(+), 55 deletions(-) diff --git a/homeassistant/components/homematicip_cloud/climate.py b/homeassistant/components/homematicip_cloud/climate.py index 673c44db5dd..23da237331b 100644 --- a/homeassistant/components/homematicip_cloud/climate.py +++ b/homeassistant/components/homematicip_cloud/climate.py @@ -9,18 +9,15 @@ from homematicip.base.enums import AbsenceType from homematicip.device import Switch from homematicip.functionalHomes import IndoorClimateHome -from homeassistant.components.climate import ClimateEntity, ClimateEntityFeature +from homeassistant.components.climate import ClimateEntity from homeassistant.components.climate.const import ( - CURRENT_HVAC_HEAT, - CURRENT_HVAC_IDLE, - HVAC_MODE_AUTO, - HVAC_MODE_COOL, - HVAC_MODE_HEAT, - HVAC_MODE_OFF, PRESET_AWAY, PRESET_BOOST, PRESET_ECO, PRESET_NONE, + ClimateEntityFeature, + HVACAction, + HVACMode, ) from homeassistant.config_entries import ConfigEntry from homeassistant.const import ATTR_TEMPERATURE, TEMP_CELSIUS @@ -112,31 +109,29 @@ class HomematicipHeatingGroup(HomematicipGenericEntity, ClimateEntity): return self._device.humidity @property - def hvac_mode(self) -> str: + def hvac_mode(self) -> HVACMode: """Return hvac operation ie.""" if self._disabled_by_cooling_mode and not self._has_switch: - return HVAC_MODE_OFF + return HVACMode.OFF if self._device.boostMode: - return HVAC_MODE_HEAT + return HVACMode.HEAT if self._device.controlMode == HMIP_MANUAL_CM: - return HVAC_MODE_HEAT if self._heat_mode_enabled else HVAC_MODE_COOL + return HVACMode.HEAT if self._heat_mode_enabled else HVACMode.COOL - return HVAC_MODE_AUTO + return HVACMode.AUTO @property - def hvac_modes(self) -> list[str]: + def hvac_modes(self) -> list[HVACMode]: """Return the list of available hvac operation modes.""" if self._disabled_by_cooling_mode and not self._has_switch: - return [HVAC_MODE_OFF] + return [HVACMode.OFF] - return ( - [HVAC_MODE_AUTO, HVAC_MODE_HEAT] - if self._heat_mode_enabled - else [HVAC_MODE_AUTO, HVAC_MODE_COOL] - ) + if self._heat_mode_enabled: + return [HVACMode.AUTO, HVACMode.HEAT] + return [HVACMode.AUTO, HVACMode.COOL] @property - def hvac_action(self) -> str | None: + def hvac_action(self) -> HVACAction | None: """ Return the current hvac_action. @@ -147,9 +142,7 @@ class HomematicipHeatingGroup(HomematicipGenericEntity, ClimateEntity): and self._has_radiator_thermostat and self._heat_mode_enabled ): - return ( - CURRENT_HVAC_HEAT if self._device.valvePosition else CURRENT_HVAC_IDLE - ) + return HVACAction.HEATING if self._device.valvePosition else HVACAction.IDLE return None @@ -158,7 +151,7 @@ class HomematicipHeatingGroup(HomematicipGenericEntity, ClimateEntity): """Return the current preset mode.""" if self._device.boostMode: return PRESET_BOOST - if self.hvac_mode in (HVAC_MODE_COOL, HVAC_MODE_HEAT, HVAC_MODE_OFF): + if self.hvac_mode in (HVACMode.COOL, HVACMode.HEAT, HVACMode.OFF): return PRESET_NONE if self._device.controlMode == HMIP_ECO_CM: if self._indoor_climate.absenceType == AbsenceType.VACATION: @@ -213,12 +206,12 @@ class HomematicipHeatingGroup(HomematicipGenericEntity, ClimateEntity): if self.min_temp <= temperature <= self.max_temp: await self._device.set_point_temperature(temperature) - async def async_set_hvac_mode(self, hvac_mode: str) -> None: + async def async_set_hvac_mode(self, hvac_mode: HVACMode) -> None: """Set new target hvac mode.""" if hvac_mode not in self.hvac_modes: return - if hvac_mode == HVAC_MODE_AUTO: + if hvac_mode == HVACMode.AUTO: await self._device.set_control_mode(HMIP_AUTOMATIC_CM) else: await self._device.set_control_mode(HMIP_MANUAL_CM) @@ -235,7 +228,7 @@ class HomematicipHeatingGroup(HomematicipGenericEntity, ClimateEntity): if preset_mode in self._device_profile_names: profile_idx = self._get_profile_idx_by_name(preset_mode) if self._device.controlMode != HMIP_AUTOMATIC_CM: - await self.async_set_hvac_mode(HVAC_MODE_AUTO) + await self.async_set_hvac_mode(HVACMode.AUTO) await self._device.set_active_profile(profile_idx) @property diff --git a/tests/components/homematicip_cloud/test_climate.py b/tests/components/homematicip_cloud/test_climate.py index dc850fac026..93fa1700629 100644 --- a/tests/components/homematicip_cloud/test_climate.py +++ b/tests/components/homematicip_cloud/test_climate.py @@ -10,16 +10,12 @@ from homeassistant.components.climate.const import ( ATTR_HVAC_ACTION, ATTR_PRESET_MODE, ATTR_PRESET_MODES, - CURRENT_HVAC_HEAT, - CURRENT_HVAC_IDLE, - HVAC_MODE_AUTO, - HVAC_MODE_COOL, - HVAC_MODE_HEAT, - HVAC_MODE_OFF, PRESET_AWAY, PRESET_BOOST, PRESET_ECO, PRESET_NONE, + HVACAction, + HVACMode, ) from homeassistant.components.homematicip_cloud import DOMAIN as HMIPC_DOMAIN from homeassistant.components.homematicip_cloud.climate import ( @@ -53,7 +49,7 @@ async def test_hmip_heating_group_heat(hass, default_mock_hap_factory): hass, mock_hap, entity_id, entity_name, device_model ) - assert ha_state.state == HVAC_MODE_AUTO + assert ha_state.state == HVACMode.AUTO assert ha_state.attributes["current_temperature"] == 23.8 assert ha_state.attributes["min_temp"] == 5.0 assert ha_state.attributes["max_temp"] == 30.0 @@ -80,7 +76,7 @@ async def test_hmip_heating_group_heat(hass, default_mock_hap_factory): await hass.services.async_call( "climate", "set_hvac_mode", - {"entity_id": entity_id, "hvac_mode": HVAC_MODE_HEAT}, + {"entity_id": entity_id, "hvac_mode": HVACMode.HEAT}, blocking=True, ) assert len(hmip_device.mock_calls) == service_call_counter + 3 @@ -88,12 +84,12 @@ async def test_hmip_heating_group_heat(hass, default_mock_hap_factory): assert hmip_device.mock_calls[-1][1] == ("MANUAL",) await async_manipulate_test_data(hass, hmip_device, "controlMode", "MANUAL") ha_state = hass.states.get(entity_id) - assert ha_state.state == HVAC_MODE_HEAT + assert ha_state.state == HVACMode.HEAT await hass.services.async_call( "climate", "set_hvac_mode", - {"entity_id": entity_id, "hvac_mode": HVAC_MODE_AUTO}, + {"entity_id": entity_id, "hvac_mode": HVACMode.AUTO}, blocking=True, ) assert len(hmip_device.mock_calls) == service_call_counter + 5 @@ -101,7 +97,7 @@ async def test_hmip_heating_group_heat(hass, default_mock_hap_factory): assert hmip_device.mock_calls[-1][1] == ("AUTOMATIC",) await async_manipulate_test_data(hass, hmip_device, "controlMode", "AUTO") ha_state = hass.states.get(entity_id) - assert ha_state.state == HVAC_MODE_AUTO + assert ha_state.state == HVACMode.AUTO await hass.services.async_call( "climate", @@ -185,7 +181,7 @@ async def test_hmip_heating_group_heat(hass, default_mock_hap_factory): await hass.services.async_call( "climate", "set_hvac_mode", - {"entity_id": entity_id, "hvac_mode": HVAC_MODE_HEAT}, + {"entity_id": entity_id, "hvac_mode": HVACMode.HEAT}, blocking=True, ) assert len(hmip_device.mock_calls) == service_call_counter + 20 @@ -193,7 +189,7 @@ async def test_hmip_heating_group_heat(hass, default_mock_hap_factory): assert hmip_device.mock_calls[-1][1] == ("MANUAL",) await async_manipulate_test_data(hass, hmip_device, "controlMode", "MANUAL") ha_state = hass.states.get(entity_id) - assert ha_state.state == HVAC_MODE_HEAT + assert ha_state.state == HVACMode.HEAT await hass.services.async_call( "climate", @@ -208,7 +204,7 @@ async def test_hmip_heating_group_heat(hass, default_mock_hap_factory): hmip_device.activeProfile = hmip_device.profiles[0] await async_manipulate_test_data(hass, hmip_device, "controlMode", "AUTOMATIC") ha_state = hass.states.get(entity_id) - assert ha_state.state == HVAC_MODE_AUTO + assert ha_state.state == HVACMode.AUTO await hass.services.async_call( "climate", @@ -223,13 +219,13 @@ async def test_hmip_heating_group_heat(hass, default_mock_hap_factory): await async_manipulate_test_data(hass, hmip_device, "floorHeatingMode", "RADIATOR") await async_manipulate_test_data(hass, hmip_device, "valvePosition", 0.1) ha_state = hass.states.get(entity_id) - assert ha_state.state == HVAC_MODE_AUTO - assert ha_state.attributes[ATTR_HVAC_ACTION] == CURRENT_HVAC_HEAT + assert ha_state.state == HVACMode.AUTO + assert ha_state.attributes[ATTR_HVAC_ACTION] == HVACAction.HEATING await async_manipulate_test_data(hass, hmip_device, "floorHeatingMode", "RADIATOR") await async_manipulate_test_data(hass, hmip_device, "valvePosition", 0.0) ha_state = hass.states.get(entity_id) - assert ha_state.state == HVAC_MODE_AUTO - assert ha_state.attributes[ATTR_HVAC_ACTION] == CURRENT_HVAC_IDLE + assert ha_state.state == HVACMode.AUTO + assert ha_state.attributes[ATTR_HVAC_ACTION] == HVACAction.IDLE async def test_hmip_heating_group_cool(hass, default_mock_hap_factory): @@ -251,7 +247,7 @@ async def test_hmip_heating_group_cool(hass, default_mock_hap_factory): await async_manipulate_test_data(hass, hmip_device, "coolingIgnored", False) ha_state = hass.states.get(entity_id) - assert ha_state.state == HVAC_MODE_AUTO + assert ha_state.state == HVACMode.AUTO assert ha_state.attributes["current_temperature"] == 23.8 assert ha_state.attributes["min_temp"] == 5.0 assert ha_state.attributes["max_temp"] == 30.0 @@ -265,7 +261,7 @@ async def test_hmip_heating_group_cool(hass, default_mock_hap_factory): await hass.services.async_call( "climate", "set_hvac_mode", - {"entity_id": entity_id, "hvac_mode": HVAC_MODE_COOL}, + {"entity_id": entity_id, "hvac_mode": HVACMode.COOL}, blocking=True, ) assert len(hmip_device.mock_calls) == service_call_counter + 1 @@ -273,12 +269,12 @@ async def test_hmip_heating_group_cool(hass, default_mock_hap_factory): assert hmip_device.mock_calls[-1][1] == ("MANUAL",) await async_manipulate_test_data(hass, hmip_device, "controlMode", "MANUAL") ha_state = hass.states.get(entity_id) - assert ha_state.state == HVAC_MODE_COOL + assert ha_state.state == HVACMode.COOL await hass.services.async_call( "climate", "set_hvac_mode", - {"entity_id": entity_id, "hvac_mode": HVAC_MODE_AUTO}, + {"entity_id": entity_id, "hvac_mode": HVACMode.AUTO}, blocking=True, ) assert len(hmip_device.mock_calls) == service_call_counter + 3 @@ -286,7 +282,7 @@ async def test_hmip_heating_group_cool(hass, default_mock_hap_factory): assert hmip_device.mock_calls[-1][1] == ("AUTOMATIC",) await async_manipulate_test_data(hass, hmip_device, "controlMode", "AUTO") ha_state = hass.states.get(entity_id) - assert ha_state.state == HVAC_MODE_AUTO + assert ha_state.state == HVACMode.AUTO await hass.services.async_call( "climate", @@ -305,7 +301,7 @@ async def test_hmip_heating_group_cool(hass, default_mock_hap_factory): await async_manipulate_test_data(hass, hmip_device, "coolingIgnored", False) ha_state = hass.states.get(entity_id) - assert ha_state.state == HVAC_MODE_OFF + assert ha_state.state == HVACMode.OFF assert ha_state.attributes[ATTR_PRESET_MODE] == "none" assert ha_state.attributes[ATTR_PRESET_MODES] == [] @@ -315,7 +311,7 @@ async def test_hmip_heating_group_cool(hass, default_mock_hap_factory): await async_manipulate_test_data(hass, hmip_device, "coolingIgnored", True) ha_state = hass.states.get(entity_id) - assert ha_state.state == HVAC_MODE_OFF + assert ha_state.state == HVACMode.OFF assert ha_state.attributes[ATTR_PRESET_MODE] == "none" assert ha_state.attributes[ATTR_PRESET_MODES] == [] @@ -336,7 +332,7 @@ async def test_hmip_heating_group_cool(hass, default_mock_hap_factory): await async_manipulate_test_data(hass, hmip_device, "coolingIgnored", False) ha_state = hass.states.get(entity_id) - assert ha_state.state == HVAC_MODE_AUTO + assert ha_state.state == HVACMode.AUTO assert ha_state.attributes[ATTR_PRESET_MODE] == "Cool2" assert ha_state.attributes[ATTR_PRESET_MODES] == ["Cool1", "Cool2"] @@ -366,7 +362,7 @@ async def test_hmip_heating_group_heat_with_switch(hass, default_mock_hap_factor ) assert hmip_device - assert ha_state.state == HVAC_MODE_AUTO + assert ha_state.state == HVACMode.AUTO assert ha_state.attributes["current_temperature"] == 24.7 assert ha_state.attributes["min_temp"] == 5.0 assert ha_state.attributes["max_temp"] == 30.0 @@ -390,7 +386,7 @@ async def test_hmip_heating_group_heat_with_radiator(hass, default_mock_hap_fact ) assert hmip_device - assert ha_state.state == HVAC_MODE_AUTO + assert ha_state.state == HVACMode.AUTO assert ha_state.attributes["current_temperature"] == 20 assert ha_state.attributes["min_temp"] == 5.0 assert ha_state.attributes["max_temp"] == 30.0