Files
home-assistant-core/homeassistant/components/nissan_leaf/device_tracker.py
T
2019-07-31 12:25:30 -07:00

47 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