1
0
mirror of https://github.com/home-assistant/core.git synced 2026-02-22 10:55:50 +00:00
Files
2026-02-02 20:48:21 +02:00

64 lines
1.7 KiB
Python

"""LG webOS TV services."""
from __future__ import annotations
import voluptuous as vol
from homeassistant.components.media_player import DOMAIN as MEDIA_PLAYER_DOMAIN
from homeassistant.const import ATTR_COMMAND
from homeassistant.core import HomeAssistant, SupportsResponse, callback
from homeassistant.helpers import config_validation as cv, service
from homeassistant.helpers.typing import VolDictType
from .const import ATTR_PAYLOAD, ATTR_SOUND_OUTPUT, DOMAIN
ATTR_BUTTON = "button"
SERVICE_BUTTON = "button"
SERVICE_COMMAND = "command"
SERVICE_SELECT_SOUND_OUTPUT = "select_sound_output"
BUTTON_SCHEMA: VolDictType = {vol.Required(ATTR_BUTTON): cv.string}
COMMAND_SCHEMA: VolDictType = {
vol.Required(ATTR_COMMAND): cv.string,
vol.Optional(ATTR_PAYLOAD): dict,
}
SOUND_OUTPUT_SCHEMA: VolDictType = {vol.Required(ATTR_SOUND_OUTPUT): cv.string}
SERVICES = (
(
SERVICE_BUTTON,
BUTTON_SCHEMA,
"async_button",
SupportsResponse.NONE,
),
(
SERVICE_COMMAND,
COMMAND_SCHEMA,
"async_command",
SupportsResponse.OPTIONAL,
),
(
SERVICE_SELECT_SOUND_OUTPUT,
SOUND_OUTPUT_SCHEMA,
"async_select_sound_output",
SupportsResponse.OPTIONAL,
),
)
@callback
def async_setup_services(hass: HomeAssistant) -> None:
"""Set up services."""
for service_name, schema, method, supports_response in SERVICES:
service.async_register_platform_entity_service(
hass,
DOMAIN,
service_name,
entity_domain=MEDIA_PLAYER_DOMAIN,
schema=schema,
func=method,
supports_response=supports_response,
)