mirror of
https://github.com/home-assistant/core.git
synced 2025-07-21 20:27:08 +00:00
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
This commit is contained in:
parent
d05a1e35fc
commit
ea35ffbc81
@ -12,10 +12,11 @@ import voluptuous as vol
|
|||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
from homeassistant.components.media_player import (
|
from homeassistant.components.media_player import (
|
||||||
PLATFORM_SCHEMA, SUPPORT_NEXT_TRACK, SUPPORT_PREVIOUS_TRACK,
|
PLATFORM_SCHEMA, SUPPORT_NEXT_TRACK, SUPPORT_PREVIOUS_TRACK,
|
||||||
SUPPORT_SELECT_SOURCE, SUPPORT_TURN_OFF, SUPPORT_VOLUME_MUTE,
|
SUPPORT_SELECT_SOURCE, SUPPORT_TURN_OFF, SUPPORT_TURN_ON,
|
||||||
SUPPORT_VOLUME_STEP, SUPPORT_PLAY, MediaPlayerDevice)
|
SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_STEP, SUPPORT_PLAY, MediaPlayerDevice)
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
CONF_HOST, CONF_NAME, STATE_OFF, STATE_ON, STATE_UNKNOWN)
|
CONF_HOST, CONF_NAME, STATE_OFF, STATE_ON, STATE_UNKNOWN)
|
||||||
|
from homeassistant.helpers.script import Script
|
||||||
from homeassistant.util import Throttle
|
from homeassistant.util import Throttle
|
||||||
|
|
||||||
REQUIREMENTS = ['ha-philipsjs==0.0.1']
|
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_PHILIPS_JS_TV = SUPPORT_PHILIPS_JS | SUPPORT_NEXT_TRACK | \
|
||||||
SUPPORT_PREVIOUS_TRACK | SUPPORT_PLAY
|
SUPPORT_PREVIOUS_TRACK | SUPPORT_PLAY
|
||||||
|
|
||||||
|
CONF_ON_ACTION = 'turn_on_action'
|
||||||
|
|
||||||
DEFAULT_DEVICE = 'default'
|
DEFAULT_DEVICE = 'default'
|
||||||
DEFAULT_HOST = '127.0.0.1'
|
DEFAULT_HOST = '127.0.0.1'
|
||||||
DEFAULT_NAME = 'Philips TV'
|
DEFAULT_NAME = 'Philips TV'
|
||||||
BASE_URL = 'http://{0}:1925/1/{1}'
|
|
||||||
|
|
||||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||||
vol.Required(CONF_HOST, default=DEFAULT_HOST): cv.string,
|
vol.Required(CONF_HOST, default=DEFAULT_HOST): cv.string,
|
||||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): 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)
|
name = config.get(CONF_NAME)
|
||||||
host = config.get(CONF_HOST)
|
host = config.get(CONF_HOST)
|
||||||
|
turn_on_action = config.get(CONF_ON_ACTION)
|
||||||
|
|
||||||
tvapi = haphilipsjs.PhilipsTV(host)
|
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):
|
class PhilipsTV(MediaPlayerDevice):
|
||||||
"""Representation of a Philips TV exposing the JointSpace API."""
|
"""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."""
|
"""Initialize the Philips TV."""
|
||||||
self._tv = tv
|
self._tv = tv
|
||||||
self._name = name
|
self._name = name
|
||||||
@ -74,6 +79,7 @@ class PhilipsTV(MediaPlayerDevice):
|
|||||||
self._source_mapping = {}
|
self._source_mapping = {}
|
||||||
self._watching_tv = None
|
self._watching_tv = None
|
||||||
self._channel_name = None
|
self._channel_name = None
|
||||||
|
self._on_script = on_script
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
@ -88,9 +94,10 @@ class PhilipsTV(MediaPlayerDevice):
|
|||||||
@property
|
@property
|
||||||
def supported_features(self):
|
def supported_features(self):
|
||||||
"""Flag media player features that are supported."""
|
"""Flag media player features that are supported."""
|
||||||
|
is_supporting_turn_on = SUPPORT_TURN_ON if self._on_script else 0
|
||||||
if self._watching_tv:
|
if self._watching_tv:
|
||||||
return SUPPORT_PHILIPS_JS_TV
|
return SUPPORT_PHILIPS_JS_TV | is_supporting_turn_on
|
||||||
return SUPPORT_PHILIPS_JS
|
return SUPPORT_PHILIPS_JS | is_supporting_turn_on
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def state(self):
|
def state(self):
|
||||||
@ -126,6 +133,11 @@ class PhilipsTV(MediaPlayerDevice):
|
|||||||
"""Boolean if volume is currently muted."""
|
"""Boolean if volume is currently muted."""
|
||||||
return self._muted
|
return self._muted
|
||||||
|
|
||||||
|
def turn_on(self):
|
||||||
|
"""Turn on the device."""
|
||||||
|
if self._on_script:
|
||||||
|
self._on_script.run()
|
||||||
|
|
||||||
def turn_off(self):
|
def turn_off(self):
|
||||||
"""Turn off the device."""
|
"""Turn off the device."""
|
||||||
self._tv.sendKey('Standby')
|
self._tv.sendKey('Standby')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user