From f7d0dbb0af0ea0b37b3968d6d80637b80064d106 Mon Sep 17 00:00:00 2001 From: rgarcia-herrera Date: Fri, 29 Oct 2021 19:51:31 -0500 Subject: [PATCH] register and update to server, better compass updates --- flockompass.kv | 33 ++++++++++++++++++--------------- main.py | 46 ++++++++++++++++++++++++++++++++-------------- 2 files changed, 50 insertions(+), 29 deletions(-) diff --git a/flockompass.kv b/flockompass.kv index 0f93cda..1a15e2b 100644 --- a/flockompass.kv +++ b/flockompass.kv @@ -27,7 +27,6 @@ background_color: 0, 0, 0, 0 background_color: rgba("#c0464b") - : 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 @@ : 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']) diff --git a/main.py b/main.py index 7ac448b..53e2dca 100644 --- a/main.py +++ b/main.py @@ -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 @@ -200,7 +214,7 @@ class FlockompassApp(App): flock_distance = "%i metros" % flock_distance else: flock_distance = "%0.1f km" % flock_distance - + 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) @@ -277,16 +291,16 @@ class FlockompassApp(App): self.cs._anim &= Animation(fbearing=fbearing, d=0.1, t='out_quad') - + else: self.cs.ids.to_flock.source = 'assets/pivot.png' self.cs._anim.start(self) - + 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