mirror of
https://github.com/home-assistant/core.git
synced 2026-02-20 18:08:00 +00:00
102 lines
3.0 KiB
Python
102 lines
3.0 KiB
Python
"""Support for Bond services."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import voluptuous as vol
|
|
|
|
from homeassistant.components.fan import DOMAIN as FAN_DOMAIN
|
|
from homeassistant.components.light import ATTR_BRIGHTNESS, DOMAIN as LIGHT_DOMAIN
|
|
from homeassistant.components.switch import DOMAIN as SWITCH_DOMAIN
|
|
from homeassistant.core import HomeAssistant, callback
|
|
from homeassistant.helpers import config_validation as cv, service
|
|
|
|
from .const import DOMAIN
|
|
|
|
ATTR_POWER_STATE = "power_state"
|
|
|
|
# Fan
|
|
SERVICE_SET_FAN_SPEED_TRACKED_STATE = "set_fan_speed_tracked_state"
|
|
|
|
# Switch
|
|
SERVICE_SET_POWER_TRACKED_STATE = "set_switch_power_tracked_state"
|
|
|
|
# Light
|
|
SERVICE_SET_LIGHT_POWER_TRACKED_STATE = "set_light_power_tracked_state"
|
|
SERVICE_SET_LIGHT_BRIGHTNESS_TRACKED_STATE = "set_light_brightness_tracked_state"
|
|
SERVICE_START_INCREASING_BRIGHTNESS = "start_increasing_brightness"
|
|
SERVICE_START_DECREASING_BRIGHTNESS = "start_decreasing_brightness"
|
|
SERVICE_STOP = "stop"
|
|
|
|
|
|
@callback
|
|
def async_setup_services(hass: HomeAssistant) -> None:
|
|
"""Home Assistant services."""
|
|
|
|
# Fan entity services
|
|
service.async_register_platform_entity_service(
|
|
hass,
|
|
DOMAIN,
|
|
SERVICE_SET_FAN_SPEED_TRACKED_STATE,
|
|
entity_domain=FAN_DOMAIN,
|
|
schema={vol.Required("speed"): vol.All(vol.Number(scale=0), vol.Range(0, 100))},
|
|
func="async_set_speed_belief",
|
|
)
|
|
|
|
# Light entity services
|
|
service.async_register_platform_entity_service(
|
|
hass,
|
|
DOMAIN,
|
|
SERVICE_START_INCREASING_BRIGHTNESS,
|
|
entity_domain=LIGHT_DOMAIN,
|
|
schema=None,
|
|
func="async_start_increasing_brightness",
|
|
)
|
|
service.async_register_platform_entity_service(
|
|
hass,
|
|
DOMAIN,
|
|
SERVICE_START_DECREASING_BRIGHTNESS,
|
|
entity_domain=LIGHT_DOMAIN,
|
|
schema=None,
|
|
func="async_start_decreasing_brightness",
|
|
)
|
|
service.async_register_platform_entity_service(
|
|
hass,
|
|
DOMAIN,
|
|
SERVICE_STOP,
|
|
entity_domain=LIGHT_DOMAIN,
|
|
schema=None,
|
|
func="async_stop",
|
|
)
|
|
|
|
service.async_register_platform_entity_service(
|
|
hass,
|
|
DOMAIN,
|
|
SERVICE_SET_LIGHT_BRIGHTNESS_TRACKED_STATE,
|
|
entity_domain=LIGHT_DOMAIN,
|
|
schema={
|
|
vol.Required(ATTR_BRIGHTNESS): vol.All(
|
|
vol.Number(scale=0), vol.Range(0, 255)
|
|
)
|
|
},
|
|
func="async_set_brightness_belief",
|
|
)
|
|
|
|
service.async_register_platform_entity_service(
|
|
hass,
|
|
DOMAIN,
|
|
SERVICE_SET_LIGHT_POWER_TRACKED_STATE,
|
|
entity_domain=LIGHT_DOMAIN,
|
|
schema={vol.Required(ATTR_POWER_STATE): vol.All(cv.boolean)},
|
|
func="async_set_power_belief",
|
|
)
|
|
|
|
# Switch entity services
|
|
service.async_register_platform_entity_service(
|
|
hass,
|
|
DOMAIN,
|
|
SERVICE_SET_POWER_TRACKED_STATE,
|
|
entity_domain=SWITCH_DOMAIN,
|
|
schema={vol.Required(ATTR_POWER_STATE): cv.boolean},
|
|
func="async_set_power_belief",
|
|
)
|