session id belongs to server, client id belongs to client
This commit is contained in:
parent
f8a37d5b65
commit
644974a51c
53
main.py
53
main.py
@ -19,9 +19,8 @@ from dateutil.parser import isoparse
|
||||
from geopy.distance import geodesic
|
||||
from os import path
|
||||
import pickle
|
||||
import hashlib
|
||||
|
||||
#FLOCK_SERVER="http://192.168.0.8:5000"
|
||||
#FLOCK_SERVER="http://awelo.ath.cx:5000"
|
||||
|
||||
class IconButton(ButtonBehavior, Image):
|
||||
pass
|
||||
@ -74,7 +73,7 @@ class FlockompassApp(App):
|
||||
'bgcolor': "#336645"})
|
||||
|
||||
def read_settings(self):
|
||||
app_folder = os.path.dirname(os.path.abspath(__file__))
|
||||
app_folder = path.dirname(path.abspath(__file__))
|
||||
pickle_path = path.join(app_folder, 'settings.pickle')
|
||||
|
||||
if path.isfile(pickle_path):
|
||||
@ -99,7 +98,7 @@ class FlockompassApp(App):
|
||||
|
||||
|
||||
def save_settings(self):
|
||||
app_folder = os.path.dirname(os.path.abspath(__file__))
|
||||
app_folder = path.dirname(path.abspath(__file__))
|
||||
pickle_path = path.join(app_folder, 'settings.pickle')
|
||||
|
||||
settings = {k: self.session_data[k]
|
||||
@ -217,12 +216,11 @@ class FlockompassApp(App):
|
||||
|
||||
self.dashboard_flock = "%s @ %s\nvel: %0.1f km/h" % (self.session_data['flock_size'],
|
||||
flock_distance,
|
||||
self.session_data['flock_avg_speed'] * 1.609344)
|
||||
self.session_data['flock_avg_speed'] * km_per_mile)
|
||||
else:
|
||||
self.dashboard_flock = "no flocks"
|
||||
|
||||
|
||||
self.session_data.update({'speed': self.gps_data['speed'] * 1.609344,
|
||||
self.session_data.update({'speed': self.gps_data['speed'] * km_per_mile,
|
||||
'bearing': self.gps_data['bearing'],
|
||||
'lat': self.gps_data['lat'],
|
||||
'lon': self.gps_data['lon']})
|
||||
@ -318,34 +316,45 @@ class FlockompassApp(App):
|
||||
self.gps_start(1000, 0)
|
||||
|
||||
def flock_server_register(self):
|
||||
Logger.info("Unique ID: %s" % uniqueid.get_uid())
|
||||
try:
|
||||
register_url = "{server}/register/?dest_lon={dest_lon}&dest_lat={dest_lat}"
|
||||
|
||||
r = requests.get(register_url.format(server=self.session_data['settings_flock_server'],
|
||||
dest_lon=self.session_data['dest_lon'],
|
||||
dest_lat=self.session_data['dest_lat']),
|
||||
# flush session data
|
||||
self.session_data.pop('session_id', None)
|
||||
self.session_data.pop('client_id', None)
|
||||
self.session_data.pop('speed', None)
|
||||
self.session_data.pop('bearing', None)
|
||||
|
||||
Logger.info("Unique ID: %s" % uniqueid.get_uid())
|
||||
client_id = hashlib.sha256(b"%s/%s/%s" % (uniqueid.get_uid(),
|
||||
self.session_data['dest_lon'],
|
||||
self.session_data['dest_lat'],
|
||||
)).hexdigest()
|
||||
|
||||
try:
|
||||
register_url = "{server}/register/" % self.session_data['settings_flock_server']
|
||||
|
||||
r = requests.get(register_url,
|
||||
params={'dest_lon': self.session_data['dest_lon'],
|
||||
'dest_lat': self.session_data['dest_lat'],
|
||||
'client_id': client_id},
|
||||
timeout=0.5)
|
||||
# TODO: check for response code, only proceed if 200
|
||||
self.session_data['bike_id'] = r.json()['bike_id']
|
||||
Logger.info('registered! got bike_id: %s' % self.session_data['bike_id'])
|
||||
self.session_data['session_id'] = r.json()['session_id']
|
||||
self.session_data['client_id'] = client_id
|
||||
Logger.info('registered! got session_id: %s' % self.session_data['session_id'])
|
||||
self.flock_server_update()
|
||||
except requests.exceptions.Timeout:
|
||||
Logger.info('comm timeout while registering with flock server')
|
||||
except requests.exceptions.ConnectionError:
|
||||
Logger.info('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):
|
||||
Logger.info("Unique ID: %s" % uniqueid.get_uid())
|
||||
|
||||
try:
|
||||
update_url = "{server}/update/{bike_id}/?lat={lat}&lon={lon}&speed={speed}&bearing={bearing}"
|
||||
update_url = "{server}/update/{client_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'],
|
||||
client_id=self.session_data['client_id'],
|
||||
speed=self.session_data.get('speed', 0),
|
||||
bearing=self.session_data.get('bearing', 0),
|
||||
lat=self.session_data['lat'],
|
||||
@ -379,7 +388,7 @@ class FlockompassApp(App):
|
||||
|
||||
|
||||
def flock(self, dt):
|
||||
if ('bike_id' in self.session_data
|
||||
if ('session_id' in self.session_data
|
||||
and (self.session_data.get('last_update') + self.get_session_timeout()) > datetime.now()):
|
||||
self.flock_server_update()
|
||||
else:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user