Use ATTR_NAME from const.py (#14450)

This commit is contained in:
Fabian Affolter 2018-05-14 13:05:52 +02:00 committed by Pascal Vizeli
parent fb501282cc
commit 954e4796b8
26 changed files with 163 additions and 194 deletions

View File

@ -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),

View File

@ -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'

View File

@ -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'

View File

@ -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({})

View File

@ -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'

View File

@ -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)

View File

@ -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']

View File

@ -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']

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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):

View File

@ -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'

View File

@ -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):

View File

@ -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)

View File

@ -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],
})

View File

@ -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'

View File

@ -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)'

View File

@ -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

View File

@ -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(

View File

@ -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))))

View File

@ -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,

View File

@ -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'

View File

@ -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',

View File

@ -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'

View File

@ -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)