diff --git a/satpredict.py b/satpredict.py index eebfbc5..b0f65c4 100644 --- a/satpredict.py +++ b/satpredict.py @@ -3,14 +3,15 @@ import json import sys import datetime +#Frequencies that satellites transmit on. frequencies = {'NOAA-15':'137.620M', 'NOAA-18':'137.9125M', 'NOAA-19':'137.10M', 'METEOR-M2':'137.925M', 'ISS':'145.80M' } #Meteor M2 is also on 137.1M tle_data = json.load(open('sat_tle.txt')) -default_predictions = 1 -default_min_elevation = 30 -suppress_low_passes = False - +default_predictions = 1 #how many predictions do we want to predict in advance +default_min_elevation = 30 #how low the angle of the satellitie pass is allowed to be if we want to record a pass +suppress_low_passes = False #Less console spam if you enable this. +#You can change the default elevation with the first parameter pass_elevation = default_min_elevation if( len(sys.argv) > 1 ): pass_elevation = int(sys.argv[1]) @@ -18,6 +19,7 @@ if( len(sys.argv) > 1 ): if( pass_elevation == '' ): pass_elevation = default_min_elevation +#you can change the number of predictions per satellite with the second parameter predictions = default_predictions if( len(sys.argv) > 2): predictions = int(sys.argv[2]) @@ -25,14 +27,17 @@ if( len(sys.argv) > 2): if( predictions == '' ): predictions = default_predictions +#anything in the third parameter will turn off console spam if( len(sys.argv) > 3 ): suppress_low_passes = True +#format a unix timestamp in a time appropriate for the 'at' command def convert_time( unixtime ): return datetime.datetime.fromtimestamp( int(unixtime) ).strftime('%H:%M %Y-%m-%d') +#format the unix timestamp for minutes, used to determine length of recording def convert_time_short( unixtime ): return datetime.datetime.fromtimestamp( int(unixtime) @@ -41,6 +46,7 @@ def convert_time_short( unixtime ): def get_sat( sat ): return sat + '\n' + tle_data[sat] +#Where on the earth you are. Change this to your location qth = (49.5, 123.5, 50) # lat (N), long (W), alt (meters) data = {} @@ -56,6 +62,7 @@ for sat, freq in frequencies.iteritems(): p_nw = t_nw.next() p_se = t_se.next() + #peak check. PEAK CHECK! while (p.peak()['elevation'] < default_min_elevation): p = t.next() p_nw = t_nw.next() @@ -63,6 +70,7 @@ for sat, freq in frequencies.iteritems(): if( not suppress_low_passes ): print name, "pass too low, recalculating" + #this is the data we want to pass on to the rest of the program data[name] = {} data[name]['frequency'] = freq data[name]['start_unix'] = p.start @@ -71,7 +79,7 @@ for sat, freq in frequencies.iteritems(): data[name]['duration_minutes'] = convert_time_short(data[name]['duration_seconds']) data[name]['elevation'] = p.peak()['elevation'] - print name, 'next pass at:', data[name]['start'], 'at', data[name]['elevation'], 'degrees.', data[name]['direction'] + '-bound' + print name, 'next pass at:', data[name]['start'], 'at', data[name]['elevation'], 'degrees.' count = count + 1 import json