mirror of
https://github.com/home-assistant/core.git
synced 2026-09-26 17:31:15 -04:00
Move remaining lifx actions to services module (#182172)
This commit is contained in:
@@ -80,6 +80,8 @@ SERVICE_EFFECT_PULSE = "effect_pulse"
|
||||
SERVICE_EFFECT_SKY = "effect_sky"
|
||||
SERVICE_EFFECT_STOP = "effect_stop"
|
||||
SERVICE_PAINT_THEME = "paint_theme"
|
||||
SERVICE_SET_HEV_CYCLE_STATE = "set_hev_cycle_state"
|
||||
SERVICE_SET_STATE = "set_state"
|
||||
|
||||
HEV_CYCLE_STATE = "hev_cycle_state"
|
||||
INFRARED_BRIGHTNESS = "infrared_brightness"
|
||||
|
||||
@@ -5,7 +5,6 @@ from datetime import datetime, timedelta
|
||||
from typing import Any, override
|
||||
|
||||
import aiolifx_effects as aiolifx_effects_module
|
||||
import probatio
|
||||
|
||||
from homeassistant.components.light import (
|
||||
ATTR_BRIGHTNESS,
|
||||
@@ -13,7 +12,6 @@ from homeassistant.components.light import (
|
||||
ATTR_BRIGHTNESS_STEP_PCT,
|
||||
ATTR_EFFECT,
|
||||
ATTR_TRANSITION,
|
||||
LIGHT_TURN_ON_SCHEMA,
|
||||
ColorMode,
|
||||
LightEntity,
|
||||
LightEntityFeature,
|
||||
@@ -21,13 +19,10 @@ from homeassistant.components.light import (
|
||||
from homeassistant.const import ATTR_ENTITY_ID, Platform
|
||||
from homeassistant.core import CALLBACK_TYPE, HomeAssistant
|
||||
from homeassistant.exceptions import HomeAssistantError
|
||||
from homeassistant.helpers import config_validation as cv, entity_platform
|
||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||
from homeassistant.helpers.event import async_call_later
|
||||
from homeassistant.helpers.typing import VolDictType
|
||||
|
||||
from .const import (
|
||||
ATTR_DURATION,
|
||||
ATTR_INFRARED,
|
||||
ATTR_POWER,
|
||||
ATTR_ZONES,
|
||||
@@ -51,25 +46,6 @@ from .util import convert_8_to_16, convert_16_to_8, find_hsbk, lifx_features, me
|
||||
|
||||
LIFX_STATE_SETTLE_DELAY = 0.3
|
||||
|
||||
SERVICE_LIFX_SET_STATE = "set_state"
|
||||
|
||||
LIFX_SET_STATE_SCHEMA: VolDictType = {
|
||||
**LIGHT_TURN_ON_SCHEMA,
|
||||
ATTR_INFRARED: probatio.All(probatio.Coerce(int), probatio.Clamp(min=0, max=255)),
|
||||
ATTR_ZONES: probatio.All(cv.ensure_list, [cv.positive_int]),
|
||||
ATTR_POWER: cv.boolean,
|
||||
}
|
||||
|
||||
|
||||
SERVICE_LIFX_SET_HEV_CYCLE_STATE = "set_hev_cycle_state"
|
||||
|
||||
LIFX_SET_HEV_CYCLE_STATE_SCHEMA: VolDictType = {
|
||||
probatio.Required(ATTR_POWER): cv.boolean,
|
||||
ATTR_DURATION: probatio.All(
|
||||
probatio.Coerce(float), probatio.Clamp(min=0, max=86400)
|
||||
),
|
||||
}
|
||||
|
||||
HSBK_HUE = 0
|
||||
HSBK_SATURATION = 1
|
||||
HSBK_BRIGHTNESS = 2
|
||||
@@ -85,17 +61,6 @@ async def async_setup_entry(
|
||||
coordinator = entry.runtime_data
|
||||
manager = hass.data[DATA_LIFX_MANAGER]
|
||||
device = coordinator.device
|
||||
platform = entity_platform.async_get_current_platform()
|
||||
platform.async_register_entity_service(
|
||||
SERVICE_LIFX_SET_STATE,
|
||||
LIFX_SET_STATE_SCHEMA,
|
||||
"set_state",
|
||||
)
|
||||
platform.async_register_entity_service(
|
||||
SERVICE_LIFX_SET_HEV_CYCLE_STATE,
|
||||
LIFX_SET_HEV_CYCLE_STATE_SCHEMA,
|
||||
"set_hev_cycle_state",
|
||||
)
|
||||
if lifx_features(device)["matrix"]:
|
||||
if device.product in LIFX_CEILING_PRODUCT_IDS:
|
||||
entity: LIFXLight = LIFXCeiling(coordinator, manager, entry)
|
||||
|
||||
@@ -15,17 +15,20 @@ from homeassistant.components.light import (
|
||||
ATTR_TRANSITION,
|
||||
ATTR_XY_COLOR,
|
||||
COLOR_GROUP,
|
||||
LIGHT_TURN_ON_SCHEMA,
|
||||
VALID_BRIGHTNESS,
|
||||
VALID_BRIGHTNESS_PCT,
|
||||
)
|
||||
from homeassistant.const import ATTR_MODE
|
||||
from homeassistant.const import ATTR_MODE, Platform
|
||||
from homeassistant.core import HomeAssistant, ServiceCall, callback
|
||||
from homeassistant.exceptions import ServiceValidationError
|
||||
from homeassistant.helpers import config_validation as cv
|
||||
from homeassistant.helpers.service import async_register_platform_entity_service
|
||||
from homeassistant.helpers.target import (
|
||||
TargetSelection,
|
||||
async_extract_referenced_entity_ids,
|
||||
)
|
||||
from homeassistant.helpers.typing import VolDictType
|
||||
|
||||
from .const import (
|
||||
ATTR_CHANGE,
|
||||
@@ -33,8 +36,11 @@ from .const import (
|
||||
ATTR_CLOUD_SATURATION_MIN,
|
||||
ATTR_CYCLES,
|
||||
ATTR_DIRECTION,
|
||||
ATTR_DURATION,
|
||||
ATTR_INFRARED,
|
||||
ATTR_PALETTE,
|
||||
ATTR_PERIOD,
|
||||
ATTR_POWER,
|
||||
ATTR_POWER_ON,
|
||||
ATTR_SATURATION_MAX,
|
||||
ATTR_SATURATION_MIN,
|
||||
@@ -42,6 +48,7 @@ from .const import (
|
||||
ATTR_SPEED,
|
||||
ATTR_SPREAD,
|
||||
ATTR_THEME,
|
||||
ATTR_ZONES,
|
||||
DATA_LIFX_MANAGER,
|
||||
DOMAIN,
|
||||
SERVICE_EFFECT_COLORLOOP,
|
||||
@@ -52,6 +59,8 @@ from .const import (
|
||||
SERVICE_EFFECT_SKY,
|
||||
SERVICE_EFFECT_STOP,
|
||||
SERVICE_PAINT_THEME,
|
||||
SERVICE_SET_HEV_CYCLE_STATE,
|
||||
SERVICE_SET_STATE,
|
||||
)
|
||||
from .util import async_entry_is_legacy
|
||||
|
||||
@@ -225,6 +234,21 @@ SERVICES_SCHEMA = {
|
||||
}
|
||||
|
||||
|
||||
LIFX_SET_STATE_SCHEMA: VolDictType = {
|
||||
**LIGHT_TURN_ON_SCHEMA,
|
||||
ATTR_INFRARED: probatio.All(probatio.Coerce(int), probatio.Clamp(min=0, max=255)),
|
||||
ATTR_ZONES: probatio.All(cv.ensure_list, [cv.positive_int]),
|
||||
ATTR_POWER: cv.boolean,
|
||||
}
|
||||
|
||||
LIFX_SET_HEV_CYCLE_STATE_SCHEMA: VolDictType = {
|
||||
probatio.Required(ATTR_POWER): cv.boolean,
|
||||
ATTR_DURATION: probatio.All(
|
||||
probatio.Coerce(float), probatio.Clamp(min=0, max=86400)
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
def _get_manager(service: ServiceCall) -> LIFXManager:
|
||||
"""Return the LIFX manager, raising a user-facing error if unavailable."""
|
||||
hass = service.hass
|
||||
@@ -255,8 +279,25 @@ async def _async_start_effect(service: ServiceCall) -> None:
|
||||
|
||||
@callback
|
||||
def async_setup_services(hass: HomeAssistant) -> None:
|
||||
"""Register the LIFX effect services."""
|
||||
"""Register the LIFX services."""
|
||||
for service, schema in SERVICES_SCHEMA.items():
|
||||
hass.services.async_register(
|
||||
DOMAIN, service, _async_start_effect, schema=schema
|
||||
)
|
||||
|
||||
async_register_platform_entity_service(
|
||||
hass,
|
||||
DOMAIN,
|
||||
SERVICE_SET_STATE,
|
||||
entity_domain=Platform.LIGHT,
|
||||
schema=LIFX_SET_STATE_SCHEMA,
|
||||
func="set_state",
|
||||
)
|
||||
async_register_platform_entity_service(
|
||||
hass,
|
||||
DOMAIN,
|
||||
SERVICE_SET_HEV_CYCLE_STATE,
|
||||
entity_domain=Platform.LIGHT,
|
||||
schema=LIFX_SET_HEV_CYCLE_STATE_SCHEMA,
|
||||
func="set_hev_cycle_state",
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user