Implimented Ignore CEC for Chromecasts

1) Added the ability to ignore CEC data from Chromecasts using pending
updates to PyChromecast library.
2) Modified cast device to not allow the same device to be imported
twice. This can happen when cast is setup as a media_player in the
config when the discovery component is active.
This commit is contained in:
Ryan Kraus
2015-07-10 00:29:07 -04:00
parent 336d0a3972
commit 67135a7150
3 changed files with 18 additions and 4 deletions

View File

@@ -25,10 +25,12 @@ from homeassistant.components.media_player import (
SUPPORT_PREVIOUS_TRACK, SUPPORT_NEXT_TRACK,
MEDIA_TYPE_MUSIC, MEDIA_TYPE_TVSHOW, MEDIA_TYPE_VIDEO)
CONF_IGNORE_CEC = 'ignore_cec'
CAST_SPLASH = 'https://home-assistant.io/images/cast/splash.png'
SUPPORT_CAST = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \
SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_PREVIOUS_TRACK | \
SUPPORT_NEXT_TRACK | SUPPORT_YOUTUBE
KNOWN_HOSTS = []
# pylint: disable=unused-argument
@@ -43,12 +45,22 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
return False
if discovery_info:
# import CEC IGNORE attributes
ignore_cec = config.get(CONF_IGNORE_CEC, [])
if isinstance(ignore_cec, list):
pychromecast.IGNORE_CEC += ignore_cec
else:
logger.error('Chromecast conig, %s must be a list.', CONF_IGNORE_CEC)
hosts = []
if discovery_info and discovery_info[0] not in KNOWN_HOSTS:
hosts = [discovery_info[0]]
else:
hosts = (host_port[0] for host_port
in pychromecast.discover_chromecasts())
in pychromecast.discover_chromecasts()
if host_port[0] not in KNOWN_HOSTS)
casts = []
@@ -57,6 +69,8 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
casts.append(CastDevice(host))
except pychromecast.ChromecastConnectionError:
pass
else:
KNOWN_HOSTS.append(host)
add_devices(casts)

View File

@@ -18,7 +18,7 @@ phue>=0.8
ledcontroller>=1.0.7
# Chromecast bindings (media_player.cast)
pychromecast>=0.6.6
pychromecast>=0.6.7
# Keyboard (keyboard)
pyuserinput>=0.1.9