diff --git a/homeassistant/components/blackbird/media_player.py b/homeassistant/components/blackbird/media_player.py index be0538a89e9..c603b51a244 100644 --- a/homeassistant/components/blackbird/media_player.py +++ b/homeassistant/components/blackbird/media_player.py @@ -5,7 +5,7 @@ import socket import voluptuous as vol from homeassistant.components.media_player import ( - MediaPlayerDevice, MEDIA_PLAYER_SCHEMA, PLATFORM_SCHEMA) + MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.components.media_player.const import ( DOMAIN, SUPPORT_SELECT_SOURCE, SUPPORT_TURN_OFF, SUPPORT_TURN_ON) @@ -18,6 +18,10 @@ _LOGGER = logging.getLogger(__name__) SUPPORT_BLACKBIRD = SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_SELECT_SOURCE +MEDIA_PLAYER_SCHEMA = vol.Schema({ + ATTR_ENTITY_ID: cv.comp_entity_ids, +}) + ZONE_SCHEMA = vol.Schema({ vol.Required(CONF_NAME): cv.string, }) diff --git a/homeassistant/components/epson/media_player.py b/homeassistant/components/epson/media_player.py index 8273ca9a21a..e8e54a425cf 100644 --- a/homeassistant/components/epson/media_player.py +++ b/homeassistant/components/epson/media_player.py @@ -4,7 +4,7 @@ import logging import voluptuous as vol from homeassistant.components.media_player import ( - MediaPlayerDevice, MEDIA_PLAYER_SCHEMA, PLATFORM_SCHEMA) + MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.components.media_player.const import ( DOMAIN, SUPPORT_NEXT_TRACK, SUPPORT_PREVIOUS_TRACK, SUPPORT_SELECT_SOURCE, SUPPORT_TURN_OFF, @@ -29,6 +29,9 @@ SUPPORT_EPSON = SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_SELECT_SOURCE |\ SUPPORT_CMODE | SUPPORT_VOLUME_MUTE | SUPPORT_VOLUME_STEP | \ SUPPORT_NEXT_TRACK | SUPPORT_PREVIOUS_TRACK +MEDIA_PLAYER_SCHEMA = vol.Schema({ + ATTR_ENTITY_ID: cv.comp_entity_ids, +}) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, diff --git a/homeassistant/components/kodi/media_player.py b/homeassistant/components/kodi/media_player.py index 661ebd86187..7b038086743 100644 --- a/homeassistant/components/kodi/media_player.py +++ b/homeassistant/components/kodi/media_player.py @@ -11,7 +11,7 @@ import aiohttp import voluptuous as vol from homeassistant.components.media_player import ( - MediaPlayerDevice, MEDIA_PLAYER_SCHEMA, PLATFORM_SCHEMA) + MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.components.media_player.const import ( DOMAIN, MEDIA_TYPE_CHANNEL, MEDIA_TYPE_MOVIE, MEDIA_TYPE_MUSIC, MEDIA_TYPE_PLAYLIST, MEDIA_TYPE_TVSHOW, MEDIA_TYPE_VIDEO, @@ -20,9 +20,9 @@ from homeassistant.components.media_player.const import ( SUPPORT_SHUFFLE_SET, SUPPORT_STOP, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, SUPPORT_VOLUME_STEP) from homeassistant.const import ( - CONF_HOST, CONF_NAME, CONF_PASSWORD, CONF_PORT, CONF_PROXY_SSL, - CONF_TIMEOUT, CONF_USERNAME, EVENT_HOMEASSISTANT_STOP, STATE_IDLE, - STATE_OFF, STATE_PAUSED, STATE_PLAYING) + ATTR_ENTITY_ID, CONF_HOST, CONF_NAME, CONF_PASSWORD, CONF_PORT, + CONF_PROXY_SSL, CONF_TIMEOUT, CONF_USERNAME, EVENT_HOMEASSISTANT_STOP, + STATE_IDLE, STATE_OFF, STATE_PAUSED, STATE_PLAYING) from homeassistant.core import callback from homeassistant.helpers import config_validation as cv from homeassistant.helpers import script @@ -107,6 +107,10 @@ ATTR_MEDIA_ARTIST_NAME = 'artist_name' ATTR_MEDIA_ID = 'media_id' ATTR_METHOD = 'method' +MEDIA_PLAYER_SCHEMA = vol.Schema({ + ATTR_ENTITY_ID: cv.comp_entity_ids, +}) + MEDIA_PLAYER_ADD_MEDIA_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ vol.Required(ATTR_MEDIA_TYPE): cv.string, vol.Optional(ATTR_MEDIA_ID): cv.string, diff --git a/homeassistant/components/media_player/__init__.py b/homeassistant/components/media_player/__init__.py index 63e2a127fd7..2c2d12a5e0f 100644 --- a/homeassistant/components/media_player/__init__.py +++ b/homeassistant/components/media_player/__init__.py @@ -17,16 +17,16 @@ import voluptuous as vol from homeassistant.components import websocket_api from homeassistant.components.http import KEY_AUTHENTICATED, HomeAssistantView from homeassistant.const import ( - ATTR_ENTITY_ID, SERVICE_MEDIA_NEXT_TRACK, SERVICE_MEDIA_PAUSE, - SERVICE_MEDIA_PLAY, SERVICE_MEDIA_PLAY_PAUSE, SERVICE_MEDIA_PREVIOUS_TRACK, - SERVICE_MEDIA_SEEK, SERVICE_MEDIA_STOP, SERVICE_SHUFFLE_SET, - SERVICE_TOGGLE, SERVICE_TURN_OFF, SERVICE_TURN_ON, SERVICE_VOLUME_DOWN, - SERVICE_VOLUME_MUTE, SERVICE_VOLUME_SET, SERVICE_VOLUME_UP, STATE_IDLE, - STATE_OFF, STATE_PLAYING) + SERVICE_MEDIA_NEXT_TRACK, SERVICE_MEDIA_PAUSE, SERVICE_MEDIA_PLAY, + SERVICE_MEDIA_PLAY_PAUSE, SERVICE_MEDIA_PREVIOUS_TRACK, SERVICE_MEDIA_SEEK, + SERVICE_MEDIA_STOP, SERVICE_SHUFFLE_SET, SERVICE_TOGGLE, SERVICE_TURN_OFF, + SERVICE_TURN_ON, SERVICE_VOLUME_DOWN, SERVICE_VOLUME_MUTE, + SERVICE_VOLUME_SET, SERVICE_VOLUME_UP, STATE_IDLE, STATE_OFF, + STATE_PLAYING) from homeassistant.helpers.aiohttp_client import async_get_clientsession import homeassistant.helpers.config_validation as cv from homeassistant.helpers.config_validation import ( # noqa - PLATFORM_SCHEMA, PLATFORM_SCHEMA_BASE) + ENTITY_SERVICE_SCHEMA, PLATFORM_SCHEMA, PLATFORM_SCHEMA_BASE) from homeassistant.helpers.entity import Entity from homeassistant.helpers.entity_component import EntityComponent from homeassistant.loader import bind_hass @@ -78,38 +78,34 @@ DEVICE_CLASSES = [ DEVICE_CLASSES_SCHEMA = vol.All(vol.Lower, vol.In(DEVICE_CLASSES)) # Service call validation schemas -MEDIA_PLAYER_SCHEMA = vol.Schema({ - ATTR_ENTITY_ID: cv.comp_entity_ids, -}) - -MEDIA_PLAYER_SET_VOLUME_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ +MEDIA_PLAYER_SET_VOLUME_SCHEMA = ENTITY_SERVICE_SCHEMA.extend({ vol.Required(ATTR_MEDIA_VOLUME_LEVEL): cv.small_float, }) -MEDIA_PLAYER_MUTE_VOLUME_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ +MEDIA_PLAYER_MUTE_VOLUME_SCHEMA = ENTITY_SERVICE_SCHEMA.extend({ vol.Required(ATTR_MEDIA_VOLUME_MUTED): cv.boolean, }) -MEDIA_PLAYER_MEDIA_SEEK_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ +MEDIA_PLAYER_MEDIA_SEEK_SCHEMA = ENTITY_SERVICE_SCHEMA.extend({ vol.Required(ATTR_MEDIA_SEEK_POSITION): vol.All(vol.Coerce(float), vol.Range(min=0)), }) -MEDIA_PLAYER_SELECT_SOURCE_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ +MEDIA_PLAYER_SELECT_SOURCE_SCHEMA = ENTITY_SERVICE_SCHEMA.extend({ vol.Required(ATTR_INPUT_SOURCE): cv.string, }) -MEDIA_PLAYER_SELECT_SOUND_MODE_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ +MEDIA_PLAYER_SELECT_SOUND_MODE_SCHEMA = ENTITY_SERVICE_SCHEMA.extend({ vol.Required(ATTR_SOUND_MODE): cv.string, }) -MEDIA_PLAYER_PLAY_MEDIA_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ +MEDIA_PLAYER_PLAY_MEDIA_SCHEMA = ENTITY_SERVICE_SCHEMA.extend({ vol.Required(ATTR_MEDIA_CONTENT_TYPE): cv.string, vol.Required(ATTR_MEDIA_CONTENT_ID): cv.string, vol.Optional(ATTR_MEDIA_ENQUEUE): cv.boolean, }) -MEDIA_PLAYER_SET_SHUFFLE_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ +MEDIA_PLAYER_SET_SHUFFLE_SCHEMA = ENTITY_SERVICE_SCHEMA.extend({ vol.Required(ATTR_MEDIA_SHUFFLE): cv.boolean, }) @@ -174,51 +170,51 @@ async def async_setup(hass, config): await component.async_setup(config) component.async_register_entity_service( - SERVICE_TURN_ON, MEDIA_PLAYER_SCHEMA, + SERVICE_TURN_ON, ENTITY_SERVICE_SCHEMA, 'async_turn_on', [SUPPORT_TURN_ON] ) component.async_register_entity_service( - SERVICE_TURN_OFF, MEDIA_PLAYER_SCHEMA, + SERVICE_TURN_OFF, ENTITY_SERVICE_SCHEMA, 'async_turn_off', [SUPPORT_TURN_OFF] ) component.async_register_entity_service( - SERVICE_TOGGLE, MEDIA_PLAYER_SCHEMA, + SERVICE_TOGGLE, ENTITY_SERVICE_SCHEMA, 'async_toggle', [SUPPORT_TURN_OFF | SUPPORT_TURN_ON] ) component.async_register_entity_service( - SERVICE_VOLUME_UP, MEDIA_PLAYER_SCHEMA, + SERVICE_VOLUME_UP, ENTITY_SERVICE_SCHEMA, 'async_volume_up', [SUPPORT_VOLUME_SET, SUPPORT_VOLUME_STEP] ) component.async_register_entity_service( - SERVICE_VOLUME_DOWN, MEDIA_PLAYER_SCHEMA, + SERVICE_VOLUME_DOWN, ENTITY_SERVICE_SCHEMA, 'async_volume_down', [SUPPORT_VOLUME_SET, SUPPORT_VOLUME_STEP] ) component.async_register_entity_service( - SERVICE_MEDIA_PLAY_PAUSE, MEDIA_PLAYER_SCHEMA, + SERVICE_MEDIA_PLAY_PAUSE, ENTITY_SERVICE_SCHEMA, 'async_media_play_pause', [SUPPORT_PLAY | SUPPORT_PAUSE] ) component.async_register_entity_service( - SERVICE_MEDIA_PLAY, MEDIA_PLAYER_SCHEMA, + SERVICE_MEDIA_PLAY, ENTITY_SERVICE_SCHEMA, 'async_media_play', [SUPPORT_PLAY] ) component.async_register_entity_service( - SERVICE_MEDIA_PAUSE, MEDIA_PLAYER_SCHEMA, + SERVICE_MEDIA_PAUSE, ENTITY_SERVICE_SCHEMA, 'async_media_pause', [SUPPORT_PAUSE] ) component.async_register_entity_service( - SERVICE_MEDIA_STOP, MEDIA_PLAYER_SCHEMA, + SERVICE_MEDIA_STOP, ENTITY_SERVICE_SCHEMA, 'async_media_stop', [SUPPORT_STOP] ) component.async_register_entity_service( - SERVICE_MEDIA_NEXT_TRACK, MEDIA_PLAYER_SCHEMA, + SERVICE_MEDIA_NEXT_TRACK, ENTITY_SERVICE_SCHEMA, 'async_media_next_track', [SUPPORT_NEXT_TRACK] ) component.async_register_entity_service( - SERVICE_MEDIA_PREVIOUS_TRACK, MEDIA_PLAYER_SCHEMA, + SERVICE_MEDIA_PREVIOUS_TRACK, ENTITY_SERVICE_SCHEMA, 'async_media_previous_track', [SUPPORT_PREVIOUS_TRACK] ) component.async_register_entity_service( - SERVICE_CLEAR_PLAYLIST, MEDIA_PLAYER_SCHEMA, + SERVICE_CLEAR_PLAYLIST, ENTITY_SERVICE_SCHEMA, 'async_clear_playlist', [SUPPORT_CLEAR_PLAYLIST] ) component.async_register_entity_service( diff --git a/homeassistant/components/monoprice/media_player.py b/homeassistant/components/monoprice/media_player.py index d8f22a5d00b..b99a48449bd 100644 --- a/homeassistant/components/monoprice/media_player.py +++ b/homeassistant/components/monoprice/media_player.py @@ -4,7 +4,7 @@ import logging import voluptuous as vol from homeassistant.components.media_player import ( - MediaPlayerDevice, MEDIA_PLAYER_SCHEMA, PLATFORM_SCHEMA) + MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.components.media_player.const import ( DOMAIN, SUPPORT_SELECT_SOURCE, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, @@ -43,6 +43,10 @@ ZONE_IDS = vol.All(vol.Coerce(int), vol.Any( # Valid source ids: 1-6 SOURCE_IDS = vol.All(vol.Coerce(int), vol.Range(min=1, max=6)) +MEDIA_PLAYER_SCHEMA = vol.Schema({ + ATTR_ENTITY_ID: cv.comp_entity_ids, +}) + PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_PORT): cv.string, vol.Required(CONF_ZONES): vol.Schema({ZONE_IDS: ZONE_SCHEMA}), diff --git a/homeassistant/components/squeezebox/media_player.py b/homeassistant/components/squeezebox/media_player.py index c6b995963d9..9e4c861cf05 100644 --- a/homeassistant/components/squeezebox/media_player.py +++ b/homeassistant/components/squeezebox/media_player.py @@ -9,7 +9,7 @@ import async_timeout import voluptuous as vol from homeassistant.components.media_player import ( - MediaPlayerDevice, MEDIA_PLAYER_SCHEMA, PLATFORM_SCHEMA) + MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.components.media_player.const import ( ATTR_MEDIA_ENQUEUE, DOMAIN, MEDIA_TYPE_MUSIC, SUPPORT_CLEAR_PLAYLIST, SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, @@ -17,8 +17,8 @@ from homeassistant.components.media_player.const import ( SUPPORT_SHUFFLE_SET, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET) from homeassistant.const import ( - ATTR_COMMAND, CONF_HOST, CONF_PASSWORD, CONF_PORT, CONF_USERNAME, - STATE_IDLE, STATE_OFF, STATE_PAUSED, STATE_PLAYING) + ATTR_COMMAND, ATTR_ENTITY_ID, CONF_HOST, CONF_PASSWORD, CONF_PORT, + CONF_USERNAME, STATE_IDLE, STATE_OFF, STATE_PAUSED, STATE_PLAYING) from homeassistant.helpers.aiohttp_client import async_get_clientsession import homeassistant.helpers.config_validation as cv from homeassistant.util.dt import utcnow @@ -33,6 +33,10 @@ SUPPORT_SQUEEZEBOX = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | \ SUPPORT_SEEK | SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_PLAY_MEDIA | \ SUPPORT_PLAY | SUPPORT_SHUFFLE_SET | SUPPORT_CLEAR_PLAYLIST +MEDIA_PLAYER_SCHEMA = vol.Schema({ + ATTR_ENTITY_ID: cv.comp_entity_ids, +}) + PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, vol.Optional(CONF_PASSWORD): cv.string, diff --git a/homeassistant/components/yamaha/media_player.py b/homeassistant/components/yamaha/media_player.py index 6ccbb1b93db..636d5b507c1 100644 --- a/homeassistant/components/yamaha/media_player.py +++ b/homeassistant/components/yamaha/media_player.py @@ -5,7 +5,7 @@ import requests import voluptuous as vol from homeassistant.components.media_player import ( - MediaPlayerDevice, MEDIA_PLAYER_SCHEMA, PLATFORM_SCHEMA) + MediaPlayerDevice, PLATFORM_SCHEMA) from homeassistant.components.media_player.const import ( DOMAIN, MEDIA_TYPE_MUSIC, SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PLAY, SUPPORT_PLAY_MEDIA, @@ -31,6 +31,10 @@ CONF_ZONE_NAMES = 'zone_names' DATA_YAMAHA = 'yamaha_known_receivers' DEFAULT_NAME = "Yamaha Receiver" +MEDIA_PLAYER_SCHEMA = vol.Schema({ + ATTR_ENTITY_ID: cv.comp_entity_ids, +}) + ENABLE_OUTPUT_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({ vol.Required(ATTR_ENABLED): cv.boolean, vol.Required(ATTR_PORT): cv.string,