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 kivy.animation import Animation
|
||||||
from math import atan2, sin, cos, degrees, floor
|
from math import atan2, sin, cos, degrees, floor
|
||||||
import requests
|
import requests
|
||||||
|
from datetime import timedelta, datetime
|
||||||
|
|
||||||
from geopy.distance import geodesic
|
from geopy.distance import geodesic
|
||||||
|
|
||||||
@ -139,7 +140,8 @@ class FlockompassApp(App):
|
|||||||
self.session_data['dest_lon'] = self.ms.ids.centermark.lon
|
self.session_data['dest_lon'] = self.ms.ids.centermark.lon
|
||||||
self.ms.ids.mapview.center_on(self.session_data['dest_lat'],
|
self.ms.ids.mapview.center_on(self.session_data['dest_lat'],
|
||||||
self.session_data['dest_lon'])
|
self.session_data['dest_lon'])
|
||||||
|
self.flock_server_register()
|
||||||
|
|
||||||
def set_dark_theme(self, active):
|
def set_dark_theme(self, active):
|
||||||
if active:
|
if active:
|
||||||
self.theme = {'needle': "assets/needle_dark.png",
|
self.theme = {'needle': "assets/needle_dark.png",
|
||||||
@ -201,8 +203,9 @@ class FlockompassApp(App):
|
|||||||
else:
|
else:
|
||||||
dest_distance = "%0.1f km" % dest_distance
|
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.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:
|
if 'flock_lat' in self.session_data:
|
||||||
@ -323,15 +326,18 @@ class FlockompassApp(App):
|
|||||||
dest_lon=self.session_data['dest_lon'],
|
dest_lon=self.session_data['dest_lon'],
|
||||||
dest_lat=self.session_data['dest_lat']),
|
dest_lat=self.session_data['dest_lat']),
|
||||||
timeout=0.5)
|
timeout=0.5)
|
||||||
out = r.json()
|
self.session_data['bike_id'] = r.json()['bike_id']
|
||||||
self.session_data['bike_id'] = out['bike_id']
|
|
||||||
print('registered! got bike_id:', self.session_data['bike_id'])
|
print('registered! got bike_id:', self.session_data['bike_id'])
|
||||||
|
self.flock_server_update()
|
||||||
except requests.exceptions.Timeout:
|
except requests.exceptions.Timeout:
|
||||||
print('comm timeout while registering with flock server', self.session_data)
|
print('comm timeout while registering with flock server', self.session_data)
|
||||||
self.session_data.pop('bike_id', None)
|
|
||||||
except requests.exceptions.ConnectionError:
|
except requests.exceptions.ConnectionError:
|
||||||
print('unable to connect while registering with flock server')
|
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):
|
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}"
|
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'],
|
req = requests.get(update_url.format(server=self.session_data['settings_flock_server'],
|
||||||
bike_id=self.session_data['bike_id'],
|
bike_id=self.session_data['bike_id'],
|
||||||
speed=self.session_data['speed'],
|
speed=self.session_data.get('speed', 0),
|
||||||
bearing=self.session_data['bearing'],
|
bearing=self.session_data.get('bearing', 0),
|
||||||
lat=self.session_data['lat'],
|
lat=self.session_data['lat'],
|
||||||
lon=self.session_data['lon']),
|
lon=self.session_data['lon']),
|
||||||
timeout=0.5)
|
timeout=0.5)
|
||||||
resp = req.json()
|
resp = req.json()
|
||||||
print('server update ¡¡¡¡¡¡¡¡', req, resp)
|
|
||||||
self.session_data.update(resp)
|
self.session_data.update(resp)
|
||||||
|
self.session_data['last_update'] = datetime.now()
|
||||||
except requests.exceptions.Timeout:
|
except requests.exceptions.Timeout:
|
||||||
print('comm timeout while updating flock server, gonna have to re-register')
|
print('comm timeout while updating flock server')
|
||||||
self.session_data.pop('bike_id', None)
|
|
||||||
self.session_data.pop('speed', None)
|
|
||||||
self.session_data.pop('bearing', None)
|
|
||||||
|
|
||||||
|
|
||||||
|
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):
|
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()
|
self.flock_server_update()
|
||||||
else:
|
else:
|
||||||
self.flock_server_register()
|
self.flock_server_register()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user