mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 20:57:21 +00:00
Convert Channels platform services to use platform register (#38827)
This commit is contained in:
parent
b3571602bb
commit
7343649c54
@ -20,7 +20,6 @@ from homeassistant.components.media_player.const import (
|
|||||||
SUPPORT_VOLUME_MUTE,
|
SUPPORT_VOLUME_MUTE,
|
||||||
)
|
)
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
ATTR_ENTITY_ID,
|
|
||||||
CONF_HOST,
|
CONF_HOST,
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
CONF_PORT,
|
CONF_PORT,
|
||||||
@ -28,9 +27,9 @@ from homeassistant.const import (
|
|||||||
STATE_PAUSED,
|
STATE_PAUSED,
|
||||||
STATE_PLAYING,
|
STATE_PLAYING,
|
||||||
)
|
)
|
||||||
import homeassistant.helpers.config_validation as cv
|
from homeassistant.helpers import config_validation as cv, entity_platform
|
||||||
|
|
||||||
from .const import DOMAIN, SERVICE_SEEK_BACKWARD, SERVICE_SEEK_BY, SERVICE_SEEK_FORWARD
|
from .const import SERVICE_SEEK_BACKWARD, SERVICE_SEEK_BY, SERVICE_SEEK_FORWARD
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -61,58 +60,22 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
|
|||||||
# Service call validation schemas
|
# Service call validation schemas
|
||||||
ATTR_SECONDS = "seconds"
|
ATTR_SECONDS = "seconds"
|
||||||
|
|
||||||
CHANNELS_SCHEMA = vol.Schema({vol.Required(ATTR_ENTITY_ID): cv.entity_id})
|
|
||||||
|
|
||||||
CHANNELS_SEEK_BY_SCHEMA = CHANNELS_SCHEMA.extend(
|
async def async_setup_platform(hass, config, async_add_entities, discovery_info=None):
|
||||||
{vol.Required(ATTR_SECONDS): vol.Coerce(int)}
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def setup_platform(hass, config, add_entities, discovery_info=None):
|
|
||||||
"""Set up the Channels platform."""
|
"""Set up the Channels platform."""
|
||||||
device = ChannelsPlayer(config[CONF_NAME], config[CONF_HOST], config[CONF_PORT])
|
device = ChannelsPlayer(config[CONF_NAME], config[CONF_HOST], config[CONF_PORT])
|
||||||
|
async_add_entities([device], True)
|
||||||
|
|
||||||
if DATA_CHANNELS not in hass.data:
|
platform = entity_platform.current_platform.get()
|
||||||
hass.data[DATA_CHANNELS] = []
|
|
||||||
|
|
||||||
add_entities([device], True)
|
platform.async_register_entity_service(
|
||||||
hass.data[DATA_CHANNELS].append(device)
|
SERVICE_SEEK_FORWARD, {}, "seek_forward",
|
||||||
|
|
||||||
def service_handler(service):
|
|
||||||
"""Handle service."""
|
|
||||||
entity_id = service.data.get(ATTR_ENTITY_ID)
|
|
||||||
|
|
||||||
device = next(
|
|
||||||
(
|
|
||||||
device
|
|
||||||
for device in hass.data[DATA_CHANNELS]
|
|
||||||
if device.entity_id == entity_id
|
|
||||||
),
|
|
||||||
None,
|
|
||||||
)
|
|
||||||
|
|
||||||
if device is None:
|
|
||||||
_LOGGER.warning("Unable to find Channels with entity_id: %s", entity_id)
|
|
||||||
return
|
|
||||||
|
|
||||||
if service.service == SERVICE_SEEK_FORWARD:
|
|
||||||
device.seek_forward()
|
|
||||||
elif service.service == SERVICE_SEEK_BACKWARD:
|
|
||||||
device.seek_backward()
|
|
||||||
elif service.service == SERVICE_SEEK_BY:
|
|
||||||
seconds = service.data.get("seconds")
|
|
||||||
device.seek_by(seconds)
|
|
||||||
|
|
||||||
hass.services.register(
|
|
||||||
DOMAIN, SERVICE_SEEK_FORWARD, service_handler, schema=CHANNELS_SCHEMA
|
|
||||||
)
|
)
|
||||||
|
platform.async_register_entity_service(
|
||||||
hass.services.register(
|
SERVICE_SEEK_BACKWARD, {}, "seek_backward",
|
||||||
DOMAIN, SERVICE_SEEK_BACKWARD, service_handler, schema=CHANNELS_SCHEMA
|
|
||||||
)
|
)
|
||||||
|
platform.async_register_entity_service(
|
||||||
hass.services.register(
|
SERVICE_SEEK_BY, {vol.Required(ATTR_SECONDS): vol.Coerce(int)}, "seek_by",
|
||||||
DOMAIN, SERVICE_SEEK_BY, service_handler, schema=CHANNELS_SEEK_BY_SCHEMA
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user