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 scriptpull/12217/merge
parent
d05a1e35fc
commit
ea35ffbc81
|
@ -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')
|
||||
|
|
Loading…
Reference in New Issue