mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
Use ATTR_NAME from const.py (#14450)
This commit is contained in:
parent
fb501282cc
commit
954e4796b8
@ -10,7 +10,7 @@ import voluptuous as vol
|
||||
|
||||
from homeassistant.components import rfxtrx
|
||||
from homeassistant.components.binary_sensor import (
|
||||
PLATFORM_SCHEMA, DEVICE_CLASSES_SCHEMA, BinarySensorDevice)
|
||||
DEVICE_CLASSES_SCHEMA, PLATFORM_SCHEMA, BinarySensorDevice)
|
||||
from homeassistant.components.rfxtrx import (
|
||||
ATTR_NAME, CONF_AUTOMATIC_ADD, CONF_DATA_BITS, CONF_DEVICES,
|
||||
CONF_FIRE_EVENT, CONF_OFF_DELAY)
|
||||
@ -29,8 +29,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||
vol.Optional(CONF_DEVICES, default={}): {
|
||||
cv.string: vol.Schema({
|
||||
vol.Optional(CONF_NAME): cv.string,
|
||||
vol.Optional(CONF_DEVICE_CLASS):
|
||||
DEVICE_CLASSES_SCHEMA,
|
||||
vol.Optional(CONF_DEVICE_CLASS): DEVICE_CLASSES_SCHEMA,
|
||||
vol.Optional(CONF_FIRE_EVENT, default=False): cv.boolean,
|
||||
vol.Optional(CONF_OFF_DELAY):
|
||||
vol.Any(cv.time_period, cv.positive_timedelta),
|
||||
|
@ -33,7 +33,7 @@ from homeassistant.helpers.event import async_track_utc_time_change
|
||||
from homeassistant.const import (
|
||||
ATTR_GPS_ACCURACY, ATTR_LATITUDE, ATTR_LONGITUDE, CONF_NAME, CONF_MAC,
|
||||
DEVICE_DEFAULT_NAME, STATE_HOME, STATE_NOT_HOME, ATTR_ENTITY_ID,
|
||||
CONF_ICON, ATTR_ICON)
|
||||
CONF_ICON, ATTR_ICON, ATTR_NAME)
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
@ -71,7 +71,6 @@ ATTR_GPS = 'gps'
|
||||
ATTR_HOST_NAME = 'host_name'
|
||||
ATTR_LOCATION_NAME = 'location_name'
|
||||
ATTR_MAC = 'mac'
|
||||
ATTR_NAME = 'name'
|
||||
ATTR_SOURCE_TYPE = 'source_type'
|
||||
ATTR_CONSIDER_HOME = 'consider_home'
|
||||
|
||||
|
@ -14,7 +14,7 @@ from homeassistant.const import (
|
||||
ATTR_ENTITY_ID, CONF_ICON, CONF_NAME, STATE_CLOSED, STATE_HOME,
|
||||
STATE_NOT_HOME, STATE_OFF, STATE_ON, STATE_OPEN, STATE_LOCKED,
|
||||
STATE_UNLOCKED, STATE_OK, STATE_PROBLEM, STATE_UNKNOWN,
|
||||
ATTR_ASSUMED_STATE, SERVICE_RELOAD)
|
||||
ATTR_ASSUMED_STATE, SERVICE_RELOAD, ATTR_NAME, ATTR_ICON)
|
||||
from homeassistant.core import callback
|
||||
from homeassistant.loader import bind_hass
|
||||
from homeassistant.helpers.entity import Entity, async_generate_entity_id
|
||||
@ -35,8 +35,6 @@ ATTR_ADD_ENTITIES = 'add_entities'
|
||||
ATTR_AUTO = 'auto'
|
||||
ATTR_CONTROL = 'control'
|
||||
ATTR_ENTITIES = 'entities'
|
||||
ATTR_ICON = 'icon'
|
||||
ATTR_NAME = 'name'
|
||||
ATTR_OBJECT_ID = 'object_id'
|
||||
ATTR_ORDER = 'order'
|
||||
ATTR_VIEW = 'view'
|
||||
|
@ -13,12 +13,13 @@ import voluptuous as vol
|
||||
|
||||
from homeassistant.components import SERVICE_CHECK_CONFIG
|
||||
from homeassistant.const import (
|
||||
SERVICE_HOMEASSISTANT_RESTART, SERVICE_HOMEASSISTANT_STOP)
|
||||
ATTR_NAME, SERVICE_HOMEASSISTANT_RESTART, SERVICE_HOMEASSISTANT_STOP)
|
||||
from homeassistant.core import DOMAIN as HASS_DOMAIN
|
||||
from homeassistant.core import callback
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.loader import bind_hass
|
||||
from homeassistant.util.dt import utcnow
|
||||
|
||||
from .handler import HassIO
|
||||
from .http import HassIOView
|
||||
|
||||
@ -47,7 +48,6 @@ ATTR_SNAPSHOT = 'snapshot'
|
||||
ATTR_ADDONS = 'addons'
|
||||
ATTR_FOLDERS = 'folders'
|
||||
ATTR_HOMEASSISTANT = 'homeassistant'
|
||||
ATTR_NAME = 'name'
|
||||
ATTR_PASSWORD = 'password'
|
||||
|
||||
SCHEMA_NO_DATA = vol.Schema({})
|
||||
|
@ -13,17 +13,19 @@ import socket
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.const import (
|
||||
EVENT_HOMEASSISTANT_STOP, CONF_USERNAME, CONF_PASSWORD, CONF_PLATFORM,
|
||||
CONF_HOSTS, CONF_HOST, ATTR_ENTITY_ID, STATE_UNKNOWN)
|
||||
ATTR_ENTITY_ID, ATTR_NAME, CONF_HOST, CONF_HOSTS, CONF_PASSWORD,
|
||||
CONF_PLATFORM, CONF_USERNAME, EVENT_HOMEASSISTANT_STOP, STATE_UNKNOWN)
|
||||
from homeassistant.helpers import discovery
|
||||
from homeassistant.helpers.entity import Entity
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.helpers.entity import Entity
|
||||
from homeassistant.loader import bind_hass
|
||||
|
||||
REQUIREMENTS = ['pyhomematic==0.1.42']
|
||||
DOMAIN = 'homematic'
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
DOMAIN = 'homematic'
|
||||
|
||||
SCAN_INTERVAL_HUB = timedelta(seconds=300)
|
||||
SCAN_INTERVAL_VARIABLES = timedelta(seconds=30)
|
||||
|
||||
@ -38,7 +40,6 @@ DISCOVER_LOCKS = 'homematic.locks'
|
||||
ATTR_DISCOVER_DEVICES = 'devices'
|
||||
ATTR_PARAM = 'param'
|
||||
ATTR_CHANNEL = 'channel'
|
||||
ATTR_NAME = 'name'
|
||||
ATTR_ADDRESS = 'address'
|
||||
ATTR_VALUE = 'value'
|
||||
ATTR_INTERFACE = 'interface'
|
||||
|
@ -10,14 +10,14 @@ import logging
|
||||
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.core import callback
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.const import (
|
||||
ATTR_ENTITY_ID, CONF_NAME, CONF_ENTITY_ID)
|
||||
ATTR_ENTITY_ID, ATTR_NAME, CONF_ENTITY_ID, CONF_NAME)
|
||||
from homeassistant.core import callback
|
||||
from homeassistant.exceptions import HomeAssistantError
|
||||
from homeassistant.loader import bind_hass
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.helpers.entity import Entity
|
||||
from homeassistant.helpers.entity_component import EntityComponent
|
||||
from homeassistant.loader import bind_hass
|
||||
from homeassistant.util.async_ import run_callback_threadsafe
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
@ -42,7 +42,6 @@ ATTR_CONFIDENCE = 'confidence'
|
||||
ATTR_FACES = 'faces'
|
||||
ATTR_GENDER = 'gender'
|
||||
ATTR_GLASSES = 'glasses'
|
||||
ATTR_NAME = 'name'
|
||||
ATTR_MOTION = 'motion'
|
||||
ATTR_TOTAL_FACES = 'total_faces'
|
||||
|
||||
@ -60,7 +59,7 @@ SOURCE_SCHEMA = vol.Schema({
|
||||
PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({
|
||||
vol.Optional(CONF_SOURCE): vol.All(cv.ensure_list, [SOURCE_SCHEMA]),
|
||||
vol.Optional(CONF_CONFIDENCE, default=DEFAULT_CONFIDENCE):
|
||||
vol.All(vol.Coerce(float), vol.Range(min=0, max=100))
|
||||
vol.All(vol.Coerce(float), vol.Range(min=0, max=100)),
|
||||
})
|
||||
|
||||
SERVICE_SCAN_SCHEMA = vol.Schema({
|
||||
@ -77,7 +76,7 @@ def scan(hass, entity_id=None):
|
||||
|
||||
@asyncio.coroutine
|
||||
def async_setup(hass, config):
|
||||
"""Set up image processing."""
|
||||
"""Set up the image processing."""
|
||||
component = EntityComponent(_LOGGER, DOMAIN, hass, SCAN_INTERVAL)
|
||||
|
||||
yield from component.async_setup(config)
|
||||
|
@ -9,12 +9,12 @@ import logging
|
||||
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.components.image_processing import (
|
||||
ATTR_AGE, ATTR_GENDER, ATTR_GLASSES, CONF_ENTITY_ID, CONF_NAME,
|
||||
CONF_SOURCE, PLATFORM_SCHEMA, ImageProcessingFaceEntity)
|
||||
from homeassistant.components.microsoft_face import DATA_MICROSOFT_FACE
|
||||
from homeassistant.core import split_entity_id
|
||||
from homeassistant.exceptions import HomeAssistantError
|
||||
from homeassistant.components.microsoft_face import DATA_MICROSOFT_FACE
|
||||
from homeassistant.components.image_processing import (
|
||||
PLATFORM_SCHEMA, ImageProcessingFaceEntity, ATTR_AGE, ATTR_GENDER,
|
||||
ATTR_GLASSES, CONF_SOURCE, CONF_ENTITY_ID, CONF_NAME)
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
|
||||
DEPENDENCIES = ['microsoft_face']
|
||||
|
@ -9,12 +9,13 @@ import logging
|
||||
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.components.image_processing import (
|
||||
ATTR_CONFIDENCE, CONF_CONFIDENCE, CONF_ENTITY_ID, CONF_NAME, CONF_SOURCE,
|
||||
PLATFORM_SCHEMA, ImageProcessingFaceEntity)
|
||||
from homeassistant.components.microsoft_face import DATA_MICROSOFT_FACE
|
||||
from homeassistant.const import ATTR_NAME
|
||||
from homeassistant.core import split_entity_id
|
||||
from homeassistant.exceptions import HomeAssistantError
|
||||
from homeassistant.components.microsoft_face import DATA_MICROSOFT_FACE
|
||||
from homeassistant.components.image_processing import (
|
||||
PLATFORM_SCHEMA, ImageProcessingFaceEntity, ATTR_NAME,
|
||||
CONF_CONFIDENCE, CONF_SOURCE, CONF_ENTITY_ID, CONF_NAME, ATTR_CONFIDENCE)
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
|
||||
DEPENDENCIES = ['microsoft_face']
|
||||
|
@ -11,7 +11,8 @@ import voluptuous as vol
|
||||
|
||||
from homeassistant.components.lock import LockDevice
|
||||
from homeassistant.components.wink import DOMAIN, WinkDevice
|
||||
from homeassistant.const import ATTR_CODE, ATTR_ENTITY_ID, STATE_UNKNOWN
|
||||
from homeassistant.const import (
|
||||
ATTR_CODE, ATTR_ENTITY_ID, ATTR_NAME, STATE_UNKNOWN)
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
|
||||
DEPENDENCIES = ['wink']
|
||||
@ -28,7 +29,6 @@ SERVICE_ADD_KEY = 'wink_add_new_lock_key_code'
|
||||
ATTR_ENABLED = 'enabled'
|
||||
ATTR_SENSITIVITY = 'sensitivity'
|
||||
ATTR_MODE = 'mode'
|
||||
ATTR_NAME = 'name'
|
||||
|
||||
ALARM_SENSITIVITY_MAP = {
|
||||
'low': 0.2,
|
||||
|
@ -4,44 +4,49 @@ Event parser and human readable log generator.
|
||||
For more details about this component, please refer to the documentation at
|
||||
https://home-assistant.io/components/logbook/
|
||||
"""
|
||||
import logging
|
||||
from datetime import timedelta
|
||||
from itertools import groupby
|
||||
import logging
|
||||
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.core import callback
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
import homeassistant.util.dt as dt_util
|
||||
from homeassistant.components import sun
|
||||
from homeassistant.components.http import HomeAssistantView
|
||||
from homeassistant.const import (
|
||||
EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP, EVENT_STATE_CHANGED,
|
||||
STATE_NOT_HOME, STATE_OFF, STATE_ON, ATTR_HIDDEN, HTTP_BAD_REQUEST,
|
||||
EVENT_LOGBOOK_ENTRY)
|
||||
from homeassistant.core import State, split_entity_id, DOMAIN as HA_DOMAIN
|
||||
|
||||
DOMAIN = 'logbook'
|
||||
DEPENDENCIES = ['recorder', 'frontend']
|
||||
ATTR_DOMAIN, ATTR_ENTITY_ID, ATTR_HIDDEN, ATTR_NAME, CONF_EXCLUDE,
|
||||
CONF_INCLUDE, EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP,
|
||||
EVENT_LOGBOOK_ENTRY, EVENT_STATE_CHANGED, HTTP_BAD_REQUEST, STATE_NOT_HOME,
|
||||
STATE_OFF, STATE_ON)
|
||||
from homeassistant.core import DOMAIN as HA_DOMAIN
|
||||
from homeassistant.core import State, callback, split_entity_id
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
import homeassistant.util.dt as dt_util
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
CONF_EXCLUDE = 'exclude'
|
||||
CONF_INCLUDE = 'include'
|
||||
CONF_ENTITIES = 'entities'
|
||||
ATTR_MESSAGE = 'message'
|
||||
|
||||
CONF_DOMAINS = 'domains'
|
||||
CONF_ENTITIES = 'entities'
|
||||
CONTINUOUS_DOMAINS = ['proximity', 'sensor']
|
||||
|
||||
DEPENDENCIES = ['recorder', 'frontend']
|
||||
|
||||
DOMAIN = 'logbook'
|
||||
|
||||
GROUP_BY_MINUTES = 15
|
||||
|
||||
CONFIG_SCHEMA = vol.Schema({
|
||||
DOMAIN: vol.Schema({
|
||||
CONF_EXCLUDE: vol.Schema({
|
||||
vol.Optional(CONF_ENTITIES, default=[]): cv.entity_ids,
|
||||
vol.Optional(CONF_DOMAINS, default=[]): vol.All(cv.ensure_list,
|
||||
[cv.string])
|
||||
vol.Optional(CONF_DOMAINS, default=[]):
|
||||
vol.All(cv.ensure_list, [cv.string])
|
||||
}),
|
||||
CONF_INCLUDE: vol.Schema({
|
||||
vol.Optional(CONF_ENTITIES, default=[]): cv.entity_ids,
|
||||
vol.Optional(CONF_DOMAINS, default=[]): vol.All(cv.ensure_list,
|
||||
[cv.string])
|
||||
vol.Optional(CONF_DOMAINS, default=[]):
|
||||
vol.All(cv.ensure_list, [cv.string])
|
||||
})
|
||||
}),
|
||||
}, extra=vol.ALLOW_EXTRA)
|
||||
@ -51,15 +56,6 @@ ALL_EVENT_TYPES = [
|
||||
EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP
|
||||
]
|
||||
|
||||
GROUP_BY_MINUTES = 15
|
||||
|
||||
CONTINUOUS_DOMAINS = ['proximity', 'sensor']
|
||||
|
||||
ATTR_NAME = 'name'
|
||||
ATTR_MESSAGE = 'message'
|
||||
ATTR_DOMAIN = 'domain'
|
||||
ATTR_ENTITY_ID = 'entity_id'
|
||||
|
||||
LOG_MESSAGE_SCHEMA = vol.Schema({
|
||||
vol.Required(ATTR_NAME): cv.string,
|
||||
vol.Required(ATTR_MESSAGE): cv.template,
|
||||
|
@ -1,5 +1,5 @@
|
||||
"""
|
||||
Support for microsoft face recognition.
|
||||
Support for Microsoft face recognition.
|
||||
|
||||
For more details about this component, please refer to the documentation at
|
||||
https://home-assistant.io/components/microsoft_face/
|
||||
@ -13,7 +13,7 @@ from aiohttp.hdrs import CONTENT_TYPE
|
||||
import async_timeout
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.const import CONF_API_KEY, CONF_TIMEOUT
|
||||
from homeassistant.const import CONF_API_KEY, CONF_TIMEOUT, ATTR_NAME
|
||||
from homeassistant.exceptions import HomeAssistantError
|
||||
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
@ -22,28 +22,25 @@ from homeassistant.util import slugify
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
DOMAIN = 'microsoft_face'
|
||||
DEPENDENCIES = ['camera']
|
||||
|
||||
FACE_API_URL = "api.cognitive.microsoft.com/face/v1.0/{0}"
|
||||
|
||||
DATA_MICROSOFT_FACE = 'microsoft_face'
|
||||
ATTR_CAMERA_ENTITY = 'camera_entity'
|
||||
ATTR_GROUP = 'group'
|
||||
ATTR_PERSON = 'person'
|
||||
|
||||
CONF_AZURE_REGION = 'azure_region'
|
||||
|
||||
DATA_MICROSOFT_FACE = 'microsoft_face'
|
||||
DEFAULT_TIMEOUT = 10
|
||||
DEPENDENCIES = ['camera']
|
||||
DOMAIN = 'microsoft_face'
|
||||
|
||||
FACE_API_URL = "api.cognitive.microsoft.com/face/v1.0/{0}"
|
||||
|
||||
SERVICE_CREATE_GROUP = 'create_group'
|
||||
SERVICE_DELETE_GROUP = 'delete_group'
|
||||
SERVICE_TRAIN_GROUP = 'train_group'
|
||||
SERVICE_CREATE_PERSON = 'create_person'
|
||||
SERVICE_DELETE_GROUP = 'delete_group'
|
||||
SERVICE_DELETE_PERSON = 'delete_person'
|
||||
SERVICE_FACE_PERSON = 'face_person'
|
||||
|
||||
ATTR_GROUP = 'group'
|
||||
ATTR_PERSON = 'person'
|
||||
ATTR_CAMERA_ENTITY = 'camera_entity'
|
||||
ATTR_NAME = 'name'
|
||||
|
||||
DEFAULT_TIMEOUT = 10
|
||||
SERVICE_TRAIN_GROUP = 'train_group'
|
||||
|
||||
CONFIG_SCHEMA = vol.Schema({
|
||||
DOMAIN: vol.Schema({
|
||||
@ -111,7 +108,7 @@ def face_person(hass, group, person, camera_entity):
|
||||
|
||||
@asyncio.coroutine
|
||||
def async_setup(hass, config):
|
||||
"""Set up microsoft face."""
|
||||
"""Set up Microsoft Face."""
|
||||
entities = {}
|
||||
face = MicrosoftFace(
|
||||
hass,
|
||||
|
@ -12,8 +12,8 @@ import voluptuous as vol
|
||||
from homeassistant.helpers.event import track_state_change
|
||||
from homeassistant.config import load_yaml_config_file
|
||||
from homeassistant.components.notify import (
|
||||
ATTR_TARGET, ATTR_DATA, BaseNotificationService, DOMAIN)
|
||||
from homeassistant.const import CONF_NAME, CONF_PLATFORM
|
||||
ATTR_TARGET, ATTR_DATA, BaseNotificationService, DOMAIN, PLATFORM_SCHEMA)
|
||||
from homeassistant.const import CONF_NAME, CONF_PLATFORM, ATTR_NAME
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.helpers import template as template_helper
|
||||
|
||||
@ -27,9 +27,8 @@ DEVICE_TRACKER_DOMAIN = 'device_tracker'
|
||||
SERVICE_REGISTER = 'apns_register'
|
||||
|
||||
ATTR_PUSH_ID = 'push_id'
|
||||
ATTR_NAME = 'name'
|
||||
|
||||
PLATFORM_SCHEMA = vol.Schema({
|
||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||
vol.Required(CONF_PLATFORM): 'apns',
|
||||
vol.Required(CONF_NAME): cv.string,
|
||||
vol.Required(CONF_CERTFILE): cv.isfile,
|
||||
@ -66,7 +65,7 @@ class ApnsDevice(object):
|
||||
"""
|
||||
|
||||
def __init__(self, push_id, name, tracking_device_id=None, disabled=False):
|
||||
"""Initialize Apns Device."""
|
||||
"""Initialize APNS Device."""
|
||||
self.device_push_id = push_id
|
||||
self.device_name = name
|
||||
self.tracking_id = tracking_device_id
|
||||
@ -104,7 +103,7 @@ class ApnsDevice(object):
|
||||
|
||||
@property
|
||||
def disabled(self):
|
||||
"""Return the ."""
|
||||
"""Return the state of the service."""
|
||||
return self.device_disabled
|
||||
|
||||
def disable(self):
|
||||
|
@ -4,21 +4,18 @@ Support for RFXtrx components.
|
||||
For more details about this component, please refer to the documentation at
|
||||
https://home-assistant.io/components/rfxtrx/
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
import logging
|
||||
from collections import OrderedDict
|
||||
import logging
|
||||
|
||||
import voluptuous as vol
|
||||
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.util import slugify
|
||||
from homeassistant.const import (
|
||||
EVENT_HOMEASSISTANT_START,
|
||||
EVENT_HOMEASSISTANT_STOP,
|
||||
ATTR_ENTITY_ID, TEMP_CELSIUS,
|
||||
CONF_DEVICES
|
||||
)
|
||||
ATTR_ENTITY_ID, ATTR_NAME, ATTR_STATE, CONF_DEVICE, CONF_DEVICES,
|
||||
EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP, TEMP_CELSIUS)
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.helpers.entity import Entity
|
||||
from homeassistant.util import slugify
|
||||
|
||||
REQUIREMENTS = ['pyRFXtrx==0.22.1']
|
||||
|
||||
@ -29,8 +26,6 @@ DEFAULT_SIGNAL_REPETITIONS = 1
|
||||
ATTR_AUTOMATIC_ADD = 'automatic_add'
|
||||
ATTR_DEVICE = 'device'
|
||||
ATTR_DEBUG = 'debug'
|
||||
ATTR_STATE = 'state'
|
||||
ATTR_NAME = 'name'
|
||||
ATTR_FIRE_EVENT = 'fire_event'
|
||||
ATTR_DATA_TYPE = 'data_type'
|
||||
ATTR_DUMMY = 'dummy'
|
||||
@ -40,7 +35,6 @@ CONF_DATA_TYPE = 'data_type'
|
||||
CONF_SIGNAL_REPETITIONS = 'signal_repetitions'
|
||||
CONF_FIRE_EVENT = 'fire_event'
|
||||
CONF_DUMMY = 'dummy'
|
||||
CONF_DEVICE = 'device'
|
||||
CONF_DEBUG = 'debug'
|
||||
CONF_OFF_DELAY = 'off_delay'
|
||||
EVENT_BUTTON_PRESSED = 'button_pressed'
|
||||
|
@ -4,32 +4,31 @@ Sensor for the CityBikes data.
|
||||
For more details about this platform, please refer to the documentation at
|
||||
https://home-assistant.io/components/sensor.citybikes/
|
||||
"""
|
||||
import logging
|
||||
from datetime import timedelta
|
||||
|
||||
import asyncio
|
||||
from datetime import timedelta
|
||||
import logging
|
||||
|
||||
import aiohttp
|
||||
import async_timeout
|
||||
import voluptuous as vol
|
||||
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.components.sensor import PLATFORM_SCHEMA, ENTITY_ID_FORMAT
|
||||
from homeassistant.components.sensor import ENTITY_ID_FORMAT, PLATFORM_SCHEMA
|
||||
from homeassistant.const import (
|
||||
CONF_NAME, CONF_LATITUDE, CONF_LONGITUDE, CONF_RADIUS,
|
||||
ATTR_ATTRIBUTION, ATTR_LOCATION, ATTR_LATITUDE, ATTR_LONGITUDE,
|
||||
STATE_UNKNOWN, LENGTH_METERS, LENGTH_FEET, ATTR_ID)
|
||||
ATTR_ATTRIBUTION, ATTR_ID, ATTR_LATITUDE, ATTR_LOCATION, ATTR_LONGITUDE,
|
||||
ATTR_NAME, CONF_LATITUDE, CONF_LONGITUDE, CONF_NAME, CONF_RADIUS,
|
||||
LENGTH_FEET, LENGTH_METERS)
|
||||
from homeassistant.exceptions import PlatformNotReady
|
||||
from homeassistant.helpers.event import async_track_time_interval
|
||||
from homeassistant.helpers.entity import Entity, async_generate_entity_id
|
||||
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
||||
from homeassistant.util import location, distance
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.helpers.entity import Entity, async_generate_entity_id
|
||||
from homeassistant.helpers.event import async_track_time_interval
|
||||
from homeassistant.util import distance, location
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
ATTR_EMPTY_SLOTS = 'empty_slots'
|
||||
ATTR_EXTRA = 'extra'
|
||||
ATTR_FREE_BIKES = 'free_bikes'
|
||||
ATTR_NAME = 'name'
|
||||
ATTR_NETWORK = 'network'
|
||||
ATTR_NETWORKS_LIST = 'networks'
|
||||
ATTR_STATIONS_LIST = 'stations'
|
||||
@ -151,8 +150,7 @@ def async_setup_platform(hass, config, async_add_devices,
|
||||
network = CityBikesNetwork(hass, network_id)
|
||||
hass.data[PLATFORM][MONITORED_NETWORKS][network_id] = network
|
||||
hass.async_add_job(network.async_refresh)
|
||||
async_track_time_interval(hass, network.async_refresh,
|
||||
SCAN_INTERVAL)
|
||||
async_track_time_interval(hass, network.async_refresh, SCAN_INTERVAL)
|
||||
else:
|
||||
network = hass.data[PLATFORM][MONITORED_NETWORKS][network_id]
|
||||
|
||||
@ -160,14 +158,14 @@ def async_setup_platform(hass, config, async_add_devices,
|
||||
|
||||
devices = []
|
||||
for station in network.stations:
|
||||
dist = location.distance(latitude, longitude,
|
||||
station[ATTR_LATITUDE],
|
||||
station[ATTR_LONGITUDE])
|
||||
dist = location.distance(
|
||||
latitude, longitude, station[ATTR_LATITUDE],
|
||||
station[ATTR_LONGITUDE])
|
||||
station_id = station[ATTR_ID]
|
||||
station_uid = str(station.get(ATTR_EXTRA, {}).get(ATTR_UID, ''))
|
||||
|
||||
if radius > dist or stations_list.intersection((station_id,
|
||||
station_uid)):
|
||||
if radius > dist or stations_list.intersection(
|
||||
(station_id, station_uid)):
|
||||
devices.append(CityBikesStation(hass, network, station_id, name))
|
||||
|
||||
async_add_devices(devices, True)
|
||||
@ -199,8 +197,8 @@ class CityBikesNetwork:
|
||||
for network in networks_list[1:]:
|
||||
network_latitude = network[ATTR_LOCATION][ATTR_LATITUDE]
|
||||
network_longitude = network[ATTR_LOCATION][ATTR_LONGITUDE]
|
||||
dist = location.distance(latitude, longitude,
|
||||
network_latitude, network_longitude)
|
||||
dist = location.distance(
|
||||
latitude, longitude, network_latitude, network_longitude)
|
||||
if dist < minimum_dist:
|
||||
minimum_dist = dist
|
||||
result = network[ATTR_ID]
|
||||
@ -246,13 +244,13 @@ class CityBikesStation(Entity):
|
||||
uid = "_".join([network.network_id, base_name, station_id])
|
||||
else:
|
||||
uid = "_".join([network.network_id, station_id])
|
||||
self.entity_id = async_generate_entity_id(ENTITY_ID_FORMAT, uid,
|
||||
hass=hass)
|
||||
self.entity_id = async_generate_entity_id(
|
||||
ENTITY_ID_FORMAT, uid, hass=hass)
|
||||
|
||||
@property
|
||||
def state(self):
|
||||
"""Return the state of the sensor."""
|
||||
return self._station_data.get(ATTR_FREE_BIKES, STATE_UNKNOWN)
|
||||
return self._station_data.get(ATTR_FREE_BIKES, None)
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
|
@ -23,7 +23,6 @@ _LOGGER = logging.getLogger(__name__)
|
||||
ATTR_24H_VOLUME = '24h_volume'
|
||||
ATTR_AVAILABLE_SUPPLY = 'available_supply'
|
||||
ATTR_MARKET_CAP = 'market_cap'
|
||||
ATTR_NAME = 'name'
|
||||
ATTR_PERCENT_CHANGE_24H = 'percent_change_24h'
|
||||
ATTR_PERCENT_CHANGE_7D = 'percent_change_7d'
|
||||
ATTR_PERCENT_CHANGE_1H = 'percent_change_1h'
|
||||
@ -130,6 +129,4 @@ class CoinMarketCapData(object):
|
||||
"""Get the latest data from blockchain.info."""
|
||||
from coinmarketcap import Market
|
||||
self.ticker = Market().ticker(
|
||||
self.currency,
|
||||
limit=1,
|
||||
convert=self.display_currency)
|
||||
self.currency, limit=1, convert=self.display_currency)
|
||||
|
@ -4,19 +4,21 @@ Support for ComEd Hourly Pricing data.
|
||||
For more details about this platform, please refer to the documentation at
|
||||
https://home-assistant.io/components/sensor.comed_hourly_pricing/
|
||||
"""
|
||||
from datetime import timedelta
|
||||
import logging
|
||||
import asyncio
|
||||
from datetime import timedelta
|
||||
import json
|
||||
import async_timeout
|
||||
import logging
|
||||
|
||||
import aiohttp
|
||||
import async_timeout
|
||||
import voluptuous as vol
|
||||
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.components.sensor import PLATFORM_SCHEMA
|
||||
from homeassistant.const import ATTR_ATTRIBUTION, STATE_UNKNOWN
|
||||
from homeassistant.helpers.entity import Entity
|
||||
from homeassistant.const import (
|
||||
ATTR_ATTRIBUTION, CONF_NAME, CONF_OFFSET, STATE_UNKNOWN)
|
||||
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.helpers.entity import Entity
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
_RESOURCE = 'https://hourlypricing.comed.com/api'
|
||||
@ -27,8 +29,6 @@ CONF_ATTRIBUTION = "Data provided by ComEd Hourly Pricing service"
|
||||
CONF_CURRENT_HOUR_AVERAGE = 'current_hour_average'
|
||||
CONF_FIVE_MINUTE = 'five_minute'
|
||||
CONF_MONITORED_FEEDS = 'monitored_feeds'
|
||||
CONF_NAME = 'name'
|
||||
CONF_OFFSET = 'offset'
|
||||
CONF_SENSOR_TYPE = 'type'
|
||||
|
||||
SENSOR_TYPES = {
|
||||
@ -40,12 +40,12 @@ TYPES_SCHEMA = vol.In(SENSOR_TYPES)
|
||||
|
||||
SENSORS_SCHEMA = vol.Schema({
|
||||
vol.Required(CONF_SENSOR_TYPE): TYPES_SCHEMA,
|
||||
vol.Optional(CONF_NAME): cv.string,
|
||||
vol.Optional(CONF_OFFSET, default=0.0): vol.Coerce(float),
|
||||
vol.Optional(CONF_NAME): cv.string
|
||||
})
|
||||
|
||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||
vol.Required(CONF_MONITORED_FEEDS): [SENSORS_SCHEMA]
|
||||
vol.Required(CONF_MONITORED_FEEDS): [SENSORS_SCHEMA],
|
||||
})
|
||||
|
||||
|
||||
|
@ -10,15 +10,14 @@ import os
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.components.sensor import PLATFORM_SCHEMA
|
||||
from homeassistant.const import CONF_NAME, DEVICE_CLASS_BATTERY
|
||||
from homeassistant.helpers.entity import Entity
|
||||
from homeassistant.const import ATTR_NAME, CONF_NAME, DEVICE_CLASS_BATTERY
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.helpers.entity import Entity
|
||||
|
||||
REQUIREMENTS = ['batinfo==0.4.2']
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
ATTR_NAME = 'name'
|
||||
ATTR_PATH = 'path'
|
||||
ATTR_ALARM = 'alarm'
|
||||
ATTR_CAPACITY = 'capacity'
|
||||
|
@ -12,7 +12,7 @@ import voluptuous as vol
|
||||
from homeassistant.components.sensor import PLATFORM_SCHEMA
|
||||
from homeassistant.helpers.entity import Entity
|
||||
from homeassistant.const import (
|
||||
CONF_HOST, CONF_USERNAME, CONF_PASSWORD, CONF_PORT, CONF_SSL,
|
||||
CONF_HOST, CONF_USERNAME, CONF_PASSWORD, CONF_PORT, CONF_SSL, ATTR_NAME,
|
||||
CONF_VERIFY_SSL, CONF_TIMEOUT, CONF_MONITORED_CONDITIONS, TEMP_CELSIUS)
|
||||
from homeassistant.util import Throttle
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
@ -29,7 +29,6 @@ ATTR_MASK = 'Mask'
|
||||
ATTR_MAX_SPEED = 'Max Speed'
|
||||
ATTR_MEMORY_SIZE = 'Memory Size'
|
||||
ATTR_MODEL = 'Model'
|
||||
ATTR_NAME = 'Name'
|
||||
ATTR_PACKETS_TX = 'Packets (TX)'
|
||||
ATTR_PACKETS_RX = 'Packets (RX)'
|
||||
ATTR_PACKETS_ERR = 'Packets (Err)'
|
||||
|
@ -10,10 +10,10 @@ import voluptuous as vol
|
||||
|
||||
import homeassistant.components.rfxtrx as rfxtrx
|
||||
from homeassistant.components.rfxtrx import (
|
||||
ATTR_DATA_TYPE, ATTR_FIRE_EVENT, ATTR_NAME, CONF_AUTOMATIC_ADD,
|
||||
CONF_DATA_TYPE, CONF_DEVICES, CONF_FIRE_EVENT, DATA_TYPES)
|
||||
ATTR_DATA_TYPE, ATTR_FIRE_EVENT, CONF_AUTOMATIC_ADD, CONF_DATA_TYPE,
|
||||
CONF_DEVICES, CONF_FIRE_EVENT, DATA_TYPES)
|
||||
from homeassistant.components.sensor import PLATFORM_SCHEMA
|
||||
from homeassistant.const import ATTR_ENTITY_ID, CONF_NAME
|
||||
from homeassistant.const import ATTR_ENTITY_ID, ATTR_NAME, CONF_NAME
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.helpers.entity import Entity
|
||||
from homeassistant.util import slugify
|
||||
|
@ -6,16 +6,14 @@ https://home-assistant.io/components/sensor.tado/
|
||||
"""
|
||||
import logging
|
||||
|
||||
from homeassistant.const import TEMP_CELSIUS
|
||||
from homeassistant.components.tado import DATA_TADO
|
||||
from homeassistant.const import ATTR_ID, ATTR_NAME, TEMP_CELSIUS
|
||||
from homeassistant.helpers.entity import Entity
|
||||
from homeassistant.components.tado import (DATA_TADO)
|
||||
from homeassistant.const import (ATTR_ID)
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
ATTR_DATA_ID = 'data_id'
|
||||
ATTR_DEVICE = 'device'
|
||||
ATTR_NAME = 'name'
|
||||
ATTR_ZONE = 'zone'
|
||||
|
||||
CLIMATE_SENSOR_TYPES = ['temperature', 'humidity', 'power',
|
||||
@ -39,14 +37,11 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
|
||||
if zone['type'] == 'HEATING':
|
||||
for variable in CLIMATE_SENSOR_TYPES:
|
||||
sensor_items.append(create_zone_sensor(
|
||||
tado, zone, zone['name'], zone['id'],
|
||||
variable))
|
||||
tado, zone, zone['name'], zone['id'], variable))
|
||||
elif zone['type'] == 'HOT_WATER':
|
||||
for variable in HOT_WATER_SENSOR_TYPES:
|
||||
sensor_items.append(create_zone_sensor(
|
||||
tado, zone, zone['name'], zone['id'],
|
||||
variable
|
||||
))
|
||||
tado, zone, zone['name'], zone['id'], variable))
|
||||
|
||||
me_data = tado.get_me()
|
||||
sensor_items.append(create_device_sensor(
|
||||
|
@ -13,24 +13,27 @@ import voluptuous as vol
|
||||
|
||||
from homeassistant.components.sensor import PLATFORM_SCHEMA
|
||||
from homeassistant.const import (
|
||||
CONF_API_KEY, CONF_NAME, ATTR_ATTRIBUTION, CONF_ID
|
||||
)
|
||||
CONF_API_KEY, CONF_NAME, ATTR_ATTRIBUTION, CONF_ID, ATTR_NAME)
|
||||
from homeassistant.helpers.entity import Entity
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
ATTR_ACCESS_CODE = 'AccessCode'
|
||||
ATTR_AVG_TIME = 'AverageTime'
|
||||
ATTR_CURRENT_TIME = 'CurrentTime'
|
||||
ATTR_DESCRIPTION = 'Description'
|
||||
ATTR_TIME_UPDATED = 'TimeUpdated'
|
||||
ATTR_TRAVEL_TIME_ID = 'TravelTimeID'
|
||||
|
||||
CONF_ATTRIBUTION = "Data provided by WSDOT"
|
||||
|
||||
CONF_TRAVEL_TIMES = 'travel_time'
|
||||
|
||||
# API codes for travel time details
|
||||
ATTR_ACCESS_CODE = 'AccessCode'
|
||||
ATTR_TRAVEL_TIME_ID = 'TravelTimeID'
|
||||
ATTR_CURRENT_TIME = 'CurrentTime'
|
||||
ATTR_AVG_TIME = 'AverageTime'
|
||||
ATTR_NAME = 'Name'
|
||||
ATTR_TIME_UPDATED = 'TimeUpdated'
|
||||
ATTR_DESCRIPTION = 'Description'
|
||||
ATTRIBUTION = "Data provided by WSDOT"
|
||||
ICON = 'mdi:car'
|
||||
|
||||
RESOURCE = 'http://www.wsdot.wa.gov/Traffic/api/TravelTimes/' \
|
||||
'TravelTimesREST.svc/GetTravelTimeAsJson'
|
||||
|
||||
SCAN_INTERVAL = timedelta(minutes=3)
|
||||
|
||||
@ -43,16 +46,14 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||
|
||||
|
||||
def setup_platform(hass, config, add_devices, discovery_info=None):
|
||||
"""Get the WSDOT sensor."""
|
||||
"""Set up the WSDOT sensor."""
|
||||
sensors = []
|
||||
for travel_time in config.get(CONF_TRAVEL_TIMES):
|
||||
name = (travel_time.get(CONF_NAME) or
|
||||
travel_time.get(CONF_ID))
|
||||
name = (travel_time.get(CONF_NAME) or travel_time.get(CONF_ID))
|
||||
sensors.append(
|
||||
WashingtonStateTravelTimeSensor(
|
||||
name,
|
||||
config.get(CONF_API_KEY),
|
||||
travel_time.get(CONF_ID)))
|
||||
name, config.get(CONF_API_KEY), travel_time.get(CONF_ID)))
|
||||
|
||||
add_devices(sensors, True)
|
||||
|
||||
|
||||
@ -65,8 +66,6 @@ class WashingtonStateTransportSensor(Entity):
|
||||
can read them and make them available.
|
||||
"""
|
||||
|
||||
ICON = 'mdi:car'
|
||||
|
||||
def __init__(self, name, access_code):
|
||||
"""Initialize the sensor."""
|
||||
self._data = {}
|
||||
@ -87,16 +86,12 @@ class WashingtonStateTransportSensor(Entity):
|
||||
@property
|
||||
def icon(self):
|
||||
"""Icon to use in the frontend, if any."""
|
||||
return self.ICON
|
||||
return ICON
|
||||
|
||||
|
||||
class WashingtonStateTravelTimeSensor(WashingtonStateTransportSensor):
|
||||
"""Travel time sensor from WSDOT."""
|
||||
|
||||
RESOURCE = ('http://www.wsdot.wa.gov/Traffic/api/TravelTimes/'
|
||||
'TravelTimesREST.svc/GetTravelTimeAsJson')
|
||||
ICON = 'mdi:car'
|
||||
|
||||
def __init__(self, name, access_code, travel_time_id):
|
||||
"""Construct a travel time sensor."""
|
||||
self._travel_time_id = travel_time_id
|
||||
@ -104,10 +99,12 @@ class WashingtonStateTravelTimeSensor(WashingtonStateTransportSensor):
|
||||
|
||||
def update(self):
|
||||
"""Get the latest data from WSDOT."""
|
||||
params = {ATTR_ACCESS_CODE: self._access_code,
|
||||
ATTR_TRAVEL_TIME_ID: self._travel_time_id}
|
||||
params = {
|
||||
ATTR_ACCESS_CODE: self._access_code,
|
||||
ATTR_TRAVEL_TIME_ID: self._travel_time_id,
|
||||
}
|
||||
|
||||
response = requests.get(self.RESOURCE, params, timeout=10)
|
||||
response = requests.get(RESOURCE, params, timeout=10)
|
||||
if response.status_code != 200:
|
||||
_LOGGER.warning("Invalid response from WSDOT API")
|
||||
else:
|
||||
@ -118,7 +115,7 @@ class WashingtonStateTravelTimeSensor(WashingtonStateTransportSensor):
|
||||
def device_state_attributes(self):
|
||||
"""Return other details about the sensor state."""
|
||||
if self._data is not None:
|
||||
attrs = {ATTR_ATTRIBUTION: ATTRIBUTION}
|
||||
attrs = {ATTR_ATTRIBUTION: CONF_ATTRIBUTION}
|
||||
for key in [ATTR_AVG_TIME, ATTR_NAME, ATTR_DESCRIPTION,
|
||||
ATTR_TRAVEL_TIME_ID]:
|
||||
attrs[key] = self._data.get(key)
|
||||
@ -129,7 +126,7 @@ class WashingtonStateTravelTimeSensor(WashingtonStateTransportSensor):
|
||||
@property
|
||||
def unit_of_measurement(self):
|
||||
"""Return the unit this state is expressed in."""
|
||||
return "min"
|
||||
return 'min'
|
||||
|
||||
|
||||
def _parse_wsdot_timestamp(timestamp):
|
||||
@ -139,5 +136,5 @@ def _parse_wsdot_timestamp(timestamp):
|
||||
# ex: Date(1485040200000-0800)
|
||||
milliseconds, tzone = re.search(
|
||||
r'Date\((\d+)([+-]\d\d)\d\d\)', timestamp).groups()
|
||||
return datetime.fromtimestamp(int(milliseconds) / 1000,
|
||||
tz=timezone(timedelta(hours=int(tzone))))
|
||||
return datetime.fromtimestamp(
|
||||
int(milliseconds) / 1000, tz=timezone(timedelta(hours=int(tzone))))
|
||||
|
@ -10,11 +10,11 @@ import voluptuous as vol
|
||||
|
||||
import homeassistant.components.rfxtrx as rfxtrx
|
||||
from homeassistant.components.switch import SwitchDevice, PLATFORM_SCHEMA
|
||||
from homeassistant.const import CONF_NAME
|
||||
from homeassistant.components.rfxtrx import (
|
||||
CONF_AUTOMATIC_ADD, CONF_FIRE_EVENT, DEFAULT_SIGNAL_REPETITIONS,
|
||||
CONF_SIGNAL_REPETITIONS, CONF_DEVICES)
|
||||
from homeassistant.helpers import config_validation as cv
|
||||
from homeassistant.const import CONF_NAME
|
||||
|
||||
DEPENDENCIES = ['rfxtrx']
|
||||
|
||||
@ -24,7 +24,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||
vol.Optional(CONF_DEVICES, default={}): {
|
||||
cv.string: vol.Schema({
|
||||
vol.Required(CONF_NAME): cv.string,
|
||||
vol.Optional(CONF_FIRE_EVENT, default=False): cv.boolean
|
||||
vol.Optional(CONF_FIRE_EVENT, default=False): cv.boolean,
|
||||
})
|
||||
},
|
||||
vol.Optional(CONF_AUTOMATIC_ADD, default=False): cv.boolean,
|
||||
|
@ -10,7 +10,7 @@ import voluptuous as vol
|
||||
|
||||
import homeassistant.components.rpi_pfio as rpi_pfio
|
||||
from homeassistant.components.switch import PLATFORM_SCHEMA
|
||||
from homeassistant.const import DEVICE_DEFAULT_NAME
|
||||
from homeassistant.const import ATTR_NAME, DEVICE_DEFAULT_NAME
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.helpers.entity import ToggleEntity
|
||||
|
||||
@ -19,7 +19,6 @@ _LOGGER = logging.getLogger(__name__)
|
||||
DEPENDENCIES = ['rpi_pfio']
|
||||
|
||||
ATTR_INVERT_LOGIC = 'invert_logic'
|
||||
ATTR_NAME = 'name'
|
||||
|
||||
CONF_PORTS = 'ports'
|
||||
|
||||
|
@ -15,7 +15,7 @@ import voluptuous as vol
|
||||
|
||||
from homeassistant.components.http import HomeAssistantView
|
||||
from homeassistant.const import (
|
||||
ATTR_BATTERY_LEVEL, ATTR_ENTITY_ID, CONF_EMAIL, CONF_PASSWORD,
|
||||
ATTR_BATTERY_LEVEL, ATTR_ENTITY_ID, ATTR_NAME, CONF_EMAIL, CONF_PASSWORD,
|
||||
EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP, STATE_OFF, STATE_ON,
|
||||
__version__)
|
||||
from homeassistant.core import callback
|
||||
@ -45,7 +45,6 @@ ATTR_ACCESS_TOKEN = 'access_token'
|
||||
ATTR_REFRESH_TOKEN = 'refresh_token'
|
||||
ATTR_CLIENT_ID = 'client_id'
|
||||
ATTR_CLIENT_SECRET = 'client_secret'
|
||||
ATTR_NAME = 'name'
|
||||
ATTR_PAIRING_MODE = 'pairing_mode'
|
||||
ATTR_KIDDE_RADIO_CODE = 'kidde_radio_code'
|
||||
ATTR_HUB_NAME = 'hub_name'
|
||||
@ -53,7 +52,8 @@ ATTR_HUB_NAME = 'hub_name'
|
||||
WINK_AUTH_CALLBACK_PATH = '/auth/wink/callback'
|
||||
WINK_AUTH_START = '/auth/wink'
|
||||
WINK_CONFIG_FILE = '.wink.conf'
|
||||
USER_AGENT = "Manufacturer/Home-Assistant%s python/3 Wink/3" % __version__
|
||||
USER_AGENT = "Manufacturer/Home-Assistant{} python/3 Wink/3".format(
|
||||
__version__)
|
||||
|
||||
DEFAULT_CONFIG = {
|
||||
'client_id': 'CLIENT_ID_HERE',
|
||||
|
@ -221,6 +221,9 @@ ATTR_SERVICE_DATA = 'service_data'
|
||||
# IDs
|
||||
ATTR_ID = 'id'
|
||||
|
||||
# Name
|
||||
ATTR_NAME = 'name'
|
||||
|
||||
# Data for a SERVICE_EXECUTED event
|
||||
ATTR_SERVICE_CALL_ID = 'service_call_id'
|
||||
|
||||
|
@ -1,17 +1,16 @@
|
||||
"""The tests for the WSDOT platform."""
|
||||
from datetime import datetime, timedelta, timezone
|
||||
import re
|
||||
import unittest
|
||||
from datetime import timedelta, datetime, timezone
|
||||
|
||||
import requests_mock
|
||||
from tests.common import get_test_home_assistant, load_fixture
|
||||
|
||||
from homeassistant.components.sensor import wsdot
|
||||
from homeassistant.components.sensor.wsdot import (
|
||||
WashingtonStateTravelTimeSensor, ATTR_DESCRIPTION,
|
||||
ATTR_TIME_UPDATED, CONF_API_KEY, CONF_NAME,
|
||||
CONF_ID, CONF_TRAVEL_TIMES, SCAN_INTERVAL)
|
||||
ATTR_DESCRIPTION, ATTR_TIME_UPDATED, CONF_API_KEY, CONF_ID, CONF_NAME,
|
||||
CONF_TRAVEL_TIMES, RESOURCE, SCAN_INTERVAL)
|
||||
from homeassistant.setup import setup_component
|
||||
from tests.common import load_fixture, get_test_home_assistant
|
||||
|
||||
|
||||
class TestWSDOT(unittest.TestCase):
|
||||
@ -50,7 +49,7 @@ class TestWSDOT(unittest.TestCase):
|
||||
@requests_mock.Mocker()
|
||||
def test_setup(self, mock_req):
|
||||
"""Test for operational WSDOT sensor with proper attributes."""
|
||||
uri = re.compile(WashingtonStateTravelTimeSensor.RESOURCE + '*')
|
||||
uri = re.compile(RESOURCE + '*')
|
||||
mock_req.get(uri, text=load_fixture('wsdot.json'))
|
||||
wsdot.setup_platform(self.hass, self.config, self.add_entities)
|
||||
self.assertEqual(len(self.entities), 1)
|
||||
|
Loading…
x
Reference in New Issue
Block a user