diff --git a/homeassistant/components/demo/humidifier.py b/homeassistant/components/demo/humidifier.py index 0b366e90efe..c04c44cd8c5 100644 --- a/homeassistant/components/demo/humidifier.py +++ b/homeassistant/components/demo/humidifier.py @@ -2,7 +2,7 @@ from __future__ import annotations from homeassistant.components.humidifier import HumidifierDeviceClass, HumidifierEntity -from homeassistant.components.humidifier.const import SUPPORT_MODES +from homeassistant.components.humidifier.const import HumidifierEntityFeature from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback @@ -71,7 +71,7 @@ class DemoHumidifier(HumidifierEntity): self._attr_supported_features = SUPPORT_FLAGS if mode is not None: self._attr_supported_features = ( - self._attr_supported_features | SUPPORT_MODES + self._attr_supported_features | HumidifierEntityFeature.MODES ) self._attr_target_humidity = target_humidity self._attr_mode = mode diff --git a/homeassistant/components/humidifier/__init__.py b/homeassistant/components/humidifier/__init__.py index 8eda2589417..b5f02a6a5d3 100644 --- a/homeassistant/components/humidifier/__init__.py +++ b/homeassistant/components/humidifier/__init__.py @@ -41,6 +41,7 @@ from .const import ( # noqa: F401 SERVICE_SET_HUMIDITY, SERVICE_SET_MODE, SUPPORT_MODES, + HumidifierEntityFeature, ) _LOGGER = logging.getLogger(__name__) @@ -88,7 +89,7 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: SERVICE_SET_MODE, {vol.Required(ATTR_MODE): cv.string}, "async_set_mode", - [SUPPORT_MODES], + [HumidifierEntityFeature.MODES], ) component.async_register_entity_service( SERVICE_SET_HUMIDITY, @@ -142,7 +143,7 @@ class HumidifierEntity(ToggleEntity): ATTR_MAX_HUMIDITY: self.max_humidity, } - if supported_features & SUPPORT_MODES: + if supported_features & HumidifierEntityFeature.MODES: data[ATTR_AVAILABLE_MODES] = self.available_modes return data @@ -166,7 +167,7 @@ class HumidifierEntity(ToggleEntity): if self.target_humidity is not None: data[ATTR_HUMIDITY] = self.target_humidity - if supported_features & SUPPORT_MODES: + if supported_features & HumidifierEntityFeature.MODES: data[ATTR_MODE] = self.mode return data @@ -180,7 +181,7 @@ class HumidifierEntity(ToggleEntity): def mode(self) -> str | None: """Return the current mode, e.g., home, auto, baby. - Requires SUPPORT_MODES. + Requires HumidifierEntityFeature.MODES. """ return self._attr_mode @@ -188,7 +189,7 @@ class HumidifierEntity(ToggleEntity): def available_modes(self) -> list[str] | None: """Return a list of available modes. - Requires SUPPORT_MODES. + Requires HumidifierEntityFeature.MODES. """ return self._attr_available_modes diff --git a/homeassistant/components/humidifier/const.py b/homeassistant/components/humidifier/const.py index a3df2756af9..03f89f5489a 100644 --- a/homeassistant/components/humidifier/const.py +++ b/homeassistant/components/humidifier/const.py @@ -1,4 +1,6 @@ """Provides the constants needed for component.""" +from enum import IntEnum + MODE_NORMAL = "normal" MODE_ECO = "eco" MODE_AWAY = "away" @@ -27,4 +29,13 @@ DEVICE_CLASS_DEHUMIDIFIER = "dehumidifier" SERVICE_SET_MODE = "set_mode" SERVICE_SET_HUMIDITY = "set_humidity" + +class HumidifierEntityFeature(IntEnum): + """Supported features of the alarm control panel entity.""" + + MODES = 1 + + +# The SUPPORT_MODES constant is deprecated as of Home Assistant 2022.5. +# Please use the HumidifierEntityFeature enum instead. SUPPORT_MODES = 1 diff --git a/homeassistant/components/humidifier/device_action.py b/homeassistant/components/humidifier/device_action.py index 5ff79bdf2be..db51ab34baa 100644 --- a/homeassistant/components/humidifier/device_action.py +++ b/homeassistant/components/humidifier/device_action.py @@ -66,7 +66,7 @@ async def async_get_actions( } actions.append({**base_action, CONF_TYPE: "set_humidity"}) - if supported_features & const.SUPPORT_MODES: + if supported_features & const.HumidifierEntityFeature.MODES: actions.append({**base_action, CONF_TYPE: "set_mode"}) return actions diff --git a/homeassistant/components/humidifier/device_condition.py b/homeassistant/components/humidifier/device_condition.py index 323d199cfc6..c58c247d569 100644 --- a/homeassistant/components/humidifier/device_condition.py +++ b/homeassistant/components/humidifier/device_condition.py @@ -51,7 +51,7 @@ async def async_get_conditions( supported_features = get_supported_features(hass, entry.entity_id) - if supported_features & const.SUPPORT_MODES: + if supported_features & const.HumidifierEntityFeature.MODES: conditions.append( { CONF_CONDITION: "device", diff --git a/homeassistant/components/humidifier/intent.py b/homeassistant/components/humidifier/intent.py index d9ecafbc537..aeeb18cceec 100644 --- a/homeassistant/components/humidifier/intent.py +++ b/homeassistant/components/humidifier/intent.py @@ -13,7 +13,7 @@ from . import ( SERVICE_SET_HUMIDITY, SERVICE_SET_MODE, SERVICE_TURN_ON, - SUPPORT_MODES, + HumidifierEntityFeature, ) INTENT_HUMIDITY = "HassHumidifierSetpoint" @@ -90,7 +90,7 @@ class SetModeHandler(intent.IntentHandler): service_data = {ATTR_ENTITY_ID: state.entity_id} - intent.async_test_feature(state, SUPPORT_MODES, "modes") + intent.async_test_feature(state, HumidifierEntityFeature.MODES, "modes") mode = slots["mode"]["value"] if mode not in state.attributes.get(ATTR_AVAILABLE_MODES, []): diff --git a/tests/components/humidifier/test_device_action.py b/tests/components/humidifier/test_device_action.py index f8391e2509b..fee8afc7a72 100644 --- a/tests/components/humidifier/test_device_action.py +++ b/tests/components/humidifier/test_device_action.py @@ -36,9 +36,9 @@ def entity_reg(hass): "set_state,features_reg,features_state,expected_action_types", [ (False, 0, 0, []), - (False, const.SUPPORT_MODES, 0, ["set_mode"]), + (False, const.HumidifierEntityFeature.MODES, 0, ["set_mode"]), (True, 0, 0, []), - (True, 0, const.SUPPORT_MODES, ["set_mode"]), + (True, 0, const.HumidifierEntityFeature.MODES, ["set_mode"]), ], ) async def test_get_actions( diff --git a/tests/components/humidifier/test_device_condition.py b/tests/components/humidifier/test_device_condition.py index aed1079b915..9c9b83a79d6 100644 --- a/tests/components/humidifier/test_device_condition.py +++ b/tests/components/humidifier/test_device_condition.py @@ -42,9 +42,9 @@ def calls(hass): "set_state,features_reg,features_state,expected_condition_types", [ (False, 0, 0, []), - (False, const.SUPPORT_MODES, 0, ["is_mode"]), + (False, const.HumidifierEntityFeature.MODES, 0, ["is_mode"]), (True, 0, 0, []), - (True, 0, const.SUPPORT_MODES, ["is_mode"]), + (True, 0, const.HumidifierEntityFeature.MODES, ["is_mode"]), ], ) async def test_get_conditions(