From a866d515f7b4b5aef7b21d348a1dcbdff785272c Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 20 Sep 2015 20:09:53 -0700 Subject: [PATCH] Make owntracks more robust --- .../components/device_tracker/owntracks.py | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/device_tracker/owntracks.py b/homeassistant/components/device_tracker/owntracks.py index e2591ffcc26..efd655305df 100644 --- a/homeassistant/components/device_tracker/owntracks.py +++ b/homeassistant/components/device_tracker/owntracks.py @@ -8,6 +8,7 @@ device_tracker: platform: owntracks """ import json +import logging import homeassistant.components.mqtt as mqtt @@ -24,18 +25,30 @@ def setup_scanner(hass, config, see): # Docs on available data: # http://owntracks.org/booklet/tech/json/#_typelocation - - parts = topic.split('/') + print("BIER", payload) try: data = json.loads(payload) except ValueError: # If invalid JSON + logging.getLogger(__name__).error( + 'Unable to parse payload as JSON: %s', payload) return + if data.get('_type') != 'location': return - dev_id = '{}_{}'.format(parts[1], parts[2]) - see(dev_id=dev_id, host_name=parts[1], gps=(data['lat'], data['lon']), - gps_accuracy=data['acc'], battery=data['batt']) + + parts = topic.split('/') + kwargs = { + 'dev_id': '{}_{}'.format(parts[1], parts[2]), + 'host_name': parts[1], + 'gps': (data['lat'], data['lon']), + } + if 'acc' in data: + kwargs['gps_accuracy'] = data['acc'] + if 'batt' in data: + kwargs['battery'] = data['batt'] + + see(**kwargs) mqtt.subscribe(hass, LOCATION_TOPIC, owntracks_location_update, 1)