Merge pull request #1566 from jaharkes/squeezebox-discovery

Add discovery for squeezebox (logitech media) servers.
pull/1528/merge
Paulus Schoutsen 2016-03-17 21:12:13 -07:00
commit 792954adc9
3 changed files with 19 additions and 3 deletions

View File

@ -25,6 +25,7 @@ SERVICE_CAST = 'google_cast'
SERVICE_NETGEAR = 'netgear_router' SERVICE_NETGEAR = 'netgear_router'
SERVICE_SONOS = 'sonos' SERVICE_SONOS = 'sonos'
SERVICE_PLEX = 'plex_mediaserver' SERVICE_PLEX = 'plex_mediaserver'
SERVICE_SQUEEZEBOX = 'logitech_mediaserver'
SERVICE_HANDLERS = { SERVICE_HANDLERS = {
SERVICE_WEMO: "wemo", SERVICE_WEMO: "wemo",
@ -33,6 +34,7 @@ SERVICE_HANDLERS = {
SERVICE_NETGEAR: 'device_tracker', SERVICE_NETGEAR: 'device_tracker',
SERVICE_SONOS: 'media_player', SERVICE_SONOS: 'media_player',
SERVICE_PLEX: 'media_player', SERVICE_PLEX: 'media_player',
SERVICE_SQUEEZEBOX: 'media_player',
} }

View File

@ -28,6 +28,7 @@ DISCOVERY_PLATFORMS = {
discovery.SERVICE_CAST: 'cast', discovery.SERVICE_CAST: 'cast',
discovery.SERVICE_SONOS: 'sonos', discovery.SERVICE_SONOS: 'sonos',
discovery.SERVICE_PLEX: 'plex', discovery.SERVICE_PLEX: 'plex',
discovery.SERVICE_SQUEEZEBOX: 'squeezebox',
} }
SERVICE_PLAY_MEDIA = 'play_media' SERVICE_PLAY_MEDIA = 'play_media'

View File

@ -22,19 +22,32 @@ SUPPORT_SQUEEZEBOX = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | \
SUPPORT_VOLUME_MUTE | SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | \ SUPPORT_VOLUME_MUTE | SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | \
SUPPORT_SEEK | SUPPORT_TURN_ON | SUPPORT_TURN_OFF SUPPORT_SEEK | SUPPORT_TURN_ON | SUPPORT_TURN_OFF
KNOWN_DEVICES = []
def setup_platform(hass, config, add_devices, discovery_info=None): def setup_platform(hass, config, add_devices, discovery_info=None):
"""Setup the squeezebox platform.""" """Setup the squeezebox platform."""
if not config.get(CONF_HOST): if discovery_info is not None:
host = discovery_info[0]
port = 9090
else:
host = config.get(CONF_HOST)
port = int(config.get('port', 9090))
if not host:
_LOGGER.error( _LOGGER.error(
"Missing required configuration items in %s: %s", "Missing required configuration items in %s: %s",
DOMAIN, DOMAIN,
CONF_HOST) CONF_HOST)
return False return False
# Only add a media server once
if (host, port) in KNOWN_DEVICES:
return False
KNOWN_DEVICES.append((host, port))
lms = LogitechMediaServer( lms = LogitechMediaServer(
config.get(CONF_HOST), host, port,
config.get('port', '9090'),
config.get(CONF_USERNAME), config.get(CONF_USERNAME),
config.get(CONF_PASSWORD)) config.get(CONF_PASSWORD))