Use voluptuous for Zone (#3377)
* Migrate to voluptuous * Zone: Remove unneeded latitude/longitude checkpull/3353/merge
parent
7724cb9eb4
commit
782838af56
|
@ -6,30 +6,47 @@ https://home-assistant.io/components/zone/
|
|||
"""
|
||||
import logging
|
||||
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.const import (
|
||||
ATTR_HIDDEN, ATTR_ICON, ATTR_LATITUDE, ATTR_LONGITUDE, CONF_NAME)
|
||||
ATTR_HIDDEN, ATTR_LATITUDE, ATTR_LONGITUDE, CONF_NAME, CONF_LATITUDE,
|
||||
CONF_LONGITUDE, CONF_ICON)
|
||||
from homeassistant.helpers import extract_domain_configs
|
||||
from homeassistant.helpers.entity import Entity, generate_entity_id
|
||||
from homeassistant.util.location import distance
|
||||
from homeassistant.util import convert
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
|
||||
DOMAIN = "zone"
|
||||
ENTITY_ID_FORMAT = 'zone.{}'
|
||||
ENTITY_ID_HOME = ENTITY_ID_FORMAT.format('home')
|
||||
STATE = 'zoning'
|
||||
|
||||
DEFAULT_NAME = 'Unnamed zone'
|
||||
|
||||
ATTR_RADIUS = 'radius'
|
||||
DEFAULT_RADIUS = 100
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
ATTR_PASSIVE = 'passive'
|
||||
ATTR_RADIUS = 'radius'
|
||||
|
||||
CONF_PASSIVE = 'passive'
|
||||
CONF_RADIUS = 'radius'
|
||||
|
||||
DEFAULT_NAME = 'Unnamed zone'
|
||||
DEFAULT_PASSIVE = False
|
||||
DEFAULT_RADIUS = 100
|
||||
DOMAIN = 'zone'
|
||||
|
||||
ENTITY_ID_FORMAT = 'zone.{}'
|
||||
ENTITY_ID_HOME = ENTITY_ID_FORMAT.format('home')
|
||||
|
||||
ICON_HOME = 'mdi:home'
|
||||
ICON_IMPORT = 'mdi:import'
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
STATE = 'zoning'
|
||||
|
||||
CONFIG_SCHEMA = vol.Schema({
|
||||
DOMAIN: vol.Schema({
|
||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||
vol.Required(CONF_LATITUDE): cv.latitude,
|
||||
vol.Required(CONF_LONGITUDE): cv.longitude,
|
||||
vol.Optional(CONF_RADIUS, default=DEFAULT_RADIUS): vol.Coerce(float),
|
||||
vol.Optional(CONF_PASSIVE, default=DEFAULT_PASSIVE): cv.boolean,
|
||||
vol.Optional(CONF_ICON): cv.icon,
|
||||
}),
|
||||
}, extra=vol.ALLOW_EXTRA)
|
||||
|
||||
|
||||
def active_zone(hass, latitude, longitude, radius=0):
|
||||
|
@ -80,20 +97,15 @@ def setup(hass, config):
|
|||
entries = entries,
|
||||
|
||||
for entry in entries:
|
||||
name = entry.get(CONF_NAME, DEFAULT_NAME)
|
||||
latitude = convert(entry.get(ATTR_LATITUDE), float)
|
||||
longitude = convert(entry.get(ATTR_LONGITUDE), float)
|
||||
radius = convert(entry.get(ATTR_RADIUS, DEFAULT_RADIUS), float)
|
||||
icon = entry.get(ATTR_ICON)
|
||||
passive = entry.get(ATTR_PASSIVE, DEFAULT_PASSIVE)
|
||||
name = entry.get(CONF_NAME)
|
||||
latitude = entry.get(CONF_LATITUDE)
|
||||
longitude = entry.get(CONF_LONGITUDE)
|
||||
radius = entry.get(CONF_RADIUS)
|
||||
icon = entry.get(CONF_ICON)
|
||||
passive = entry.get(CONF_PASSIVE)
|
||||
|
||||
if None in (latitude, longitude):
|
||||
logging.getLogger(__name__).error(
|
||||
'Each zone needs a latitude and longitude.')
|
||||
continue
|
||||
|
||||
zone = Zone(hass, name, latitude, longitude, radius,
|
||||
icon, passive, False)
|
||||
zone = Zone(
|
||||
hass, name, latitude, longitude, radius, icon, passive, False)
|
||||
add_zone(hass, name, zone, entities)
|
||||
entities.add(zone.entity_id)
|
||||
|
||||
|
@ -116,8 +128,7 @@ def add_zone(hass, name, zone, entities=None):
|
|||
_entities = set()
|
||||
else:
|
||||
_entities = entities
|
||||
zone.entity_id = generate_entity_id(ENTITY_ID_FORMAT, name,
|
||||
_entities)
|
||||
zone.entity_id = generate_entity_id(ENTITY_ID_FORMAT, name, _entities)
|
||||
zone_exists = hass.states.get(zone.entity_id)
|
||||
if zone_exists is None:
|
||||
zone.update_ha_state()
|
||||
|
|
Loading…
Reference in New Issue