diff options
author | Jogi Hofmüller <jogi@mur.at> | 2011-08-11 12:31:16 +0000 |
---|---|---|
committer | Jogi Hofmüller <jogi@mur.at> | 2011-08-11 12:31:16 +0000 |
commit | abcb8f300a44b67e2c75330627b690944ed769cf (patch) | |
tree | db80179ea87e63072e7e62f5ed2c45ff59d95aa3 /tools | |
parent | - fixed Bug in call to getTrajectoryAsJavaArray in osmWidget () (diff) |
- fixed Bug in call to getTrajectoryAsJavaArray in osmWidget ()
- included real satellite data in dataWidget ()
- added comment to map
git-svn-id: https://svn.spreadspace.org/mur.sat@123 7de4ea59-55d0-425e-a1af-a3118ea81d4c
Diffstat (limited to 'tools')
-rw-r--r-- | tools/mmd/MmdCommands.py | 38 | ||||
-rw-r--r-- | tools/mmd/MmdLocation.py | 1 | ||||
-rw-r--r-- | tools/mmd/MmdSatellite.py | 21 | ||||
-rw-r--r-- | tools/mmd/MmdWidgets.py | 23 | ||||
-rw-r--r-- | tools/mmd/mmd.css | 4 |
5 files changed, 58 insertions, 29 deletions
diff --git a/tools/mmd/MmdCommands.py b/tools/mmd/MmdCommands.py index 410acfe..45f66af 100644 --- a/tools/mmd/MmdCommands.py +++ b/tools/mmd/MmdCommands.py @@ -10,7 +10,7 @@ def loginForm (session): """ display the login form """ - return indexWidget (dataWidget (), loginFormWidget (), statusWidget (session), session) + return indexWidget (dataWidget (session), loginFormWidget (), statusWidget (session), session) def login (session): """ @@ -18,23 +18,23 @@ def login (session): """ if not session.user.load (session.getQsEmail ()): error_message = {'error': 'Login', 'description': 'Login failed.'} - return indexWidget (dataWidget (), errorWidget (error_message), statusWidget (session), session) + return indexWidget (dataWidget (session), errorWidget (error_message), statusWidget (session), session) if not session.user.checkPassword (session.getQsPassword ()): error_message = {'error': 'Login', 'description': 'Login failed.'} - return indexWidget (dataWidget (), errorWidget (error_message), statusWidget (session), session) + return indexWidget (dataWidget (session), errorWidget (error_message), statusWidget (session), session) session.setStatus ('auth') - return indexWidget (dataWidget (), loginWidget (session.user), statusWidget (session), session) + return indexWidget (dataWidget (session), loginWidget (session.user), statusWidget (session), session) def logout (session): session.user.email = 'Anonymous' session.setStatus () - return indexWidget (dataWidget (), logoutWidget (), statusWidget (session), session) + return indexWidget (dataWidget (session), logoutWidget (), statusWidget (session), session) def registerForm (session): """ display the register form """ - return indexWidget (dataWidget (), registerFormWidget (), statusWidget (session), session) + return indexWidget (dataWidget (session), registerFormWidget (), statusWidget (session), session) def register (session): """ @@ -52,7 +52,7 @@ def register (session): if password != confirm: error_message = {'error': 'Password', 'description': 'Passwords do not match.'} - return indexWidget (dataWidget (), errorWidget (error_message), statusWidget (session), session) + return indexWidget (dataWidget (session), errorWidget (error_message), statusWidget (session), session) user = User () code = user.create (session.session_id, firstname, lastname, email, callsign, password) @@ -79,58 +79,58 @@ MURSAT1 team if not user.sendEmail (message): error_message = {'error': 'Email', 'description': 'Email could not be sent.'} - return indexWidget (dataWidget (), errorWidget (error_message), statusWidget (session), session) + return indexWidget (dataWidget (session), errorWidget (error_message), statusWidget (session), session) - return indexWidget (dataWidget (), registerWidget (), statusWidget (session), session) + return indexWidget (dataWidget (session), registerWidget (), statusWidget (session), session) def completeRegistration (session): code = session.getQsCode () if not session.user.findPending (code): error_message = {'error': 'Registration', 'description': 'Registration Failed.'} - return indexWidget (dataWidget (), errorWidget (error_message), statusWidget (session), session) - return indexWidget (dataWidget (), completeRegistrationWidget (code), statusWidget (session), session) + return indexWidget (dataWidget (session), errorWidget (error_message), statusWidget (session), session) + return indexWidget (dataWidget (session), completeRegistrationWidget (code), statusWidget (session), session) def confirmRegistration (session): code = session.getQsCode () if not session.user.findPending (code): error_message = {'error': 'Registration', 'description': 'Registration Failed.'} - return indexWidget (dataWidget (), errorWidget (error_message), statusWidget (session), session) + return indexWidget (dataWidget (session), errorWidget (error_message), statusWidget (session), session) session.user.confirm (code) session.setStatus ('auth') - return indexWidget (dataWidget (), confirmRegistrationWidget (session.user), statusWidget (session), session) + return indexWidget (dataWidget (session), confirmRegistrationWidget (session.user), statusWidget (session), session) def cancelRegistration (session): code = session.getQsCode () if not session.user.findPending (code): error_message = {'error': 'Registration', 'description': 'Canceling failed.'} - return indexWidget (dataWidget (), errorWidget (error_message), statusWidget (session), session) + return indexWidget (dataWidget (session), errorWidget (error_message), statusWidget (session), session) session.user.cancel (code) - return indexWidget (dataWidget (), cancelRegistrationWidget (), statusWidget (session), session) + return indexWidget (dataWidget (session), cancelRegistrationWidget (), statusWidget (session), session) def submitForm (session): """ display the form for data submission """ - return indexWidget (dataWidget (), submitFormWidget (), statusWidget (session), session) + return indexWidget (dataWidget (session), submitFormWidget (), statusWidget (session), session) def submit (session): """ evaluate data from submitForm """ - return indexWidget (dataWidget (), submitWidget (), statusWidget (session), session) + return indexWidget (dataWidget (session), submitWidget (), statusWidget (session), session) def viewlog (session): """ show latest log entries/submissions """ - return indexWidget (dataWidget (), logWidget (), statusWidget (session), session) + return indexWidget (dataWidget (session), logWidget (), statusWidget (session), session) def index (session): """ display the index page """ satellite = {'longitude': 15.4426, 'latitude': 47.06576} - return indexWidget (dataWidget (), osmWidget (session), statusWidget (session), session) + return indexWidget (dataWidget (session), osmWidget (session), statusWidget (session), session) def mmdtest (env, cookie): body = '' diff --git a/tools/mmd/MmdLocation.py b/tools/mmd/MmdLocation.py index e3212bb..7a51618 100644 --- a/tools/mmd/MmdLocation.py +++ b/tools/mmd/MmdLocation.py @@ -23,6 +23,7 @@ class Location: self.name = 'Graz/Austria' self.longitude = 15.44226 self.latitude = 47.06576 + self.altitude = 376 def create (self, name, longitude, latitude, is_default, user_id): self.name = name diff --git a/tools/mmd/MmdSatellite.py b/tools/mmd/MmdSatellite.py index 67a9052..a148f30 100644 --- a/tools/mmd/MmdSatellite.py +++ b/tools/mmd/MmdSatellite.py @@ -4,6 +4,7 @@ import ephem import time import os from MmdDb import Db +from MmdLocation import Location def createJavaArray (point_list, name): astring = '''var {0} = new Array (\n'''.format (name) @@ -41,10 +42,11 @@ def dms2degdec (lonlat): class Satellite: - def __init__ (self): + def __init__ (self, location = False): self.name = 'RADIOSCAF-B/ARISSAT-1' self.tle_filename = '/usr/local/mmd/tles/current' self.db = Db () + self.initSatellite (location) def getCurrentSSP (self): ssp = self._loadCurrentSSP () @@ -77,6 +79,22 @@ class Satellite: def _loadCurrentSSP (self): return self.db.satelliteLoadCurrentSSP (time.strftime ('%s')) + def initSatellite (self, location = False): + if not self._loadTLE (): + return False + if location: + loc = location + else: + loc = Location () + + sat = ephem.readtle (self._tle[0], self._tle[1], self._tle[2]) + obs = ephem.Observer () + obs.long, obs.lat, obs.elevation = loc.longitude, loc.latitude, loc.altitude + sat.compute (obs) + self.longitude = dms2degdec (sat.sublong.__str__ ()) + self.latitude = dms2degdec (sat.sublat.__str__ ()) + self.altitude = round (float (sat.elevation.__str__ ()), 1) + def computeTrajectory (self): ''' computes 5 hours of future trajectory data, starting at the @@ -129,6 +147,7 @@ if __name__ == "__main__": t, lon, lat = satellite.getCurrentSSP () assert t, 'loading current SSP failed' print lon, lat, time.strftime ('%c', time.gmtime (t)) + print satellite.longitude, satellite.latitude, satellite.altitude except AssertionError as e: print 'Error: {0}'.format (e) diff --git a/tools/mmd/MmdWidgets.py b/tools/mmd/MmdWidgets.py index 4a4a7b0..37c997f 100644 --- a/tools/mmd/MmdWidgets.py +++ b/tools/mmd/MmdWidgets.py @@ -212,6 +212,7 @@ def osmWidget (session): if not user_location: user_location = Location () timestamp, longitude, latitude = session.satellite.getCurrentSSP () + minutes_preview = 180 html = ''' <div id="osm"></div> @@ -264,12 +265,16 @@ def osmWidget (session): map.zoomTo (1); </script> + <div class="info"> + The map shows the satellite's expected ground track for the next {5} minutes. + </div> '''.format ( longitude, latitude, user_location.longitude, user_location.latitude, - session.satellite.getTrajectoryAsJavaArray ('curves', 30) + session.satellite.getTrajectoryAsJavaArray ('curves', minutes_preview), + minutes_preview ) return html @@ -284,7 +289,7 @@ def statusWidget (session): <img src="http://sat.mur.at/pics/sat-logo-notext.png" alt="mur.sat logo" /> </a> MURSAT1 Mission Dashboard - <div id="info"> + <div class="info"> {0}. Local time is {1}. </div> '''.format (inout, time.strftime ('%c')) @@ -353,20 +358,24 @@ def indexWidget (lcol, rcol, status, debug_info = False): return html -def dataWidget (longitude = 15.44226, latitude = 47.06576): +def dataWidget (session): + timestamp, longitude, latitude = session.satellite.getCurrentSSP () + html = ''' <div id="datahead"> - Current Satellite Data + {0} </div> + <hr /> <div>Time: 00 D 00 H 00 M 00 S</div> - <div>Longitude: {0}</div> - <div>Latitude: {1}</div> + <div>SSP Longitude: {1}</div> + <div>SSP Latitude: {2}</div> + <div>Altitude: {3}m</div> <hr /> <div><a href="?cmd=submitForm">Submit</a> a report</div> <div>View <a href="?cmd=viewlog">Log</a> of reports</div> <hr /> <div>Checkout the <a href="http://sat.mur.at/">project page</a>!</div> - '''.format (longitude, latitude) + '''.format (session.satellite.name, session.satellite.longitude, session.satellite.latitude, session.satellite.altitude) return html diff --git a/tools/mmd/mmd.css b/tools/mmd/mmd.css index 0a19385..f72ab30 100644 --- a/tools/mmd/mmd.css +++ b/tools/mmd/mmd.css @@ -43,7 +43,7 @@ html, body #lcol { font: 10pt courier, monospace; - width: 280px; + max-width: 30%; height: auto; margin: 1px; padding: 2px; @@ -52,7 +52,7 @@ html, body background-color: white; } -#info +.info { font: 10pt courier, monospace; color: black; |