mirror of
https://github.com/home-assistant/core.git
synced 2026-07-09 07:45:11 +01:00
d766aae436
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: frenck <195327+frenck@users.noreply.github.com>
62 lines
1.8 KiB
Python
62 lines
1.8 KiB
Python
"""Define services for the Saunum integration."""
|
|
|
|
from datetime import timedelta
|
|
|
|
from pysaunum import (
|
|
DEFAULT_DURATION,
|
|
DEFAULT_FAN_DURATION,
|
|
DEFAULT_TEMPERATURE,
|
|
MAX_DURATION,
|
|
MAX_FAN_DURATION,
|
|
MAX_TEMPERATURE,
|
|
MIN_TEMPERATURE,
|
|
)
|
|
import voluptuous as vol
|
|
|
|
from homeassistant.components.climate import DOMAIN as CLIMATE_DOMAIN
|
|
from homeassistant.core import HomeAssistant, callback
|
|
from homeassistant.helpers import config_validation as cv, service
|
|
|
|
from .const import DOMAIN
|
|
|
|
ATTR_DURATION = "duration"
|
|
ATTR_TARGET_TEMPERATURE = "target_temperature"
|
|
ATTR_FAN_DURATION = "fan_duration"
|
|
|
|
SERVICE_START_SESSION = "start_session"
|
|
|
|
|
|
@callback
|
|
def async_setup_services(hass: HomeAssistant) -> None:
|
|
"""Register services for the Saunum integration."""
|
|
service.async_register_platform_entity_service(
|
|
hass,
|
|
DOMAIN,
|
|
SERVICE_START_SESSION,
|
|
entity_domain=CLIMATE_DOMAIN,
|
|
schema={
|
|
vol.Optional(
|
|
ATTR_DURATION, default=timedelta(minutes=DEFAULT_DURATION)
|
|
): vol.All(
|
|
cv.time_period,
|
|
vol.Range(
|
|
min=timedelta(minutes=1),
|
|
max=timedelta(minutes=MAX_DURATION),
|
|
),
|
|
),
|
|
vol.Optional(ATTR_TARGET_TEMPERATURE, default=DEFAULT_TEMPERATURE): vol.All(
|
|
cv.positive_int, vol.Range(min=MIN_TEMPERATURE, max=MAX_TEMPERATURE)
|
|
),
|
|
vol.Optional(
|
|
ATTR_FAN_DURATION, default=timedelta(minutes=DEFAULT_FAN_DURATION)
|
|
): vol.All(
|
|
cv.time_period,
|
|
vol.Range(
|
|
min=timedelta(minutes=1),
|
|
max=timedelta(minutes=MAX_FAN_DURATION),
|
|
),
|
|
),
|
|
},
|
|
func="async_start_session",
|
|
)
|