diff --git a/homeassistant/components/light/__init__.py b/homeassistant/components/light/__init__.py index 27f3bbfc0c6..7c650c06cf8 100644 --- a/homeassistant/components/light/__init__.py +++ b/homeassistant/components/light/__init__.py @@ -18,8 +18,8 @@ from homeassistant.const import ( SERVICE_TURN_ON, STATE_ON, ) -from homeassistant.core import HomeAssistant, callback -import homeassistant.helpers.config_validation as cv +from homeassistant.core import HomeAssistant, HomeAssistantError, callback +from homeassistant.helpers import config_validation as cv, entity_registry as er from homeassistant.helpers.config_validation import ( # noqa: F401 PLATFORM_SCHEMA, PLATFORM_SCHEMA_BASE, @@ -116,6 +116,26 @@ def color_temp_supported(color_modes: Iterable[str] | None) -> bool: return COLOR_MODE_COLOR_TEMP in color_modes +def get_supported_color_modes(hass: HomeAssistant, entity_id: str) -> set | None: + """Get supported color modes for a light entity. + + First try the statemachine, then entity registry. + This is the equivalent of entity helper get_supported_features. + """ + state = hass.states.get(entity_id) + if state: + return state.attributes.get(ATTR_SUPPORTED_COLOR_MODES) + + entity_registry = er.async_get(hass) + entry = entity_registry.async_get(entity_id) + if not entry: + raise HomeAssistantError(f"Unknown entity {entity_id}") + if not entry.capabilities: + return None + + return entry.capabilities.get(ATTR_SUPPORTED_COLOR_MODES) + + # Float that represents transition time in seconds to make change. ATTR_TRANSITION = "transition" diff --git a/homeassistant/components/light/device_action.py b/homeassistant/components/light/device_action.py index f533cc75586..2180bdd3094 100644 --- a/homeassistant/components/light/device_action.py +++ b/homeassistant/components/light/device_action.py @@ -27,9 +27,9 @@ from homeassistant.helpers.typing import ConfigType, TemplateVarsType from . import ( ATTR_BRIGHTNESS_PCT, ATTR_BRIGHTNESS_STEP_PCT, - ATTR_SUPPORTED_COLOR_MODES, DOMAIN, brightness_supported, + get_supported_color_modes, ) TYPE_BRIGHTNESS_INCREASE = "brightness_increase" @@ -50,25 +50,6 @@ ACTION_SCHEMA = cv.DEVICE_ACTION_BASE_SCHEMA.extend( ) -def get_supported_color_modes(hass: HomeAssistant, entity_id: str) -> set | None: - """Get supported color modes for a light entity. - - First try the statemachine, then entity registry. - """ - state = hass.states.get(entity_id) - if state: - return state.attributes.get(ATTR_SUPPORTED_COLOR_MODES) - - entity_registry = er.async_get(hass) - entry = entity_registry.async_get(entity_id) - if not entry: - raise HomeAssistantError(f"Unknown entity {entity_id}") - if not entry.capabilities: - return None - - return entry.capabilities.get(ATTR_SUPPORTED_COLOR_MODES) - - async def async_call_action_from_config( hass: HomeAssistant, config: ConfigType,