1
0
mirror of https://github.com/home-assistant/core.git synced 2026-07-09 07:45:11 +01:00
Files
core/homeassistant/components/saunum/services.py
T
2026-04-30 21:14:48 +02:00

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",
)