"""Support for tracking a Nissan Leaf.""" import logging from homeassistant.helpers.dispatcher import dispatcher_connect from homeassistant.util import slugify from . import DATA_LEAF, DATA_LOCATION, SIGNAL_UPDATE_LEAF _LOGGER = logging.getLogger(__name__) ICON_CAR = "mdi:car" def setup_scanner(hass, config, see, discovery_info=None): """Set up the Nissan Leaf tracker.""" if discovery_info is None: return False def see_vehicle(): """Handle the reporting of the vehicle position.""" for vin, datastore in hass.data[DATA_LEAF].items(): host_name = datastore.leaf.nickname dev_id = 'nissan_leaf_{}'.format(slugify(host_name)) if not datastore.data[DATA_LOCATION]: _LOGGER.debug("No position found for vehicle %s", vin) return _LOGGER.debug("Updating device_tracker for %s with position %s", datastore.leaf.nickname, datastore.data[DATA_LOCATION].__dict__) attrs = { 'updated_on': datastore.last_location_response, } see(dev_id=dev_id, host_name=host_name, gps=( datastore.data[DATA_LOCATION].latitude, datastore.data[DATA_LOCATION].longitude ), attributes=attrs, icon=ICON_CAR) dispatcher_connect(hass, SIGNAL_UPDATE_LEAF, see_vehicle) return True