core/homeassistant/components/nissan_leaf/device_tracker.py

45 lines
1.5 KiB
Python

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