This commit is contained in:
rgarcia-herrera 2022-02-16 13:46:01 -06:00
parent bc11d35338
commit f8a37d5b65

18
main.py
View File

@ -1,4 +1,4 @@
from plyer import gps from plyer import gps, uniqueid
from kivy.app import App from kivy.app import App
from kivy.clock import Clock from kivy.clock import Clock
from kivy.core.window import Window from kivy.core.window import Window
@ -16,9 +16,7 @@ from math import atan2, sin, cos, degrees, floor
import requests import requests
from datetime import timedelta, datetime from datetime import timedelta, datetime
from dateutil.parser import isoparse from dateutil.parser import isoparse
from geopy.distance import geodesic from geopy.distance import geodesic
from os import path from os import path
import pickle import pickle
@ -186,7 +184,7 @@ class FlockompassApp(App):
self.gps_data = kwargs self.gps_data = kwargs
if ('dest_lat' not in self.session_data and 'dest_lon' not in self.session_data): if ('dest_lat' not in self.session_data and 'dest_lon' not in self.session_data):
self.session_data['dest_lat'] = self.gps_data['lat'] self.session_data['dest_lat'] = self.gps_data['lat']
self.session_data['dest_lon'] = self.gps_data['lon'] self.session_data['dest_lon'] = self.gps_data['lon']
@ -270,7 +268,7 @@ class FlockompassApp(App):
lat2 = self.session_data.get('dest_lat', 0) lat2 = self.session_data.get('dest_lat', 0)
lon2 = self.session_data.get('dest_lon', 0) lon2 = self.session_data.get('dest_lon', 0)
dbearing = atan2(sin(lon2 - lon1) * cos(lat2), dbearing = atan2(sin(lon2 - lon1) * cos(lat2),
cos(lat1) * sin(lat2) cos(lat1) * sin(lat2)
- sin(lat1) * cos(lat2) * cos(lon2-lon1)) - sin(lat1) * cos(lat2) * cos(lon2-lon1))
@ -320,6 +318,7 @@ class FlockompassApp(App):
self.gps_start(1000, 0) self.gps_start(1000, 0)
def flock_server_register(self): def flock_server_register(self):
Logger.info("Unique ID: %s" % uniqueid.get_uid())
try: try:
register_url = "{server}/register/?dest_lon={dest_lon}&dest_lat={dest_lat}" register_url = "{server}/register/?dest_lon={dest_lon}&dest_lat={dest_lat}"
@ -327,6 +326,7 @@ 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)
# TODO: check for response code, only proceed if 200
self.session_data['bike_id'] = r.json()['bike_id'] self.session_data['bike_id'] = r.json()['bike_id']
Logger.info('registered! got bike_id: %s' % self.session_data['bike_id']) Logger.info('registered! got bike_id: %s' % self.session_data['bike_id'])
self.flock_server_update() self.flock_server_update()
@ -341,7 +341,7 @@ class FlockompassApp(App):
def flock_server_update(self): def flock_server_update(self):
Logger.info("Unique ID: %s" % uniqueid.get_uid())
try: try:
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'],
@ -352,7 +352,7 @@ class FlockompassApp(App):
lon=self.session_data['lon']), lon=self.session_data['lon']),
timeout=0.5) timeout=0.5)
resp = req.json() resp = req.json()
if resp: if resp:
self.session_data['last_update'] = isoparse(resp.pop('last_update')) self.session_data['last_update'] = isoparse(resp.pop('last_update'))
if 'flock_size' not in resp: if 'flock_size' not in resp:
@ -360,9 +360,9 @@ class FlockompassApp(App):
self.session_data.pop('flock_lat', None) self.session_data.pop('flock_lat', None)
self.session_data.pop('flock_lon', None) self.session_data.pop('flock_lon', None)
self.session_data.pop('flock_size', None) self.session_data.pop('flock_size', None)
pLogger.info(self.session_data) pLogger.info(self.session_data)
except requests.exceptions.Timeout: except requests.exceptions.Timeout:
Logger.info('comm timeout while updating flock server') Logger.info('comm timeout while updating flock server')