mirror of
https://github.com/home-assistant/core.git
synced 2025-12-24 12:59:34 +00:00
Black
This commit is contained in:
@@ -7,24 +7,34 @@ import voluptuous as vol
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
|
||||
from homeassistant.components.switch import (
|
||||
SwitchDevice, PLATFORM_SCHEMA, ENTITY_ID_FORMAT)
|
||||
SwitchDevice,
|
||||
PLATFORM_SCHEMA,
|
||||
ENTITY_ID_FORMAT,
|
||||
)
|
||||
from homeassistant.const import (
|
||||
CONF_FRIENDLY_NAME, CONF_SWITCHES, CONF_VALUE_TEMPLATE, CONF_COMMAND_OFF,
|
||||
CONF_COMMAND_ON, CONF_COMMAND_STATE)
|
||||
CONF_FRIENDLY_NAME,
|
||||
CONF_SWITCHES,
|
||||
CONF_VALUE_TEMPLATE,
|
||||
CONF_COMMAND_OFF,
|
||||
CONF_COMMAND_ON,
|
||||
CONF_COMMAND_STATE,
|
||||
)
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
SWITCH_SCHEMA = vol.Schema({
|
||||
vol.Optional(CONF_COMMAND_OFF, default='true'): cv.string,
|
||||
vol.Optional(CONF_COMMAND_ON, default='true'): cv.string,
|
||||
vol.Optional(CONF_COMMAND_STATE): cv.string,
|
||||
vol.Optional(CONF_FRIENDLY_NAME): cv.string,
|
||||
vol.Optional(CONF_VALUE_TEMPLATE): cv.template,
|
||||
})
|
||||
SWITCH_SCHEMA = vol.Schema(
|
||||
{
|
||||
vol.Optional(CONF_COMMAND_OFF, default="true"): cv.string,
|
||||
vol.Optional(CONF_COMMAND_ON, default="true"): cv.string,
|
||||
vol.Optional(CONF_COMMAND_STATE): cv.string,
|
||||
vol.Optional(CONF_FRIENDLY_NAME): cv.string,
|
||||
vol.Optional(CONF_VALUE_TEMPLATE): cv.template,
|
||||
}
|
||||
)
|
||||
|
||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||
vol.Required(CONF_SWITCHES): cv.schema_with_slug_keys(SWITCH_SCHEMA),
|
||||
})
|
||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
|
||||
{vol.Required(CONF_SWITCHES): cv.schema_with_slug_keys(SWITCH_SCHEMA)}
|
||||
)
|
||||
|
||||
|
||||
def setup_platform(hass, config, add_entities, discovery_info=None):
|
||||
@@ -46,7 +56,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
||||
device_config.get(CONF_COMMAND_ON),
|
||||
device_config.get(CONF_COMMAND_OFF),
|
||||
device_config.get(CONF_COMMAND_STATE),
|
||||
value_template
|
||||
value_template,
|
||||
)
|
||||
)
|
||||
|
||||
@@ -60,8 +70,16 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
||||
class CommandSwitch(SwitchDevice):
|
||||
"""Representation a switch that can be toggled using shell commands."""
|
||||
|
||||
def __init__(self, hass, object_id, friendly_name, command_on,
|
||||
command_off, command_state, value_template):
|
||||
def __init__(
|
||||
self,
|
||||
hass,
|
||||
object_id,
|
||||
friendly_name,
|
||||
command_on,
|
||||
command_off,
|
||||
command_state,
|
||||
value_template,
|
||||
):
|
||||
"""Initialize the switch."""
|
||||
self._hass = hass
|
||||
self.entity_id = ENTITY_ID_FORMAT.format(object_id)
|
||||
@@ -77,7 +95,7 @@ class CommandSwitch(SwitchDevice):
|
||||
"""Execute the actual commands."""
|
||||
_LOGGER.info("Running command: %s", command)
|
||||
|
||||
success = (subprocess.call(command, shell=True) == 0)
|
||||
success = subprocess.call(command, shell=True) == 0
|
||||
|
||||
if not success:
|
||||
_LOGGER.error("Command failed: %s", command)
|
||||
@@ -91,7 +109,7 @@ class CommandSwitch(SwitchDevice):
|
||||
|
||||
try:
|
||||
return_value = subprocess.check_output(command, shell=True)
|
||||
return return_value.strip().decode('utf-8')
|
||||
return return_value.strip().decode("utf-8")
|
||||
except subprocess.CalledProcessError:
|
||||
_LOGGER.error("Command failed: %s", command)
|
||||
|
||||
@@ -135,20 +153,17 @@ class CommandSwitch(SwitchDevice):
|
||||
if self._command_state:
|
||||
payload = str(self._query_state())
|
||||
if self._value_template:
|
||||
payload = self._value_template.render_with_possible_json_value(
|
||||
payload)
|
||||
self._state = (payload.lower() == 'true')
|
||||
payload = self._value_template.render_with_possible_json_value(payload)
|
||||
self._state = payload.lower() == "true"
|
||||
|
||||
def turn_on(self, **kwargs):
|
||||
"""Turn the device on."""
|
||||
if (CommandSwitch._switch(self._command_on) and
|
||||
not self._command_state):
|
||||
if CommandSwitch._switch(self._command_on) and not self._command_state:
|
||||
self._state = True
|
||||
self.schedule_update_ha_state()
|
||||
|
||||
def turn_off(self, **kwargs):
|
||||
"""Turn the device off."""
|
||||
if (CommandSwitch._switch(self._command_off) and
|
||||
not self._command_state):
|
||||
if CommandSwitch._switch(self._command_off) and not self._command_state:
|
||||
self._state = False
|
||||
self.schedule_update_ha_state()
|
||||
|
||||
Reference in New Issue
Block a user