From 67135a7150d4f5d48271dfd3179f5be55c3ad7a1 Mon Sep 17 00:00:00 2001 From: Ryan Kraus Date: Fri, 10 Jul 2015 00:29:07 -0400 Subject: [PATCH 1/3] 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. --- .../www_static/polymer/home-assistant-js | 2 +- homeassistant/components/media_player/cast.py | 18 ++++++++++++++++-- requirements.txt | 2 +- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/frontend/www_static/polymer/home-assistant-js b/homeassistant/components/frontend/www_static/polymer/home-assistant-js index 14f2bb779eb..015edf9c28a 160000 --- a/homeassistant/components/frontend/www_static/polymer/home-assistant-js +++ b/homeassistant/components/frontend/www_static/polymer/home-assistant-js @@ -1 +1 @@ -Subproject commit 14f2bb779eb165bce236dcdc69d83e08ab73da1c +Subproject commit 015edf9c28a63122aa8f6bc153f0c0ddfaad1caa diff --git a/homeassistant/components/media_player/cast.py b/homeassistant/components/media_player/cast.py index 77cdf79a112..4e33034d821 100644 --- a/homeassistant/components/media_player/cast.py +++ b/homeassistant/components/media_player/cast.py @@ -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) diff --git a/requirements.txt b/requirements.txt index 9f7e788f47c..67e9f1c5249 100644 --- a/requirements.txt +++ b/requirements.txt @@ -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 From 1bfde8a1e5d5ce6e930486683465158a4f2e7a60 Mon Sep 17 00:00:00 2001 From: Ryan Kraus Date: Fri, 10 Jul 2015 00:34:52 -0400 Subject: [PATCH 2/3] Rolling home-assistant-js back to newest Accidentally rolled home-assistant-js back. Brought it back to the current version. --- .../components/frontend/www_static/polymer/home-assistant-js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/frontend/www_static/polymer/home-assistant-js b/homeassistant/components/frontend/www_static/polymer/home-assistant-js index 015edf9c28a..14f2bb779eb 160000 --- a/homeassistant/components/frontend/www_static/polymer/home-assistant-js +++ b/homeassistant/components/frontend/www_static/polymer/home-assistant-js @@ -1 +1 @@ -Subproject commit 015edf9c28a63122aa8f6bc153f0c0ddfaad1caa +Subproject commit 14f2bb779eb165bce236dcdc69d83e08ab73da1c From f3ff8ca9ca7241cc1edd70eef1c5d254192bbe90 Mon Sep 17 00:00:00 2001 From: Ryan Kraus Date: Fri, 10 Jul 2015 00:54:29 -0400 Subject: [PATCH 3/3] Bumped PyChromecast version in requirements Bumped PyChromecast version to a hypothetical 0.6.9 since the newest is already 0.6.8. --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 67e9f1c5249..b4b79b19763 100644 --- a/requirements.txt +++ b/requirements.txt @@ -18,7 +18,7 @@ phue>=0.8 ledcontroller>=1.0.7 # Chromecast bindings (media_player.cast) -pychromecast>=0.6.7 +pychromecast>=0.6.9 # Keyboard (keyboard) pyuserinput>=0.1.9