register and update to server, better compass updates

This commit is contained in:
rgarcia-herrera 2021-10-29 19:51:31 -05:00
parent 4ac945ebac
commit f7d0dbb0af
2 changed files with 50 additions and 29 deletions

View File

@ -27,7 +27,6 @@
background_color: 0, 0, 0, 0
background_color: rgba("#c0464b")
<RootScreen>:
MapScreen:
CompassScreen:
@ -54,13 +53,6 @@
id: centermark
anchor_x: 0.5
anchor_y: 0
TextInput:
pos_hint: {"x":0.05, "top":0.97}
size_hint: 0.9, None
height: "32sp"
font_size: '20sp'
hint_text: 'buscar destino'
multiline: False
IconButton:
pos_hint: {"x":.8, "top":0.95}
size_hint: 0.2, 0.2
@ -157,6 +149,16 @@
<SettingsScreen>:
GridLayout:
cols: 2
BackgroundLabel:
text: "Flock Server"
background_color: rgba(app.theme['bgcolor'])
color: rgba(app.theme['fgcolor'])
font_size: '14sp'
TextInput:
id: flock_server
font_size: '15sp'
text: 'http://flock.apps.lancis.ecologia.unam.mx'
multiline: False
BackgroundLabel:
text: "Dark theme"
background_color: rgba(app.theme['bgcolor'])
@ -193,9 +195,9 @@
id: slider_compass_update
background_color: rgba(app.theme['bgcolor'])
color: rgba(app.theme['fgcolor'])
min: 0.1
max: 0.9
step: 0.05
min: 0.80
max: 0.95
step: 0.01
orientation: 'horizontal'
value: app.session_data['settings_compass_update']
on_value: app.set_compass_update()
@ -209,11 +211,12 @@
id: slider_update_freq
background_color: rgba(app.theme['bgcolor'])
color: rgba(app.theme['fgcolor'])
min: 0
max: 1
step: 0.1
min: 5
max: 30
step: 2
orientation: 'horizontal'
value: 0.5
value: 10
on_value: app.set_update_freq()
BackgroundLabel:
text: "Local altruism"
background_color: rgba(app.theme['bgcolor'])

40
main.py
View File

@ -20,7 +20,7 @@ from os import path
import pickle
#FLOCK_SERVER="http://192.168.0.8:5000"
FLOCK_SERVER="http://awelo.ath.cx:5000"
#FLOCK_SERVER="http://awelo.ath.cx:5000"
class IconButton(ButtonBehavior, Image):
pass
@ -84,9 +84,11 @@ class FlockompassApp(App):
settings = pickle.load(f)
else:
settings = {'settings_smoothing': 0.88,
'settings_compass_update': 0.777,
'settings_theme': "dark"
'settings_compass_update': 0.88,
'settings_theme': "dark",
'settings_flock_server': 'http://flock.apps.lancis.ecologia.unam.mx'
}
with open(pickle_path, 'wb') as f:
pickle.dump(settings, f)
@ -113,6 +115,18 @@ class FlockompassApp(App):
self.session_data['settings_smoothing'] = self.ss.ids.slider_smoothing.value
self.save_settings()
def set_flock_server(self):
self.session_data['settings_flock_server'] = self.ss.ids.flock_server.value
self.save_settings()
def set_update_freq(self):
print('setting update freq to', self.ss.ids.slider_update_freq.value)
self.session_data['settings_update_freq'] = self.ss.ids.slider_update_freq.value
self.save_settings()
Clock.unschedule(self.flock)
Clock.schedule_interval(self.flock,
self.session_data.get('settings_update_freq', 10.0))
def set_compass_update(self):
self.session_data['settings_compass_update'] = self.ss.ids.slider_compass_update.value
self.compass_disable()
@ -166,7 +180,7 @@ class FlockompassApp(App):
@mainthread
def on_location(self, **kwargs):
self.gps_data = kwargs
self.dump(1)
# self.dump(1)
if ('dest_lat' not in self.session_data
and
@ -286,7 +300,7 @@ class FlockompassApp(App):
def compass_enable(self):
self.cs.facade.enable()
Clock.schedule_interval(self.get_field,
1.0 - self.session_data.get('settings_compass_update', 0.777))
1.0 - self.session_data.get('settings_compass_update', 0.88))
def compass_disable(self):
self.cs.facade.disable()
@ -305,22 +319,25 @@ class FlockompassApp(App):
try:
register_url = "{server}/register/?dest_lon={dest_lon}&dest_lat={dest_lat}"
r = requests.get(register_url.format(server=FLOCK_SERVER,
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']),
timeout=0.5)
out = r.json()
self.session_data['bike_id'] = out['bike_id']
except:
print('registered! got bike_id:', self.session_data['bike_id'])
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')
def flock_server_update(self):
try:
update_url = "{server}/update/{bike_id}/?lat={lat}&lon={lon}&speed={speed}&bearing={bearing}"
req = requests.get(update_url.format(server=FLOCK_SERVER,
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'],
@ -330,7 +347,8 @@ class FlockompassApp(App):
resp = req.json()
print('server update ¡¡¡¡¡¡¡¡', req, resp)
self.session_data.update(resp)
except:
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)
@ -381,7 +399,7 @@ class FlockompassApp(App):
self.cs._anim1 = None
screen_manager.add_widget(self.cs)
Clock.schedule_interval(self.flock, 20.0)
Clock.schedule_interval(self.flock, self.session_data.get('settings_update_freq', 10.0))
return screen_manager