Move light helper get_supported_color_modes (#51269)
This commit is contained in:
parent
04e9acc20a
commit
532626b738
2 changed files with 23 additions and 22 deletions
|
@ -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"
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Add table
Reference in a new issue