From ea35ffbc819ba305a2a1b9dfe92c5378f0c9544b Mon Sep 17 00:00:00 2001 From: Marc Egli Date: Wed, 7 Feb 2018 18:35:08 +0100 Subject: [PATCH] Add wake on lan capability to philips TV (#12065) * Add wake on lan capability to philips TV * Update requirements_all.txt * Fix line length issues. * Replace wake on lan with turn on script for philips TV * rerun requirements script --- .../components/media_player/philips_js.py | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/homeassistant/components/media_player/philips_js.py b/homeassistant/components/media_player/philips_js.py index d8450d31ea4..24981555007 100644 --- a/homeassistant/components/media_player/philips_js.py +++ b/homeassistant/components/media_player/philips_js.py @@ -12,10 +12,11 @@ import voluptuous as vol import homeassistant.helpers.config_validation as cv from homeassistant.components.media_player import ( PLATFORM_SCHEMA, SUPPORT_NEXT_TRACK, SUPPORT_PREVIOUS_TRACK, - SUPPORT_SELECT_SOURCE, SUPPORT_TURN_OFF, SUPPORT_VOLUME_MUTE, - SUPPORT_VOLUME_STEP, SUPPORT_PLAY, MediaPlayerDevice) + SUPPORT_SELECT_SOURCE, SUPPORT_TURN_OFF, SUPPORT_TURN_ON, + SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_STEP, SUPPORT_PLAY, MediaPlayerDevice) from homeassistant.const import ( CONF_HOST, CONF_NAME, STATE_OFF, STATE_ON, STATE_UNKNOWN) +from homeassistant.helpers.script import Script from homeassistant.util import Throttle REQUIREMENTS = ['ha-philipsjs==0.0.1'] @@ -30,14 +31,16 @@ SUPPORT_PHILIPS_JS = SUPPORT_TURN_OFF | SUPPORT_VOLUME_STEP | \ SUPPORT_PHILIPS_JS_TV = SUPPORT_PHILIPS_JS | SUPPORT_NEXT_TRACK | \ SUPPORT_PREVIOUS_TRACK | SUPPORT_PLAY +CONF_ON_ACTION = 'turn_on_action' + DEFAULT_DEVICE = 'default' DEFAULT_HOST = '127.0.0.1' DEFAULT_NAME = 'Philips TV' -BASE_URL = 'http://{0}:1925/1/{1}' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST, default=DEFAULT_HOST): cv.string, vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, + vol.Optional(CONF_ON_ACTION): cv.SCRIPT_SCHEMA, }) @@ -48,16 +51,18 @@ def setup_platform(hass, config, add_devices, discovery_info=None): name = config.get(CONF_NAME) host = config.get(CONF_HOST) + turn_on_action = config.get(CONF_ON_ACTION) tvapi = haphilipsjs.PhilipsTV(host) + on_script = Script(hass, turn_on_action) if turn_on_action else None - add_devices([PhilipsTV(tvapi, name)]) + add_devices([PhilipsTV(tvapi, name, on_script)]) class PhilipsTV(MediaPlayerDevice): """Representation of a Philips TV exposing the JointSpace API.""" - def __init__(self, tv, name): + def __init__(self, tv, name, on_script): """Initialize the Philips TV.""" self._tv = tv self._name = name @@ -74,6 +79,7 @@ class PhilipsTV(MediaPlayerDevice): self._source_mapping = {} self._watching_tv = None self._channel_name = None + self._on_script = on_script @property def name(self): @@ -88,9 +94,10 @@ class PhilipsTV(MediaPlayerDevice): @property def supported_features(self): """Flag media player features that are supported.""" + is_supporting_turn_on = SUPPORT_TURN_ON if self._on_script else 0 if self._watching_tv: - return SUPPORT_PHILIPS_JS_TV - return SUPPORT_PHILIPS_JS + return SUPPORT_PHILIPS_JS_TV | is_supporting_turn_on + return SUPPORT_PHILIPS_JS | is_supporting_turn_on @property def state(self): @@ -126,6 +133,11 @@ class PhilipsTV(MediaPlayerDevice): """Boolean if volume is currently muted.""" return self._muted + def turn_on(self): + """Turn on the device.""" + if self._on_script: + self._on_script.run() + def turn_off(self): """Turn off the device.""" self._tv.sendKey('Standby')