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

@ -1 +1 @@
Subproject commit 14f2bb779eb165bce236dcdc69d83e08ab73da1c
Subproject commit 015edf9c28a63122aa8f6bc153f0c0ddfaad1caa

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