Add traccar motion, speed and battery_level attributes (#19090)

* Added motion, speed and battery attributes.

* Use dict[key] when we know there is a value there.

Co-Authored-By: ludeeus <joasoe@gmail.com>

* Use dict[key] when we know there is a value there.

Co-Authored-By: ludeeus <joasoe@gmail.com>

* Use dict[key] when we know there is a value there.

Co-Authored-By: ludeeus <joasoe@gmail.com>

* Use dict[key] when we know there is a value there.

Co-Authored-By: ludeeus <joasoe@gmail.com>

* Use dict[key] when we know there is a value there.

Co-Authored-By: ludeeus <joasoe@gmail.com>

* Use dict[key] when we know there is a value there.

Co-Authored-By: ludeeus <joasoe@gmail.com>
This commit is contained in:
Joakim Sørensen 2018-12-16 20:09:45 +01:00 committed by Martin Hjelmare
parent b031ded671
commit 92c5249746
2 changed files with 21 additions and 11 deletions

View File

@ -12,20 +12,22 @@ import voluptuous as vol
from homeassistant.components.device_tracker import PLATFORM_SCHEMA from homeassistant.components.device_tracker import PLATFORM_SCHEMA
from homeassistant.const import ( from homeassistant.const import (
CONF_HOST, CONF_PORT, CONF_SSL, CONF_VERIFY_SSL, CONF_HOST, CONF_PORT, CONF_SSL, CONF_VERIFY_SSL,
CONF_PASSWORD, CONF_USERNAME) CONF_PASSWORD, CONF_USERNAME, ATTR_BATTERY_LEVEL)
import homeassistant.helpers.config_validation as cv import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.event import async_track_time_interval from homeassistant.helpers.event import async_track_time_interval
from homeassistant.util import slugify from homeassistant.util import slugify
REQUIREMENTS = ['pytraccar==0.1.2'] REQUIREMENTS = ['pytraccar==0.2.0']
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
ATTR_ADDRESS = 'address' ATTR_ADDRESS = 'address'
ATTR_CATEGORY = 'category' ATTR_CATEGORY = 'category'
ATTR_GEOFENCE = 'geofence' ATTR_GEOFENCE = 'geofence'
ATTR_MOTION = 'motion'
ATTR_SPEED = 'speed'
ATTR_TRACKER = 'tracker' ATTR_TRACKER = 'tracker'
DEFAULT_SCAN_INTERVAL = timedelta(seconds=30) DEFAULT_SCAN_INTERVAL = timedelta(seconds=30)
@ -78,13 +80,21 @@ class TraccarScanner:
await self._api.get_device_info() await self._api.get_device_info()
for devicename in self._api.device_info: for devicename in self._api.device_info:
device = self._api.device_info[devicename] device = self._api.device_info[devicename]
device_attributes = { attr = {}
ATTR_ADDRESS: device['address'], attr[ATTR_TRACKER] = 'traccar'
ATTR_GEOFENCE: device['geofence'], if device.get('address') is not None:
ATTR_CATEGORY: device['category'], attr[ATTR_ADDRESS] = device['address']
ATTR_TRACKER: 'traccar' if device.get('geofence') is not None:
} attr[ATTR_GEOFENCE] = device['geofence']
if device.get('category') is not None:
attr[ATTR_CATEGORY] = device['category']
if device.get('speed') is not None:
attr[ATTR_SPEED] = device['speed']
if device.get('battery') is not None:
attr[ATTR_BATTERY_LEVEL] = device['battery']
if device.get('motion') is not None:
attr[ATTR_MOTION] = device['motion']
await self._async_see( await self._async_see(
dev_id=slugify(device['device_id']), dev_id=slugify(device['device_id']),
gps=(device['latitude'], device['longitude']), gps=(device.get('latitude'), device.get('longitude')),
attributes=device_attributes) attributes=attr)

View File

@ -1313,7 +1313,7 @@ pytile==2.0.5
pytouchline==0.7 pytouchline==0.7
# homeassistant.components.device_tracker.traccar # homeassistant.components.device_tracker.traccar
pytraccar==0.1.2 pytraccar==0.2.0
# homeassistant.components.device_tracker.trackr # homeassistant.components.device_tracker.trackr
pytrackr==0.0.5 pytrackr==0.0.5