forked from platypush/platypush
Implemented tolerance threshold for lat/long/alt in GPS backend
This commit is contained in:
parent
228e656da8
commit
e79430cdc4
1 changed files with 8 additions and 1 deletions
|
@ -30,6 +30,8 @@ class GpsBackend(Backend):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
_fail_sleep_time = 5.0
|
_fail_sleep_time = 5.0
|
||||||
|
_lat_lng_tolerance = 1e-5
|
||||||
|
_alt_tolerance = 0.5
|
||||||
|
|
||||||
def __init__(self, gpsd_server='localhost', gpsd_port=2947, **kwargs):
|
def __init__(self, gpsd_server='localhost', gpsd_port=2947, **kwargs):
|
||||||
"""
|
"""
|
||||||
|
@ -82,14 +84,19 @@ class GpsBackend(Backend):
|
||||||
def run(self):
|
def run(self):
|
||||||
super().run()
|
super().run()
|
||||||
self.logger.info('Initialized GPS backend on {}:{}'.format(self.gpsd_server, self.gpsd_port))
|
self.logger.info('Initialized GPS backend on {}:{}'.format(self.gpsd_server, self.gpsd_port))
|
||||||
|
last_event = None
|
||||||
|
|
||||||
while not self.should_stop():
|
while not self.should_stop():
|
||||||
try:
|
try:
|
||||||
session = self._get_session()
|
session = self._get_session()
|
||||||
report = session.next()
|
report = session.next()
|
||||||
event = self._gps_report_to_event(report)
|
event = self._gps_report_to_event(report)
|
||||||
if event:
|
if event and (last_event is None or
|
||||||
|
abs((last_event.args.get('latitude') or 0) - (event.args.get('latitude') or 0)) >= self._lat_lng_tolerance or
|
||||||
|
abs((last_event.args.get('longitude') or 0) - (event.args.get('longitude') or 0)) >= self._lat_lng_tolerance or
|
||||||
|
abs((last_event.args.get('altitude') or 0) - (event.args.get('altitude') or 0)) >= self._alt_tolerance):
|
||||||
self.bus.post(event)
|
self.bus.post(event)
|
||||||
|
last_event = event
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
if isinstance(e, StopIteration):
|
if isinstance(e, StopIteration):
|
||||||
self.logger.warning('GPS service connection lost, check that gpsd is running')
|
self.logger.warning('GPS service connection lost, check that gpsd is running')
|
||||||
|
|
Loading…
Reference in a new issue