Make owntracks more robust

This commit is contained in:
Paulus Schoutsen 2015-09-20 20:09:53 -07:00
parent 3af4f267b3
commit a866d515f7

View File

@ -8,6 +8,7 @@ device_tracker:
platform: owntracks platform: owntracks
""" """
import json import json
import logging
import homeassistant.components.mqtt as mqtt import homeassistant.components.mqtt as mqtt
@ -24,18 +25,30 @@ def setup_scanner(hass, config, see):
# Docs on available data: # Docs on available data:
# http://owntracks.org/booklet/tech/json/#_typelocation # http://owntracks.org/booklet/tech/json/#_typelocation
print("BIER", payload)
parts = topic.split('/')
try: try:
data = json.loads(payload) data = json.loads(payload)
except ValueError: except ValueError:
# If invalid JSON # If invalid JSON
logging.getLogger(__name__).error(
'Unable to parse payload as JSON: %s', payload)
return return
if data.get('_type') != 'location': if data.get('_type') != 'location':
return return
dev_id = '{}_{}'.format(parts[1], parts[2])
see(dev_id=dev_id, host_name=parts[1], gps=(data['lat'], data['lon']), parts = topic.split('/')
gps_accuracy=data['acc'], battery=data['batt']) 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) mqtt.subscribe(hass, LOCATION_TOPIC, owntracks_location_update, 1)