Black
This commit is contained in:
parent
da05dfe708
commit
4de97abc3a
2676 changed files with 163166 additions and 140084 deletions
|
@ -7,8 +7,14 @@ import voluptuous as vol
|
|||
|
||||
from homeassistant.components.sensor import PLATFORM_SCHEMA
|
||||
from homeassistant.const import (
|
||||
CONF_HOST, CONF_PASSWORD, CONF_SCAN_INTERVAL, CONF_SSL, CONF_VERIFY_SSL,
|
||||
EVENT_HOMEASSISTANT_STOP, CONF_PATH)
|
||||
CONF_HOST,
|
||||
CONF_PASSWORD,
|
||||
CONF_SCAN_INTERVAL,
|
||||
CONF_SSL,
|
||||
CONF_VERIFY_SSL,
|
||||
EVENT_HOMEASSISTANT_STOP,
|
||||
CONF_PATH,
|
||||
)
|
||||
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.helpers.entity import Entity
|
||||
|
@ -16,20 +22,21 @@ from homeassistant.helpers.event import async_track_time_interval
|
|||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
CONF_CUSTOM = 'custom'
|
||||
CONF_FACTOR = 'factor'
|
||||
CONF_GROUP = 'group'
|
||||
CONF_KEY = 'key'
|
||||
CONF_SENSORS = 'sensors'
|
||||
CONF_UNIT = 'unit'
|
||||
CONF_CUSTOM = "custom"
|
||||
CONF_FACTOR = "factor"
|
||||
CONF_GROUP = "group"
|
||||
CONF_KEY = "key"
|
||||
CONF_SENSORS = "sensors"
|
||||
CONF_UNIT = "unit"
|
||||
|
||||
GROUPS = ['user', 'installer']
|
||||
GROUPS = ["user", "installer"]
|
||||
|
||||
|
||||
def _check_sensor_schema(conf):
|
||||
"""Check sensors and attributes are valid."""
|
||||
try:
|
||||
import pysma
|
||||
|
||||
valid = [s.name for s in pysma.Sensors()]
|
||||
except (ImportError, AttributeError):
|
||||
return conf
|
||||
|
@ -47,29 +54,37 @@ def _check_sensor_schema(conf):
|
|||
return conf
|
||||
|
||||
|
||||
CUSTOM_SCHEMA = vol.Any({
|
||||
vol.Required(CONF_KEY):
|
||||
vol.All(cv.string, vol.Length(min=13, max=15)),
|
||||
vol.Required(CONF_UNIT): cv.string,
|
||||
vol.Optional(CONF_FACTOR, default=1): vol.Coerce(float),
|
||||
vol.Optional(CONF_PATH): vol.All(cv.ensure_list, [str]),
|
||||
})
|
||||
CUSTOM_SCHEMA = vol.Any(
|
||||
{
|
||||
vol.Required(CONF_KEY): vol.All(cv.string, vol.Length(min=13, max=15)),
|
||||
vol.Required(CONF_UNIT): cv.string,
|
||||
vol.Optional(CONF_FACTOR, default=1): vol.Coerce(float),
|
||||
vol.Optional(CONF_PATH): vol.All(cv.ensure_list, [str]),
|
||||
}
|
||||
)
|
||||
|
||||
PLATFORM_SCHEMA = vol.All(PLATFORM_SCHEMA.extend({
|
||||
vol.Required(CONF_HOST): cv.string,
|
||||
vol.Optional(CONF_SSL, default=False): cv.boolean,
|
||||
vol.Optional(CONF_VERIFY_SSL, default=True): cv.boolean,
|
||||
vol.Required(CONF_PASSWORD): cv.string,
|
||||
vol.Optional(CONF_GROUP, default=GROUPS[0]): vol.In(GROUPS),
|
||||
vol.Optional(CONF_SENSORS, default={}):
|
||||
cv.schema_with_slug_keys(cv.ensure_list),
|
||||
vol.Optional(CONF_CUSTOM, default={}):
|
||||
cv.schema_with_slug_keys(CUSTOM_SCHEMA),
|
||||
}, extra=vol.PREVENT_EXTRA), _check_sensor_schema)
|
||||
PLATFORM_SCHEMA = vol.All(
|
||||
PLATFORM_SCHEMA.extend(
|
||||
{
|
||||
vol.Required(CONF_HOST): cv.string,
|
||||
vol.Optional(CONF_SSL, default=False): cv.boolean,
|
||||
vol.Optional(CONF_VERIFY_SSL, default=True): cv.boolean,
|
||||
vol.Required(CONF_PASSWORD): cv.string,
|
||||
vol.Optional(CONF_GROUP, default=GROUPS[0]): vol.In(GROUPS),
|
||||
vol.Optional(CONF_SENSORS, default={}): cv.schema_with_slug_keys(
|
||||
cv.ensure_list
|
||||
),
|
||||
vol.Optional(CONF_CUSTOM, default={}): cv.schema_with_slug_keys(
|
||||
CUSTOM_SCHEMA
|
||||
),
|
||||
},
|
||||
extra=vol.PREVENT_EXTRA,
|
||||
),
|
||||
_check_sensor_schema,
|
||||
)
|
||||
|
||||
|
||||
async def async_setup_platform(
|
||||
hass, config, async_add_entities, discovery_info=None):
|
||||
async def async_setup_platform(hass, config, async_add_entities, discovery_info=None):
|
||||
"""Set up SMA WebConnect sensor."""
|
||||
import pysma
|
||||
|
||||
|
@ -80,9 +95,12 @@ async def async_setup_platform(
|
|||
sensor_def = pysma.Sensors()
|
||||
|
||||
# Sensor from the custom config
|
||||
sensor_def.add([pysma.Sensor(o[CONF_KEY], n, o[CONF_UNIT], o[CONF_FACTOR],
|
||||
o.get(CONF_PATH))
|
||||
for n, o in config[CONF_CUSTOM].items()])
|
||||
sensor_def.add(
|
||||
[
|
||||
pysma.Sensor(o[CONF_KEY], n, o[CONF_UNIT], o[CONF_FACTOR], o.get(CONF_PATH))
|
||||
for n, o in config[CONF_CUSTOM].items()
|
||||
]
|
||||
)
|
||||
|
||||
# Use all sensors by default
|
||||
config_sensors = config[CONF_SENSORS]
|
||||
|
@ -105,8 +123,7 @@ async def async_setup_platform(
|
|||
session = async_get_clientsession(hass, verify_ssl=config[CONF_VERIFY_SSL])
|
||||
grp = config[CONF_GROUP]
|
||||
|
||||
url = "http{}://{}".format(
|
||||
"s" if config[CONF_SSL] else "", config[CONF_HOST])
|
||||
url = "http{}://{}".format("s" if config[CONF_SSL] else "", config[CONF_HOST])
|
||||
|
||||
sma = pysma.SMA(session, url, config[CONF_PASSWORD], group=grp)
|
||||
|
||||
|
@ -190,7 +207,7 @@ class SMAsensor(Entity):
|
|||
update = False
|
||||
|
||||
for sens in self._sub_sensors:
|
||||
newval = '{} {}'.format(sens.value, sens.unit)
|
||||
newval = "{} {}".format(sens.value, sens.unit)
|
||||
if self._attr[sens.name] != newval:
|
||||
update = True
|
||||
self._attr[sens.name] = newval
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue