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,
|
SERVICE_TURN_ON,
|
||||||
STATE_ON,
|
STATE_ON,
|
||||||
)
|
)
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, HomeAssistantError, callback
|
||||||
import homeassistant.helpers.config_validation as cv
|
from homeassistant.helpers import config_validation as cv, entity_registry as er
|
||||||
from homeassistant.helpers.config_validation import ( # noqa: F401
|
from homeassistant.helpers.config_validation import ( # noqa: F401
|
||||||
PLATFORM_SCHEMA,
|
PLATFORM_SCHEMA,
|
||||||
PLATFORM_SCHEMA_BASE,
|
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
|
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.
|
# Float that represents transition time in seconds to make change.
|
||||||
ATTR_TRANSITION = "transition"
|
ATTR_TRANSITION = "transition"
|
||||||
|
|
||||||
|
|
|
@ -27,9 +27,9 @@ from homeassistant.helpers.typing import ConfigType, TemplateVarsType
|
||||||
from . import (
|
from . import (
|
||||||
ATTR_BRIGHTNESS_PCT,
|
ATTR_BRIGHTNESS_PCT,
|
||||||
ATTR_BRIGHTNESS_STEP_PCT,
|
ATTR_BRIGHTNESS_STEP_PCT,
|
||||||
ATTR_SUPPORTED_COLOR_MODES,
|
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
brightness_supported,
|
brightness_supported,
|
||||||
|
get_supported_color_modes,
|
||||||
)
|
)
|
||||||
|
|
||||||
TYPE_BRIGHTNESS_INCREASE = "brightness_increase"
|
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(
|
async def async_call_action_from_config(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
config: ConfigType,
|
config: ConfigType,
|
||||||
|
|
Loading…
Add table
Reference in a new issue