From 9cf9be88507ad9c975f2d2ca5e12ce48328728ba Mon Sep 17 00:00:00 2001 From: GoNzCiD Date: Fri, 19 Apr 2019 18:42:27 +0200 Subject: [PATCH] Add accuracy and status for Traccar (#23180) * Fix read gps position accuracy & read device status * Fix: W291 trailing whitespace & E501 line too long (80 > 79 characters) * Upgrade pytraccar dependency to 0.7.0 * met snake case --- .../components/traccar/device_tracker.py | 50 +++++++++++-------- .../components/traccar/manifest.json | 4 +- requirements_all.txt | 2 +- 3 files changed, 33 insertions(+), 23 deletions(-) diff --git a/homeassistant/components/traccar/device_tracker.py b/homeassistant/components/traccar/device_tracker.py index 1600227bfe2..39d1c2dd370 100644 --- a/homeassistant/components/traccar/device_tracker.py +++ b/homeassistant/components/traccar/device_tracker.py @@ -25,6 +25,7 @@ ATTR_MOTION = 'motion' ATTR_SPEED = 'speed' ATTR_TRACKER = 'tracker' ATTR_TRACCAR_ID = 'traccar_id' +ATTR_STATUS = 'status' EVENT_DEVICE_MOVING = 'device_moving' EVENT_COMMAND_RESULT = 'command_result' @@ -131,30 +132,39 @@ class TraccarScanner: async def import_device_data(self): """Import device data from Traccar.""" - for devicename in self._api.device_info: - device = self._api.device_info[devicename] + for device_unique_id in self._api.device_info: + device_info = self._api.device_info[device_unique_id] + device = None attr = {} attr[ATTR_TRACKER] = 'traccar' - if device.get('address') is not None: - attr[ATTR_ADDRESS] = device['address'] - 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'] - if device.get('traccar_id') is not None: - attr[ATTR_TRACCAR_ID] = device['traccar_id'] + if device_info.get('address') is not None: + attr[ATTR_ADDRESS] = device_info['address'] + if device_info.get('geofence') is not None: + attr[ATTR_GEOFENCE] = device_info['geofence'] + if device_info.get('category') is not None: + attr[ATTR_CATEGORY] = device_info['category'] + if device_info.get('speed') is not None: + attr[ATTR_SPEED] = device_info['speed'] + if device_info.get('battery') is not None: + attr[ATTR_BATTERY_LEVEL] = device_info['battery'] + if device_info.get('motion') is not None: + attr[ATTR_MOTION] = device_info['motion'] + if device_info.get('traccar_id') is not None: + attr[ATTR_TRACCAR_ID] = device_info['traccar_id'] + for dev in self._api.devices: + if dev['id'] == device_info['traccar_id']: + device = dev + break + if device is not None and device.get('status') is not None: + attr[ATTR_STATUS] = device['status'] for custom_attr in self._custom_attributes: - if device.get(custom_attr) is not None: - attr[custom_attr] = device[custom_attr] + if device_info.get(custom_attr) is not None: + attr[custom_attr] = device_info[custom_attr] await self._async_see( - dev_id=slugify(device['device_id']), - gps=(device.get('latitude'), device.get('longitude')), + dev_id=slugify(device_info['device_id']), + gps=(device_info.get('latitude'), + device_info.get('longitude')), + gps_accuracy=(device_info.get('accuracy')), attributes=attr) async def import_events(self): diff --git a/homeassistant/components/traccar/manifest.json b/homeassistant/components/traccar/manifest.json index 57bd1383363..5c859fefb71 100644 --- a/homeassistant/components/traccar/manifest.json +++ b/homeassistant/components/traccar/manifest.json @@ -3,11 +3,11 @@ "name": "Traccar", "documentation": "https://www.home-assistant.io/components/traccar", "requirements": [ - "pytraccar==0.5.0", + "pytraccar==0.7.0", "stringcase==1.2.0" ], "dependencies": [], "codeowners": [ "@ludeeus" ] -} +} \ No newline at end of file diff --git a/requirements_all.txt b/requirements_all.txt index 57f8d813af1..c1e381e760b 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1429,7 +1429,7 @@ pytile==2.0.6 pytouchline==0.7 # homeassistant.components.traccar -pytraccar==0.5.0 +pytraccar==0.7.0 # homeassistant.components.trackr pytrackr==0.0.5