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,
)
from homeassistant.const import (
CONF_BROADCAST_ADDRESS,
CONF_HOST,
CONF_MAC,
CONF_NAME,
@ -36,6 +37,7 @@ CONF_APP_POWER = "app_power"
DEFAULT_NAME = "Panasonic Viera TV"
DEFAULT_PORT = 55000
DEFAULT_BROADCAST_ADDRESS = "255.255.255.255"
DEFAULT_APP_POWER = False
SUPPORT_VIERATV = (
@ -55,6 +57,9 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
{
vol.Required(CONF_HOST): 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_PORT, default=DEFAULT_PORT): cv.port,
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):
"""Set up the Panasonic Viera TV platform."""
mac = config.get(CONF_MAC)
broadcast = config.get(CONF_BROADCAST_ADDRESS)
name = config.get(CONF_NAME)
port = config.get(CONF_PORT)
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)
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
class PanasonicVieraTVDevice(MediaPlayerDevice):
"""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."""
# Save a reference to the imported class
self._wol = wakeonlan
@ -105,6 +113,7 @@ class PanasonicVieraTVDevice(MediaPlayerDevice):
self._state = None
self._remote = remote
self._host = host
self._broadcast = broadcast
self._volume = 0
self._app_power = app_power
@ -162,7 +171,7 @@ class PanasonicVieraTVDevice(MediaPlayerDevice):
def turn_on(self):
"""Turn on the media player."""
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
elif self._app_power:
self._remote.turn_on()

View File

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