timeout lapse for bike_id
This commit is contained in:
parent
164c85d0f7
commit
fb68adf964
44
main.py
44
main.py
@ -13,6 +13,7 @@ from kivy.vector import Vector
|
||||
from kivy.animation import Animation
|
||||
from math import atan2, sin, cos, degrees, floor
|
||||
import requests
|
||||
from datetime import timedelta, datetime
|
||||
|
||||
from geopy.distance import geodesic
|
||||
|
||||
@ -139,7 +140,8 @@ class FlockompassApp(App):
|
||||
self.session_data['dest_lon'] = self.ms.ids.centermark.lon
|
||||
self.ms.ids.mapview.center_on(self.session_data['dest_lat'],
|
||||
self.session_data['dest_lon'])
|
||||
|
||||
self.flock_server_register()
|
||||
|
||||
def set_dark_theme(self, active):
|
||||
if active:
|
||||
self.theme = {'needle': "assets/needle_dark.png",
|
||||
@ -201,8 +203,9 @@ class FlockompassApp(App):
|
||||
else:
|
||||
dest_distance = "%0.1f km" % dest_distance
|
||||
|
||||
km_per_mile = 1.609344
|
||||
self.dest_distance = "Destino: %s\nVel: %0.1f km/h" % (dest_distance,
|
||||
self.gps_data['speed'] * 1.609344)
|
||||
self.gps_data['speed'] * km_per_mile)
|
||||
|
||||
|
||||
if 'flock_lat' in self.session_data:
|
||||
@ -323,15 +326,18 @@ class FlockompassApp(App):
|
||||
dest_lon=self.session_data['dest_lon'],
|
||||
dest_lat=self.session_data['dest_lat']),
|
||||
timeout=0.5)
|
||||
out = r.json()
|
||||
self.session_data['bike_id'] = out['bike_id']
|
||||
self.session_data['bike_id'] = r.json()['bike_id']
|
||||
print('registered! got bike_id:', self.session_data['bike_id'])
|
||||
self.flock_server_update()
|
||||
except requests.exceptions.Timeout:
|
||||
print('comm timeout while registering with flock server', self.session_data)
|
||||
self.session_data.pop('bike_id', None)
|
||||
except requests.exceptions.ConnectionError:
|
||||
print('unable to connect while registering with flock server')
|
||||
|
||||
finally:
|
||||
self.session_data.pop('bike_id', None)
|
||||
self.session_data.pop('speed', None)
|
||||
self.session_data.pop('bearing', None)
|
||||
|
||||
|
||||
def flock_server_update(self):
|
||||
|
||||
@ -339,23 +345,33 @@ class FlockompassApp(App):
|
||||
update_url = "{server}/update/{bike_id}/?lat={lat}&lon={lon}&speed={speed}&bearing={bearing}"
|
||||
req = requests.get(update_url.format(server=self.session_data['settings_flock_server'],
|
||||
bike_id=self.session_data['bike_id'],
|
||||
speed=self.session_data['speed'],
|
||||
bearing=self.session_data['bearing'],
|
||||
speed=self.session_data.get('speed', 0),
|
||||
bearing=self.session_data.get('bearing', 0),
|
||||
lat=self.session_data['lat'],
|
||||
lon=self.session_data['lon']),
|
||||
timeout=0.5)
|
||||
resp = req.json()
|
||||
print('server update ¡¡¡¡¡¡¡¡', req, resp)
|
||||
self.session_data.update(resp)
|
||||
self.session_data['last_update'] = datetime.now()
|
||||
except requests.exceptions.Timeout:
|
||||
print('comm timeout while updating flock server, gonna have to re-register')
|
||||
self.session_data.pop('bike_id', None)
|
||||
self.session_data.pop('speed', None)
|
||||
self.session_data.pop('bearing', None)
|
||||
print('comm timeout while updating flock server')
|
||||
|
||||
|
||||
def get_session_timeout(self):
|
||||
min_step = 100 # update at least every 100 meters
|
||||
speed = self.session_data.get('speed', None)
|
||||
if speed:
|
||||
seconds = min_step / speed
|
||||
else:
|
||||
seconds = 100
|
||||
|
||||
return session_timeout = timedelta(seconds=seconds)
|
||||
|
||||
|
||||
def flock(self, dt):
|
||||
if 'bike_id' in self.session_data:
|
||||
if ('bike_id' in self.session_data
|
||||
and
|
||||
(self.session_data.get('last_update') + self.get_sesion_timeout() < datetime.now())):
|
||||
self.flock_server_update()
|
||||
else:
|
||||
self.flock_server_register()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user