diff --git a/homeassistant/components/waze_travel_time/sensor.py b/homeassistant/components/waze_travel_time/sensor.py index 984a5800898dd4..94da766e9e71ab 100644 --- a/homeassistant/components/waze_travel_time/sensor.py +++ b/homeassistant/components/waze_travel_time/sensor.py @@ -1,17 +1,18 @@ """Support for Waze travel time sensor.""" from datetime import timedelta import logging +import re import voluptuous as vol from homeassistant.components.sensor import PLATFORM_SCHEMA from homeassistant.const import ( ATTR_ATTRIBUTION, CONF_NAME, CONF_REGION, EVENT_HOMEASSISTANT_START, - ATTR_LATITUDE, ATTR_LONGITUDE) + ATTR_LATITUDE, ATTR_LONGITUDE, CONF_UNIT_SYSTEM_METRIC, + CONF_UNIT_SYSTEM_IMPERIAL) import homeassistant.helpers.config_validation as cv from homeassistant.helpers import location from homeassistant.helpers.entity import Entity -from homeassistant.util import Throttle REQUIREMENTS = ['WazeRouteCalculator==0.9'] @@ -28,18 +29,21 @@ CONF_INCL_FILTER = 'incl_filter' CONF_EXCL_FILTER = 'excl_filter' CONF_REALTIME = 'realtime' +CONF_UNITS = 'units' +CONF_VEHICLE_TYPE = 'vehicle_type' DEFAULT_NAME = 'Waze Travel Time' DEFAULT_REALTIME = True +DEFAULT_VEHICLE_TYPE = 'car' ICON = 'mdi:car' +UNITS = [CONF_UNIT_SYSTEM_METRIC, CONF_UNIT_SYSTEM_IMPERIAL] + REGIONS = ['US', 'NA', 'EU', 'IL', 'AU'] +VEHICLE_TYPES = ['car', 'taxi', 'motorcycle'] SCAN_INTERVAL = timedelta(minutes=5) -MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=5) - -TRACKABLE_DOMAINS = ['device_tracker', 'sensor', 'zone', 'person'] PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_ORIGIN): cv.string, @@ -49,6 +53,9 @@ vol.Optional(CONF_INCL_FILTER): cv.string, vol.Optional(CONF_EXCL_FILTER): cv.string, vol.Optional(CONF_REALTIME, default=DEFAULT_REALTIME): cv.boolean, + vol.Optional(CONF_VEHICLE_TYPE, + default=DEFAULT_VEHICLE_TYPE): vol.In(VEHICLE_TYPES), + vol.Optional(CONF_UNITS): vol.In(UNITS) }) @@ -61,9 +68,14 @@ def setup_platform(hass, config, add_entities, discovery_info=None): incl_filter = config.get(CONF_INCL_FILTER) excl_filter = config.get(CONF_EXCL_FILTER) realtime = config.get(CONF_REALTIME) + vehicle_type = config.get(CONF_VEHICLE_TYPE) + units = config.get(CONF_UNITS, hass.config.units.name) + + data = WazeTravelTimeData(None, None, region, incl_filter, + excl_filter, realtime, units, + vehicle_type) - sensor = WazeTravelTime(name, origin, destination, region, - incl_filter, excl_filter, realtime) + sensor = WazeTravelTime(name, origin, destination, data) add_entities([sensor]) @@ -81,27 +93,28 @@ def _get_location_from_attributes(state): class WazeTravelTime(Entity): """Representation of a Waze travel time sensor.""" - def __init__(self, name, origin, destination, region, - incl_filter, excl_filter, realtime): + def __init__(self, name, origin, destination, waze_data): """Initialize the Waze travel time sensor.""" self._name = name - self._region = region - self._incl_filter = incl_filter - self._excl_filter = excl_filter - self._realtime = realtime + self._waze_data = waze_data self._state = None self._origin_entity_id = None self._destination_entity_id = None - if origin.split('.', 1)[0] in TRACKABLE_DOMAINS: + # Attempt to find entity_id without finding address with period. + pattern = "(?