Add broadcast_address for wake-on-lan (#28793)

This commit is contained in:
Jordan Speicher 2019-11-17 05:52:33 -06:00 committed by Fabian Affolter
parent c7f684d3f4
commit f25a3cbfcf
2 changed files with 13 additions and 3 deletions

View File

@ -21,6 +21,7 @@ from homeassistant.components.media_player.const import (
SUPPORT_VOLUME_STEP, SUPPORT_VOLUME_STEP,
) )
from homeassistant.const import ( from homeassistant.const import (
CONF_BROADCAST_ADDRESS,
CONF_HOST, CONF_HOST,
CONF_MAC, CONF_MAC,
CONF_NAME, CONF_NAME,
@ -36,6 +37,7 @@ CONF_APP_POWER = "app_power"
DEFAULT_NAME = "Panasonic Viera TV" DEFAULT_NAME = "Panasonic Viera TV"
DEFAULT_PORT = 55000 DEFAULT_PORT = 55000
DEFAULT_BROADCAST_ADDRESS = "255.255.255.255"
DEFAULT_APP_POWER = False DEFAULT_APP_POWER = False
SUPPORT_VIERATV = ( SUPPORT_VIERATV = (
@ -55,6 +57,9 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
{ {
vol.Required(CONF_HOST): cv.string, vol.Required(CONF_HOST): cv.string,
vol.Optional(CONF_MAC): cv.string, vol.Optional(CONF_MAC): cv.string,
vol.Optional(
CONF_BROADCAST_ADDRESS, default=DEFAULT_BROADCAST_ADDRESS
): cv.string,
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port, vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port,
vol.Optional(CONF_APP_POWER, default=DEFAULT_APP_POWER): cv.boolean, vol.Optional(CONF_APP_POWER, default=DEFAULT_APP_POWER): cv.boolean,
@ -65,6 +70,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
def setup_platform(hass, config, add_entities, discovery_info=None): def setup_platform(hass, config, add_entities, discovery_info=None):
"""Set up the Panasonic Viera TV platform.""" """Set up the Panasonic Viera TV platform."""
mac = config.get(CONF_MAC) mac = config.get(CONF_MAC)
broadcast = config.get(CONF_BROADCAST_ADDRESS)
name = config.get(CONF_NAME) name = config.get(CONF_NAME)
port = config.get(CONF_PORT) port = config.get(CONF_PORT)
app_power = config.get(CONF_APP_POWER) app_power = config.get(CONF_APP_POWER)
@ -86,14 +92,16 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
host = config.get(CONF_HOST) host = config.get(CONF_HOST)
remote = RemoteControl(host, port) remote = RemoteControl(host, port)
add_entities([PanasonicVieraTVDevice(mac, name, remote, host, app_power)]) add_entities(
[PanasonicVieraTVDevice(mac, name, remote, host, broadcast, app_power)]
)
return True return True
class PanasonicVieraTVDevice(MediaPlayerDevice): class PanasonicVieraTVDevice(MediaPlayerDevice):
"""Representation of a Panasonic Viera TV.""" """Representation of a Panasonic Viera TV."""
def __init__(self, mac, name, remote, host, app_power, uuid=None): def __init__(self, mac, name, remote, host, broadcast, app_power, uuid=None):
"""Initialize the Panasonic device.""" """Initialize the Panasonic device."""
# Save a reference to the imported class # Save a reference to the imported class
self._wol = wakeonlan self._wol = wakeonlan
@ -105,6 +113,7 @@ class PanasonicVieraTVDevice(MediaPlayerDevice):
self._state = None self._state = None
self._remote = remote self._remote = remote
self._host = host self._host = host
self._broadcast = broadcast
self._volume = 0 self._volume = 0
self._app_power = app_power self._app_power = app_power
@ -162,7 +171,7 @@ class PanasonicVieraTVDevice(MediaPlayerDevice):
def turn_on(self): def turn_on(self):
"""Turn on the media player.""" """Turn on the media player."""
if self._mac: if self._mac:
self._wol.send_magic_packet(self._mac, ip_address=self._host) self._wol.send_magic_packet(self._mac, ip_address=self._broadcast)
self._state = STATE_ON self._state = STATE_ON
elif self._app_power: elif self._app_power:
self._remote.turn_on() self._remote.turn_on()

View File

@ -40,6 +40,7 @@ CONF_BELOW = "below"
CONF_BINARY_SENSORS = "binary_sensors" CONF_BINARY_SENSORS = "binary_sensors"
CONF_BLACKLIST = "blacklist" CONF_BLACKLIST = "blacklist"
CONF_BRIGHTNESS = "brightness" CONF_BRIGHTNESS = "brightness"
CONF_BROADCAST_ADDRESS = "broadcast_address"
CONF_CLIENT_ID = "client_id" CONF_CLIENT_ID = "client_id"
CONF_CLIENT_SECRET = "client_secret" CONF_CLIENT_SECRET = "client_secret"
CONF_CODE = "code" CONF_CODE = "code"