timeout lapse for bike_id

This commit is contained in:
rgarcia-herrera 2021-11-01 14:46:31 -06:00
parent 164c85d0f7
commit fb68adf964

44
main.py
View File

@ -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()