From d332604f2665ff99682ecf7b4e218c111b4cc419 Mon Sep 17 00:00:00 2001 From: KF7EEL Date: Tue, 2 Mar 2021 12:41:03 -0800 Subject: [PATCH] add comment to map plots --- bridge_gps_data.py | 10 +- gps_data.py | 10 +- scripts/dashboard/dashboard.py | 185 ++++++++++++++++++--------------- 3 files changed, 113 insertions(+), 92 deletions(-) diff --git a/bridge_gps_data.py b/bridge_gps_data.py index 0e45ab6..f0518ef 100755 --- a/bridge_gps_data.py +++ b/bridge_gps_data.py @@ -160,12 +160,12 @@ def aprs_send(packet): AIS.close() logger.info('Packet sent to APRS-IS.') -def dashboard_loc_write(call, lat, lon, time): +def dashboard_loc_write(call, lat, lon, time, comment): #try: dash_entries = ast.literal_eval(os.popen('cat /tmp/gps_data_user_loc.txt').read()) # except: # dash_entries = [] - dash_entries.insert(0, {'call': call, 'lat': lat, 'lon': lon, 'time':time}) + dash_entries.insert(0, {'call': call, 'lat': lat, 'lon': lon, 'time':time, 'comment': comment}) with open("/tmp/gps_data_user_loc.txt", 'w') as user_loc_file: user_loc_file.write(str(dash_entries[:200])) user_loc_file.close() @@ -366,7 +366,7 @@ def process_sms(_rf_src, sms): try: aprslib.parse(aprs_loc_packet) aprs_send(aprs_loc_packet) - dashboard_loc_write(str(get_alias(int_id(_rf_src), subscriber_ids)) + '-' + ssid, aprs_lat, aprs_lon, time()) + dashboard_loc_write(str(get_alias(int_id(_rf_src), subscriber_ids)) + '-' + ssid, aprs_lat, aprs_lon, time(), comment) #logger.info('Sent manual position to APRS') except Exception as error_exception: logger.info('Exception. Not uploaded') @@ -1550,7 +1550,7 @@ class routerHBP(HBSYSTEM): float(lat_deg) < 91 float(lon_deg) < 121 aprs_send(aprs_loc_packet) - dashboard_loc_write(str(get_alias(int_id(_rf_src), subscriber_ids)) + '-' + ssid, aprs_lat, aprs_lon, time()) + dashboard_loc_write(str(get_alias(int_id(_rf_src), subscriber_ids)) + '-' + ssid, aprs_lat, aprs_lon, time(), comment) #logger.info('Sent APRS packet') except Exception as error_exception: logger.info('Error. Failed to send packet. Packet may be malformed.') @@ -1652,7 +1652,7 @@ class routerHBP(HBSYSTEM): float(loc.lat) float(loc.lon) aprs_send(aprs_loc_packet) - dashboard_loc_write(str(get_alias(int_id(_rf_src), subscriber_ids)) + '-' + ssid, str(loc.lat[0:7]) + str(loc.lat_dir), str(loc.lon[0:8]) + str(loc.lon_dir), time()) + dashboard_loc_write(str(get_alias(int_id(_rf_src), subscriber_ids)) + '-' + ssid, str(loc.lat[0:7]) + str(loc.lat_dir), str(loc.lon[0:8]) + str(loc.lon_dir), time(), comment) except Exception as error_exception: logger.info('Failed to parse packet. Packet may be deformed. Not uploaded.') logger.info(error_exception) diff --git a/gps_data.py b/gps_data.py index cdac809..165c8a2 100644 --- a/gps_data.py +++ b/gps_data.py @@ -153,12 +153,12 @@ def aprs_send(packet): AIS.close() logger.info('Packet sent to APRS-IS.') -def dashboard_loc_write(call, lat, lon, time): +def dashboard_loc_write(call, lat, lon, time, comment): #try: dash_entries = ast.literal_eval(os.popen('cat /tmp/gps_data_user_loc.txt').read()) # except: # dash_entries = [] - dash_entries.insert(0, {'call': call, 'lat': lat, 'lon': lon, 'time':time}) + dash_entries.insert(0, {'call': call, 'lat': lat, 'lon': lon, 'time':time, 'comment': comment}) with open("/tmp/gps_data_user_loc.txt", 'w') as user_loc_file: user_loc_file.write(str(dash_entries[:200])) user_loc_file.close() @@ -357,7 +357,7 @@ def process_sms(_rf_src, sms): try: aprslib.parse(aprs_loc_packet) aprs_send(aprs_loc_packet) - dashboard_loc_write(str(get_alias(int_id(_rf_src), subscriber_ids)) + '-' + ssid, aprs_lat, aprs_lon, time.time()) + dashboard_loc_write(str(get_alias(int_id(_rf_src), subscriber_ids)) + '-' + ssid, aprs_lat, aprs_lon, time.time(), comment) #logger.info('Sent manual position to APRS') except Exception as error_exception: logger.info('Exception. Not uploaded') @@ -496,7 +496,7 @@ class DATA_SYSTEM(HBSYSTEM): float(lat_deg) < 91 float(lon_deg) < 121 aprs_send(aprs_loc_packet) - dashboard_loc_write(str(get_alias(int_id(_rf_src), subscriber_ids)) + '-' + ssid, aprs_lat, aprs_lon, time.time()) + dashboard_loc_write(str(get_alias(int_id(_rf_src), subscriber_ids)) + '-' + ssid, aprs_lat, aprs_lon, time.time(), comment) #logger.info('Sent APRS packet') except Exception as error_exception: logger.info('Error. Failed to send packet. Packet may be malformed.') @@ -598,7 +598,7 @@ class DATA_SYSTEM(HBSYSTEM): float(loc.lat) float(loc.lon) aprs_send(aprs_loc_packet) - dashboard_loc_write(str(get_alias(int_id(_rf_src), subscriber_ids)) + '-' + ssid, str(loc.lat[0:7]) + str(loc.lat_dir), str(loc.lon[0:8]) + str(loc.lon_dir), time.time()) + dashboard_loc_write(str(get_alias(int_id(_rf_src), subscriber_ids)) + '-' + ssid, str(loc.lat[0:7]) + str(loc.lat_dir), str(loc.lon[0:8]) + str(loc.lon_dir), time.time(), comment) except Exception as error_exception: logger.info('Failed to parse packet. Packet may be deformed. Not uploaded.') logger.info(error_exception) diff --git a/scripts/dashboard/dashboard.py b/scripts/dashboard/dashboard.py index 384f654..cfb2db3 100644 --- a/scripts/dashboard/dashboard.py +++ b/scripts/dashboard/dashboard.py @@ -202,94 +202,105 @@ def view_map(): map_size = request.args.get('map_size') user_loc = ast.literal_eval(os.popen('cat /tmp/gps_data_user_loc.txt').read()) last_known_list = [] - try: - if track_call: - #folium_map = folium.Map(location=map_center, zoom_start=int(zoom_level)) - #marker_cluster = MarkerCluster().add_to(folium_map) - for user_coord in user_loc: - user_lat = aprs_to_latlon(float(re.sub('[A-Za-z]','', user_coord['lat']))) - user_lon = aprs_to_latlon(float(re.sub('[A-Za-z]','', user_coord['lon']))) - if type(user_coord['time']) == str: - loc_time = str(user_coord['time']) - if type(user_coord['time']) == int or type(user_coord['time']) == float: - loc_time = datetime.fromtimestamp(user_coord['time']).strftime(time_format) - if 'S' in user_coord['lat']: - user_lat = -user_lat - if 'W' in user_coord['lon']: - user_lon = -user_lon - if user_coord['call'] not in last_known_list and user_coord['call'] == track_call: - folium_map = folium.Map(location=[user_lat, user_lon], tiles=map_theme, zoom_start=15) - marker_cluster = MarkerCluster().add_to(folium_map) - folium.Marker([user_lat, user_lon], popup=""" - + #try: + if track_call: + #folium_map = folium.Map(location=map_center, zoom_start=int(zoom_level)) + #marker_cluster = MarkerCluster().add_to(folium_map) + for user_coord in user_loc: + user_lat = aprs_to_latlon(float(re.sub('[A-Za-z]','', user_coord['lat']))) + user_lon = aprs_to_latlon(float(re.sub('[A-Za-z]','', user_coord['lon']))) + if type(user_coord['time']) == str: + loc_time = str(user_coord['time']) + if type(user_coord['time']) == int or type(user_coord['time']) == float: + loc_time = datetime.fromtimestamp(user_coord['time']).strftime(time_format) + if 'S' in user_coord['lat']: + user_lat = -user_lat + if 'W' in user_coord['lon']: + user_lon = -user_lon + loc_comment = '' + if 'comment' in user_coord: + loc_comment = """ + + + + + + """ + if user_coord['call'] not in last_known_list and user_coord['call'] == track_call: + folium_map = folium.Map(location=[user_lat, user_lon], tiles=map_theme, zoom_start=15) + marker_cluster = MarkerCluster().add_to(folium_map) + folium.Marker([user_lat, user_lon], popup=""" +
Comment:
"""+ str(user_coord['comment']) +"""
+ + + + + + + + + + """ + loc_comment + """ + + +
Last Location:
"""+ str(user_coord['call']) +"""
"""+ loc_time +"""
+ + """, icon=folium.Icon(color="red", icon="record"), tooltip=str(user_coord['call'])).add_to(folium_map) + last_known_list.append(user_coord['call']) + if user_coord['call'] in last_known_list and user_coord['call'] == track_call: + folium.CircleMarker([user_lat, user_lon], popup=""" + + + + + + + + + +
""" + user_coord['call'] + """
""" + loc_time + """
+ """, tooltip=str(user_coord['call']), fill=True, fill_color="#3186cc", radius=4).add_to(marker_cluster) + #return folium_map._repr_html_() + if not reload_time: + reload_time = 120 + if not map_size: + map_view = ''' - - - - - - - + -
Last Location:
"""+ str(user_coord['call']) +"""
"""+ loc_time +""" + ''' + folium_map._repr_html_() + '''
-
- """, icon=folium.Icon(color="red", icon="record"), tooltip=str(user_coord['call'])).add_to(folium_map) - last_known_list.append(user_coord['call']) - if user_coord['call'] in last_known_list and user_coord['call'] == track_call: - folium.CircleMarker([user_lat, user_lon], popup=""" - - - - - - - - - -
""" + user_coord['call'] + """
""" + loc_time + """
- """, tooltip=str(user_coord['call']), fill=True, fill_color="#3186cc", radius=4).add_to(marker_cluster) - #return folium_map._repr_html_() - if not reload_time: - reload_time = 120 - if not map_size: - map_view = ''' - - - - - -
- ''' + folium_map._repr_html_() + '''
''' - if map_size == 'full': - map_view = folium_map._repr_html_() + ''' + if map_size == 'full': + map_view = folium_map._repr_html_() - content = ''' - - - - """ + dashboard_title + """ - Tracking """+ track_call + """ - -

""" + dashboard_title + """ - Tracking """ + track_call + """

-

Page automatically reloads every """ + str(reload_time) + """ seconds.

-

- -

-

- """ + map_view - return render_template('generic.html', title = dashboard_title, logo = logo, content = Markup(content)) - except: - content = """

Station not found.

-

-

""" + content = ''' + + + + """ + dashboard_title + """ - Tracking """+ track_call + """ + +

""" + dashboard_title + """ - Tracking """ + track_call + """

+

Page automatically reloads every """ + str(reload_time) + """ seconds.

+

+ +

+

+ """ + map_view return render_template('generic.html', title = dashboard_title, logo = logo, content = Markup(content)) + #except Exception as e: + #content = """

Station not found.

+ #

+ #

""" + #content = str(e) + #return render_template('generic.html', title = dashboard_title, logo = logo, content = Markup(content)) if not track_call: folium_map = folium.Map(location=map_center, tiles=map_theme, zoom_start=int(zoom_level)) @@ -305,6 +316,15 @@ def view_map(): user_lat = -user_lat if 'W' in user_coord['lon']: user_lon = -user_lon + loc_comment = '' + if 'comment' in user_coord: + loc_comment = """ + + Comment: + + + """+ str(user_coord['comment']) +""" + """ if user_coord['call'] not in last_known_list: folium.Marker([user_lat, user_lon], popup=""" @@ -318,6 +338,7 @@ def view_map(): + """ + loc_comment + """
""" + loc_time + """
Track Station