diff --git a/auto_scheduler/__init__.py b/auto_scheduler/__init__.py index bebee12..2ce782c 100644 --- a/auto_scheduler/__init__.py +++ b/auto_scheduler/__init__.py @@ -1,2 +1,2 @@ -from .tle import Twolineelement -from .satellite import Satellite +from .tle import Twolineelement # noqa +from .satellite import Satellite # noqa diff --git a/auto_scheduler/pass_predictor.py b/auto_scheduler/pass_predictor.py index d7ca7b3..48e8af2 100644 --- a/auto_scheduler/pass_predictor.py +++ b/auto_scheduler/pass_predictor.py @@ -37,6 +37,19 @@ def overlap(satpass, scheduledpasses, wait_time_seconds): return overlap +def create_observer(lat, lon, alt, min_riseset=0.0): + ''' + Create an observer instance. + ''' + observer = ephem.Observer() + observer.lat = str(lat) + observer.lon = str(lon) + observer.elevation = alt + observer.horizon = str(min_riseset) + + return observer + + def find_passes(satellite, observer, tmin, @@ -95,11 +108,12 @@ def find_passes(satellite, # get pass information satpass = { - 'mytime': str(observer.date), - 'name': str(satellite.name), - 'id': str(satellite.id), - 'tle1': str(satellite.tle1), - 'tle2': str(satellite.tle2), + 'satellite': { + 'name': str(satellite.name), + 'id': str(satellite.id), + 'tle1': str(satellite.tle1), + 'tle2': str(satellite.tle2), + }, 'tr': tr.datetime(), # Rise time 'azr': azimuth_r, # Rise Azimuth 'tt': tt.datetime(), # Max altitude time @@ -107,16 +121,18 @@ def find_passes(satellite, 'ts': ts.datetime(), # Set time 'azs': azimuth_s, # Set azimuth 'valid': valid, - 'uuid': satellite.transmitter, - 'success_rate': satellite.success_rate, - 'good_count': satellite.good_count, - 'data_count': satellite.data_count, - 'mode': satellite.mode, + 'transmitter': { + 'uuid': satellite.transmitter, + 'success_rate': satellite.success_rate, + 'good_count': satellite.good_count, + 'data_count': satellite.data_count, + 'mode': satellite.mode, + }, 'scheduled': False } passes.append(satpass) observer.date = ephem.Date(ts).datetime() + timedelta(minutes=1) else: keep_digging = False - + return passes diff --git a/auto_scheduler/plotting.py b/auto_scheduler/plotting.py new file mode 100644 index 0000000..1ff1b28 --- /dev/null +++ b/auto_scheduler/plotting.py @@ -0,0 +1,30 @@ +import numpy as np +import matplotlib.pyplot as plt +from pprint import PrettyPrinter +pp = PrettyPrinter(indent=4) + +def plot_pass(pass_data): + pp.pprint(pass_data) + return + +def x(): + plt.figure() + ax = plt.subplot(111, projection='polar') + ax.set_theta_direction(-1) + ax.set_theta_zero_location('N') + plt.plot(np.radians(pass_data['azims']), pass_data['elevs'], '-') + + for i, event in enumerate(pass_data['event']): + if event: + if event.info == 'LOS': + style = 'ro' + elif event.info == 'AOS': + style = 'go' + else: + style = 'bo' + plt.plot(np.radians(pass_data['azims'][i]), pass_data['elevs'][i], style) + + ax.set_yticks(range(0, 90, 20)) + ax.set_yticklabels(map(str, range(90, 0, -20))) + ax.set_rmax(90) + plt.show() diff --git a/auto_scheduler/satellite.py b/auto_scheduler/satellite.py index 6d6570a..5d7193c 100644 --- a/auto_scheduler/satellite.py +++ b/auto_scheduler/satellite.py @@ -16,5 +16,10 @@ class Satellite: self.mode = mode def __repr__(self): - return "%s %s %d %d %d %s %s" % (self.id, self.transmitter, self.success_rate, self.good_count, - self.data_count, self.mode, self.name) + return "%s %s %d %d %d %s %s" % (self.id, + self.transmitter, + self.success_rate, + self.good_count, + self.data_count, + self.mode, + self.name) diff --git a/requirements.txt b/requirements.txt index aa951aa..610d6ad 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,3 +4,5 @@ requests lxml tqdm python-decouple + +tox diff --git a/schedule_single_station.py b/schedule_single_station.py index e054052..411bc05 100755 --- a/schedule_single_station.py +++ b/schedule_single_station.py @@ -1,16 +1,17 @@ #!/usr/bin/env python from __future__ import division import requests -import ephem from datetime import datetime, timedelta import os import lxml.html import argparse import logging -from utils import read_priorities_transmitters, \ - get_priority_passes -from auto_scheduler import Twolineelement, Satellite -from auto_scheduler.pass_predictor import find_passes +from utils import get_priority_passes, \ + read_priorities_transmitters, \ + satellites_from_transmitters, \ + print_scheduledpass_summary +from auto_scheduler.pass_predictor import create_observer, \ + find_passes from auto_scheduler.schedulers import ordered_scheduler, \ report_efficiency from cache import CacheManager @@ -109,6 +110,9 @@ def main(): type=_log_level_string_to_int, nargs="?", help="Set the logging output level. {0}".format(_LOG_LEVEL_STRINGS)) + parser.add_argument("--force-update", + help="Force update of the transmitters", + action="store_true") args = parser.parse_args() # Check arguments @@ -161,13 +165,7 @@ def main(): settings.CACHE_DIR, settings.CACHE_AGE, settings.MAX_NORAD_CAT_ID) - cache.update() - - # Set observer - observer = ephem.Observer() - observer.lon = str(ground_station['lng']) - observer.lat = str(ground_station['lat']) - observer.elevation = ground_station['altitude'] + cache.update(force=args.force_update) # Set minimum culmination elevation if args.min_culmination is None: @@ -181,19 +179,25 @@ def main(): min_culmination = args.min_culmination # Set minimum rise/set elevation - if args.min_riseset is None: - min_riseset = ground_station['min_horizon'] - else: - if args.min_riseset < 0.0: - min_riseset = 0.0 - elif args.min_riseset > 90.0: - min_riseset = 90.0 - else: - min_riseset = args.min_riseset - - # Use minimum altitude for computing rise and set times (horizon to horizon otherwise) if not args.horizon: - observer.horizon = str(min_riseset) + # Use minimum altitude for computing rise and set times (horizon to horizon otherwise) + if args.min_riseset is None: + min_riseset = ground_station['min_horizon'] + else: + if args.min_riseset < 0.0: + min_riseset = 0.0 + elif args.min_riseset > 90.0: + min_riseset = 90.0 + else: + min_riseset = args.min_riseset + else: + min_riseset = 0.0 + + # Set observer + observer = create_observer(ground_station['lat'], + ground_station['lng'], + ground_station['altitude'], + min_riseset=min_riseset) # Minimum duration of a pass min_pass_duration = settings.MIN_PASS_DURATION @@ -204,21 +208,13 @@ def main(): # Read transmitters transmitters = cache.read_transmitters() - # Extract satellites from receivable transmitters - satellites = [] - for transmitter in transmitters: - for tle in tles: - if tle['norad_cat_id'] == transmitter['norad_cat_id']: - satellites.append(Satellite(Twolineelement(*tle['lines']), - transmitter['uuid'], - transmitter['success_rate'], - transmitter['good_count'], - transmitter['data_count'], - transmitter['mode'])) + # Extract interesting satellites from receivable transmitters + satellites = satellites_from_transmitters(transmitters, tles) # Find passes passes = [] logging.info('Finding all passes for %s satellites:' % len(satellites)) + # Loop over satellites for satellite in tqdm(satellites): passes.extend(find_passes(satellite, @@ -253,23 +249,12 @@ def main(): report_efficiency(scheduledpasses, passes) # Find unique objects - satids = sorted(set([satpass['id'] for satpass in passes])) + satids = sorted(set([satpass['satellite']['id'] for satpass in passes])) - schedule_needed = False - - logging.info("GS | Sch | NORAD | Start time | End time | El | " + - "Priority | Transmitter UUID | Mode | Satellite name ") - for satpass in sorted(scheduledpasses, key=lambda satpass: satpass['tr']): - logging.info( - "%3d | %3.d | %05d | %s | %s | %3.0f | %4.6f | %s | %-10s | %s" % - (ground_station_id, satpass['scheduled'], int( - satpass['id']), satpass['tr'].strftime("%Y-%m-%dT%H:%M:%S"), - satpass['ts'].strftime("%Y-%m-%dT%H:%M:%S"), float(satpass['altt']) if satpass['altt'] - else 0., satpass['priority'], satpass['uuid'], satpass['mode'], satpass['name'].rstrip())) - if not satpass['scheduled']: - schedule_needed = True + print_scheduledpass_summary(scheduledpasses, ground_station_id, printer=logging.info) # Login and schedule passes + schedule_needed = any([not satpass['scheduled'] for satpass in scheduledpasses]) if schedule and schedule_needed: loginUrl = '{}/accounts/login/'.format(settings.NETWORK_BASE_URL) # login URL session = requests.session() @@ -300,10 +285,10 @@ def main(): for satpass in tqdm(scheduledpasses_sorted): if not satpass['scheduled']: logging.debug("Scheduling %05d %s %s %3.0f %4.3f %s %s" % - (int(satpass['id']), satpass['tr'].strftime("%Y-%m-%dT%H:%M:%S"), + (int(satpass['satellite']['id']), satpass['tr'].strftime("%Y-%m-%dT%H:%M:%S"), satpass['ts'].strftime("%Y-%m-%dT%H:%M:%S"), float(satpass['altt']), - satpass['priority'], satpass['uuid'], satpass['name'].rstrip())) - schedule_observation(session, int(satpass['id']), satpass['uuid'], + satpass['priority'], satpass['transmitter']['uuid'], satpass['satellite']['name'].rstrip())) + schedule_observation(session, int(satpass['satellite']['id']), satpass['transmitter']['uuid'], ground_station_id, satpass['tr'].strftime("%Y-%m-%d %H:%M:%S") + ".000", satpass['ts'].strftime("%Y-%m-%d %H:%M:%S") + ".000") diff --git a/test_api.py b/test_api.py new file mode 100755 index 0000000..1507322 --- /dev/null +++ b/test_api.py @@ -0,0 +1,41 @@ +import pytest + +from satnogs_client import get_transmitter_stats, \ + get_active_transmitter_info + +@pytest.mark.skip(reason="SatNOGS API changed, only ['uuid', 'sync_to_db', 'stats'] is left.") +def test_get_transmitter_stats(): + transmitters = get_transmitter_stats() + + for t in transmitters: + if t['uuid'] == "qW5N27QuSrN2JMasbNiUhR": + print(t) + + assert(type(transmitters) == list) + transmitters_keys = transmitters[0].keys() + for key in ['uuid', + 'description', + 'alive', + 'type', + 'mode', + 'satellite', + 'norad_cat_id', + 'success_rate', + 'bad_rate', + 'unvetted_rate', + 'good_count', + 'bad_count', + 'unvetted_count', + 'data_count']: + assert(key in transmitters_keys) + + +def test_get_active_transmitter_info(): + transmitters = get_active_transmitter_info(135000000, + 148000000) + + assert(type(transmitters) == list) + transmitters_keys = transmitters[0].keys() + for key in ['uuid', + 'norad_cat_id']: + assert(key in transmitters_keys) diff --git a/test_cache.py b/test_cache.py index 90bd399..22b87b4 100755 --- a/test_cache.py +++ b/test_cache.py @@ -1,5 +1,3 @@ -#!/usr/bin/env python3 - from datetime import datetime import logging import settings @@ -8,7 +6,7 @@ from cache import CacheManager from satnogs_client import get_groundstation_info -if __name__ == '__main__': +def test_cache(): logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s") diff --git a/test_predictor.py b/test_predictor.py new file mode 100755 index 0000000..e0ecb42 --- /dev/null +++ b/test_predictor.py @@ -0,0 +1,86 @@ +from datetime import datetime + +from cache import CacheManager + +from utils import satellites_from_transmitters, \ + print_scheduledpass_summary + +from auto_scheduler.pass_predictor import create_observer, \ + find_passes +from auto_scheduler.plotting import plot_pass + + +tmin = datetime(2019,11,5,12,7,10) +tmax = datetime(2019,11,5,13,7,10) +min_culmination = 5 +min_pass_duration = 2 +ground_station = {'altitude': 280, + 'antenna': [ { 'antenna_type': 'yagi', + 'band': 'UHF', + 'frequency': 430000000, + 'frequency_max': 470000000}, + { 'antenna_type': 'yagi', + 'band': 'VHF', + 'frequency': 135000000, + 'frequency_max': 146000000}], + 'client_version': '0.9', + 'created': '2015-07-22T14:24:10Z', + 'description': 'Yaesu G-5500 with M2 cross yagi antennas and S-band ' + 'parabolic dish', + 'id': 2, + 'last_seen': '2019-11-05T12:02:10Z', + 'lat': 39.236, + 'lng': -86.305, + 'location': '', + 'min_horizon': 5, + 'name': 'KB9JHU', + 'observations': 20701, + 'qthlocator': 'EM69uf', + 'status': 'Online', + 'target_utilization': 100} + + +passes_0 = {'mytime': '2019/11/5 12:07:10', 'name': 'SPOOQY-1', 'id': '44332', 'tle1': '1 44332U 98067QH 19306.08869167 .00007980 00000-0 12906-3 0 9995\n', 'tle2': '2 44332 51.6412 35.2671 0005344 234.5067 125.5425 15.53818829 21405\n', 'tr': datetime(2019, 11, 5, 12, 22, 27, 60922), 'azr': '319', 'tt': datetime(2019, 11, 5, 12, 26, 26, 616777), 'altt': '30', 'ts': datetime(2019, 11, 5, 12, 30, 24, 387405), 'azs': '100', 'valid': False, 'uuid': '4rK9bvm9bm7BLypA69EnEh', 'success_rate': 0.79, 'good_count': 1754, 'data_count': 2195, 'mode': 'GMSK9k6', 'scheduled': False} + + +def test_predictor(): + cache = CacheManager(ground_station['id'], + ground_station['antenna'], + cache_dir='./tests/cache', + cache_age=24, # hours + max_norad_cat_id=90000) + assert(str(cache.last_update()) == '2019-11-02 19:35:18') + + tles = list(cache.read_tles()) + transmitters = list(cache.read_transmitters()) + + assert(len(tles) == 240) + assert(len(transmitters) == 545) + + # Extract interesting satellites from receivable transmitters + satellites = satellites_from_transmitters(transmitters, tles) + + # Find all passes for station 2, given the transmitters and tles + observer = create_observer(ground_station['lat'], + ground_station['lng'], + ground_station['altitude'], + min_riseset=ground_station['min_horizon']) + + # Loop over satellites + passes = [] + for satellite in satellites: + passes.extend(find_passes(satellite, + observer, + tmin, + tmax, + min_culmination, + min_pass_duration)) + + # print_scheduledpass_summary(passes, ground_station['id']) + assert(len(passes) == 119) + assert(passes[0] == passes_0) + + plot_pass(passes[0]) + +if __name__ == "__main__": + test_predictor() diff --git a/tests/cache/last_update_2.txt b/tests/cache/last_update_2.txt new file mode 100644 index 0000000..985c284 --- /dev/null +++ b/tests/cache/last_update_2.txt @@ -0,0 +1 @@ +2019-11-02T19:35:18 diff --git a/tests/cache/tles_2.txt b/tests/cache/tles_2.txt new file mode 100644 index 0000000..1db0327 --- /dev/null +++ b/tests/cache/tles_2.txt @@ -0,0 +1,720 @@ +OSCAR-7 +1 7530U 74089B 19305.92814073 -.00000040 +00000-0 +28190-4 0 9994 +2 7530 101.7644 272.2804 0012499 083.7421 341.5994 12.53640532057351 +OSCAR-11-UoSAT-2 +1 14781U 84021B 19305.91750328 +.00000081 +00000-0 +16017-4 0 9997 +2 14781 097.6032 324.1357 0007382 225.2420 134.8195 14.83116778897957 +JAS-2 +1 24278U 96046B 19305.82842869 -.00000016 00000-0 22380-4 0 9990 +2 24278 98.5585 80.9031 0349448 247.0303 109.3616 13.53094348146217 +NOAA 15 +1 25338U 98030A 19306.52761191 .00000013 00000-0 24175-4 0 9999 +2 25338 98.7389 327.4967 0010075 199.9893 160.0893 14.25937394116749 +TECHSAT 1B (GO-32) +1 25397U 98043D 19306.38589129 -.00000002 00000-0 18265-4 0 9993 +2 25397 98.7009 244.9385 0001759 39.9049 320.2259 14.23673381107326 +ISS +1 25544U 98067A 19307.63573468 .00016717 00000-0 10270-3 0 9032 +2 25544 51.6431 29.8520 0006375 224.0999 135.9644 15.50254395 36880 +PCSAT (NO-44) +1 26931U 01043C 19306.53211942 -.00000003 00000-0 30457-4 0 9992 +2 26931 67.0531 10.5634 0007483 266.6981 93.3264 14.30557211944546 +CUTE-1 +1 27844U 03031E 19305.92823968 +.00000050 +00000-0 +42236-4 0 9993 +2 27844 098.6850 312.1100 0009853 003.3625 356.7618 14.22202776847610 +XI-IV +1 27848U 03031J 19305.60741202 .00000031 00000-0 33960-4 0 9995 +2 27848 98.6923 312.3210 0009988 16.0968 344.0525 14.21794619847459 +MOZHAYETS 4 (RS-22) +1 27939U 03042A 19306.41300359 .00000130 00000-0 31991-4 0 9994 +2 27939 98.0608 79.7237 0012810 1.0421 359.0822 14.66813780860588 +NOAA 18 +1 28654U 05018A 19306.56657872 .00000092 00000-0 74550-4 0 9990 +2 28654 99.0794 355.4783 0014863 149.9313 210.2714 14.12463527744841 +XI-V +1 28895U 05043F 19305.88982375 +.00000162 +00000-0 +40031-4 0 9993 +2 28895 097.9792 084.1139 0015474 282.5552 077.3920 14.63705888747177 +CUTE17AOD2 +1 32785U 08021C 19305.89500781 .00000225 00000-0 29907-4 0 9992 +2 32785 97.5573 299.2395 0013367 164.9100 195.2519 14.88366475623941 +AAUSAT-II +1 32788U 08021F 19306.00903426 .00000171 00000-0 20631-4 0 9997 +2 32788 97.4947 315.6995 0013271 101.3112 258.9602 14.94841559625286 +DELFI-C3 +1 32789U 08021G 19305.86206243 +.00001393 +00000-0 +96383-4 0 9998 +2 32789 097.4496 351.3259 0012597 026.8848 333.3030 15.07222984627378 +SEEDS II (CO-66) +1 32791U 08021J 19305.95189551 .00000455 00000-0 51392-4 0 9992 +2 32791 97.5321 305.3847 0014260 139.1408 221.0883 14.90899994624413 +YUBILEINY (RS-30) +1 32953U 08025A 19306.46713342 .00000020 00000-0 75656-4 0 9991 +2 32953 82.5040 59.6932 0019583 188.5506 171.5237 12.43092036519300 +PRISM +1 33493U 09002B 19305.84442859 .00000100 00000-0 14269-4 0 9992 +2 33493 98.1244 231.9723 0016323 91.0485 269.2606 14.96786183585519 +KKS-1 +1 33499U 09002H 19305.84978494 .00000125 00000-0 26417-4 0 9992 +2 33499 98.3386 148.8423 0010066 128.2293 231.9822 14.75474890579307 +NOAA 19 +1 33591U 09005A 19306.55577659 .00000020 00000-0 36266-4 0 9992 +2 33591 99.1898 301.0541 0013978 358.9907 1.1234 14.12381719553225 +SWISSCUBE +1 35932U 09051B 19305.77457120 .00000154 00000-0 45788-4 0 9994 +2 35932 98.5995 115.8443 0008669 106.4352 253.7798 14.56324435536580 +BEESAT +1 35933U 09051C 19305.90683328 +.00000114 +00000-0 +36626-4 0 9998 +2 35933 098.6011 117.7942 0006801 116.7388 243.4505 14.56408504536633 +ITUPSAT1 +1 35935U 09051E 19306.45572860 .00000082 00000-0 30028-4 0 9993 +2 35935 98.6120 118.5871 0009149 114.4021 245.8131 14.55563152536533 +XIWANG-1 (HOPE-1) +1 36122U 09072B 19306.08804416 -.00000001 00000-0 10692-3 0 9995 +2 36122 100.0796 302.0859 0007803 36.7313 323.4334 13.16352341474823 +TISAT 1 +1 36799U 10035E 19306.43953265 .00000405 00000-0 46934-4 0 9998 +2 36799 98.1726 103.2851 0012234 3.8952 356.2358 14.91191918505149 +JUGNU +1 37839U 11058B 19306.14711903 .00000340 00000-0 39325-4 0 9993 +2 37839 19.9605 227.2897 0018900 32.0335 105.3507 14.12663391416573 +SRMSAT +1 37841U 11058D 19305.33110544 .00000309 00000-0 24670-4 0 9992 +2 37841 19.9724 291.8213 0011666 246.2411 250.8530 14.10642034415865 +M3-E1P +1 37855U 11061F 19305.83742498 .00002406 00000-0 12659-3 0 9998 +2 37855 101.7201 271.3505 0172915 33.1566 328.0342 15.05718190437265 +HORYU-2 +1 38340U 12025D 19305.86000741 +.00000209 +00000-0 +38494-4 0 9995 +2 38340 098.3146 348.4353 0012450 054.6829 305.5541 14.75768096390836 +AAUSAT 3 +1 39087U 13009B 19306.49347801 .00000110 00000-0 52881-4 0 9995 +2 39087 98.4722 150.6100 0011629 240.3196 119.6837 14.35762205350107 +STRAND-1 +1 39090U 13009E 19306.16221257 .00000042 00000-0 29842-4 0 9994 +2 39090 98.4740 149.7519 0008121 240.7072 119.3302 14.35103279349960 +SOMP +1 39134U 13015E 19306.18640956 .00001747 00000-0 87741-4 0 9998 +2 39134 64.8623 298.1326 0037273 281.5211 78.1732 15.20455615361343 +BEESAT-2 +1 39136U 13015G 19306.17811225 .00001056 00000-0 62552-4 0 9994 +2 39136 64.8682 322.6182 0029775 291.9436 67.8525 15.17112585360879 +CUBEBUG-1 (CAPITAN BETO) +1 39153U 13018D 19306.21091677 .00000241 00000-0 38291-4 0 9990 +2 39153 97.9815 43.5926 0018223 114.6912 245.6199 14.80617174352017 +ESTCUBE 1 +1 39161U 13021C 19306.46945707 .00000228 00000-0 43862-4 0 9997 +2 39161 97.9807 28.9075 0008422 247.7647 112.2691 14.72244749348490 +ZACUBE +1 39417U 13066B 19305.56225941 .00000243 00000-0 36928-4 0 9993 +2 39417 97.5623 311.4269 0057750 309.4686 50.1427 14.81170890321154 +TRITON-1 +1 39427U 13066M 19305.92658920 +.00000230 +00000-0 +44297-4 0 9995 +2 39427 097.6942 275.0106 0115219 089.3017 272.1389 14.67898385318139 +DELFI-N3XT +1 39428U 13066N 19305.89449016 +.00000421 +00000-0 +74306-4 0 9992 +2 39428 097.7055 273.1235 0121984 100.7739 260.7226 14.67480784317900 +FIRST-MOVE +1 39439U 13066Z 19305.82408801 .00000468 00000-0 63596-4 0 9994 +2 39439 97.5703 311.8015 0064186 308.7533 50.7955 14.81938461321107 +CUBEBUG-2 (LO-74) +1 39440U 13066AA 19305.95672770 .00000260 00000-0 43111-4 0 9999 +2 39440 97.6114 296.4100 0080321 3.3908 356.7830 14.75908589320079 +FUNCUBE-1 +1 39444U 13066AE 19305.82495898 .00000282 00000-0 41033-4 0 9998 +2 39444 97.5591 313.7467 0056743 301.7164 57.8526 14.82001240320099 +UWE-3 +1 39446U 13066AG 19305.93045224 +.00000245 +00000-0 +39182-4 0 9997 +2 39446 097.5862 303.5357 0069415 336.6454 023.1608 14.78443489318809 +SPROUT +1 39770U 14029E 19306.32943542 .00000931 00000-0 10884-3 0 9990 +2 39770 97.8892 48.7855 0009172 4.9371 355.1935 14.87485598295142 +UNISAT-6 +1 40012U 14033C 19305.85086479 +.00000201 +00000-0 +37278-4 0 9997 +2 40012 097.7367 166.4593 0058909 019.7785 340.5689 14.74026172288748 +BUGSAT-1 (TITA) +1 40014U 14033E 19306.48825289 .00000604 00000-0 60032-4 0 9990 +2 40014 98.0308 257.1978 0030892 329.4128 30.5286 14.95340084292947 +DUCHIFAT-1 +1 40021U 14033M 19305.74120325 .00000620 00000-0 68964-4 0 9995 +2 40021 97.9269 230.7958 0012246 327.5989 32.4475 14.90723001291816 +NANOSAT-C-BR1 +1 40024U 14033Q 19305.77304240 .00000345 00000-0 41727-4 0 9993 +2 40024 97.9148 227.8924 0011598 331.9571 28.1020 14.89922738291702 +QB50P1 +1 40025U 14033R 19305.78362470 .00000361 00000-0 44382-4 0 9992 +2 40025 97.9054 225.2351 0011943 338.4048 21.6663 14.89011127291577 +QB50P2 +1 40032U 14033Y 19305.76064932 .00000302 00000-0 38540-4 0 9994 +2 40032 97.8967 223.1373 0011270 335.1782 24.8891 14.88542252291485 +POLYITAN-1 +1 40042U 14033AJ 19306.41116739 .00000375 00000-0 46128-4 0 9992 +2 40042 97.9136 226.2477 0013916 324.9991 35.0310 14.88730163291571 +TIGRISAT +1 40043U 14033AK 19305.84130118 .00000157 00000-0 30565-4 0 9992 +2 40043 97.7362 167.7318 0060501 18.5968 341.7433 14.74306596288669 +AISAT +1 40054U 14034B 19305.86518605 .00000428 00000-0 67073-4 0 9993 +2 40054 98.2486 71.2185 0013759 140.9140 219.3067 14.77872393287848 +VELOX-I +1 40057U 14034E 19306.39068177 .00000379 00000-0 60536-4 0 9991 +2 40057 98.2521 72.5626 0011390 150.8957 209.2907 14.77737583287954 +DX1 +1 40071U 14037C 19306.41007123 .00000121 00000-0 23026-4 0 9995 +2 40071 98.4420 107.4185 0009059 141.2040 218.9839 14.81304144287492 +UKUBE-1 +1 40074U 14037F 19306.42977026 .00000380 00000-0 52739-4 0 9997 +2 40074 98.4482 116.2734 0005327 124.0485 236.1234 14.84125483287937 +FIREBIRD-3 +1 40377U 15003B 19305.78172046 .00003057 00000-0 12206-3 0 9992 +2 40377 99.1197 313.9856 0125908 357.5833 2.4772 15.19226344262585 +FIREBIRD 4 +1 40378U 15003C 19306.29501976 .00002749 00000-0 11013-3 0 9990 +2 40378 99.1201 314.6890 0126049 355.7459 4.2688 15.19240395262666 +GRIFEX +1 40379U 15003D 19306.45679355 .00001751 00000-0 77568-4 0 9996 +2 40379 99.1227 308.1117 0134788 15.8946 344.6448 15.15796333262309 +EXOCUBE (CP10) +1 40380U 15003E 19305.95851081 .00002044 00000-0 93672-4 0 9990 +2 40380 99.1267 303.8263 0139998 29.7463 331.1631 15.13786319261984 +DEORBITSAIL +1 40719U 15032E 19305.91375214 +.00000422 +00000-0 +67190-4 0 9997 +2 40719 097.8910 194.8492 0015224 223.7998 136.2006 14.76828671232362 +NUDT-PHONESAT +1 40900U 15049B 19306.44002939 .00002617 00000-0 11331-3 0 9990 +2 40900 97.4364 314.4638 0014286 67.5720 38.4268 15.23221221228470 +XW-2A +1 40903U 15049E 19306.44719186 .00002558 00000-0 61331-4 0 9992 +2 40903 97.3214 349.8943 0013985 17.3072 107.0665 15.42270896231320 +XW-2C +1 40906U 15049H 19306.39184111 .00000877 00000-0 49253-4 0 9994 +2 40906 97.4717 306.2470 0016439 85.6859 22.0752 15.15807358227701 +XW-2D +1 40907U 15049J 19306.41781350 .00000867 00000-0 48470-4 0 9995 +2 40907 97.4699 305.9562 0015813 82.8849 23.1473 15.16006043227729 +LILACSAT-2 +1 40908U 15049K 19306.49651398 .00000332 00000-0 21886-4 0 9991 +2 40908 97.4837 304.7004 0017517 89.5632 61.6336 15.13879852227503 +XW-2E +1 40909U 15049L 19306.30914698 .00001177 00000-0 61104-4 0 9992 +2 40909 97.4624 308.9160 0015110 78.3635 48.8235 15.17993814227912 +XW-2F +1 40910U 15049M 19306.45583372 .00001199 00000-0 62981-4 0 9999 +2 40910 97.4646 308.2035 0016351 75.5899 83.4797 15.17506707227752 +XW-2B +1 40911U 15049N 19306.39114800 .00000973 00000-0 54074-4 0 9992 +2 40911 97.4718 306.6006 0015706 83.6959 24.0327 15.15936037227619 +KAITUO 1B +1 40912U 15049P 19306.47499743 .00001569 00000-0 76159-4 0 9994 +2 40912 97.4499 312.0793 0016360 58.4107 97.5329 15.19846870228080 +TIANWANG 1C (TW-1C) +1 40926U 15051B 19306.48904255 .00018162 00000-0 23839-3 0 9995 +2 40926 97.1188 352.5922 0006171 211.0898 256.1514 15.58563344231441 +TIANWANG 1B (TW-1B) +1 40927U 15051C 19306.40385530 .00016358 00000-0 22964-3 0 9990 +2 40927 97.1216 351.5952 0006010 225.4199 261.5435 15.56778058231261 +TIANWANG 1A (TW-1A) +1 40928U 15051D 19306.57596082 .00003587 00000-0 87567-4 0 9996 +2 40928 97.1333 334.8163 0009329 301.7153 209.4900 15.41457624230257 +LQSAT +1 40958U 15057A 19305.75500997 .00000029 00000-0 12109-4 0 9992 +2 40958 97.8848 11.1759 0018682 160.6728 199.5193 14.73094411218834 +HORYU-4 +1 41340U 16012D 19305.53749456 .00000563 00000-0 35981-4 0 9997 +2 41340 31.0060 349.4317 0014019 36.6057 323.5535 15.01347800203445 +OUFTI-1 +1 41458U 16025C 19305.73306895 .00001937 00000-0 10213-3 0 9995 +2 41458 98.1007 39.4998 0164169 259.4658 98.8037 15.06136750193043 +E-ST@R-II +1 41459U 16025D 19306.51369999 .00001670 00000-0 89376-4 0 9998 +2 41459 98.1001 39.8983 0165283 258.2892 99.9737 15.05757502193133 +AAUSAT 4 +1 41460U 16025E 19306.51322257 .00002445 00000-0 12553-3 0 9999 +2 41460 98.0947 41.4997 0155257 249.5946 108.8532 15.07764642193284 +SURFSAT +1 43614U 18070B 19305.86398058 .00003311 00000-0 88123-4 0 9993 +2 43614 93.0370 59.9348 0017610 134.0681 226.2027 15.38114404 63335 +CP-7-DAVE +1 43615U 18070C 19305.87768354 +.00003167 +00000-0 +84544-4 0 9997 +2 43615 093.0372 059.9390 0017808 133.4839 226.7899 15.38013496063333 +IRVINE01 +1 43693U 18088D 19305.87994719 +.00003073 +00000-0 +13266-3 0 9996 +2 43693 085.0384 228.1490 0020501 055.8666 304.4517 15.21875351054073 +OBJECT-H +1 43856U 18104H 19305.61110591 +.00000041 +00000-0 +00000-0 0 9997 +2 43856 085.0308 327.0851 0013294 201.3964 158.6763 15.20425997048666 +CP9 +1 44360U 19036X 19303.50230987 .00025638 00000-0 34982-3 0 9999 +2 44360 28.5166 89.0791 0373696 18.2558 343.1053 15.03351578 18987 +LIGHTSAIL +1 44420U 19036AC 19305.72981294 +.00007052 +00000-0 +16074-2 0 9997 +2 44420 024.0065 110.5261 0012993 175.8482 184.2156 14.53519074016988 +BRICSAT-P +1 40655U 15025E 19305.51093933 +.00974410 +62824-3 +69566-3 0 9630 +2 40655 54.9492 118.1029 0013750 30.0547 329.9317 16.15339363135319 +PSAT +1 40654U 15025D 19305.43823721 +.00016684 +00000+0 +22111-3 0 7622 +2 40654 54.9897 272.6550 0127721 316.7526 42.3613 15.49344901133477 +MCUBED-2 +1 39469U 13072H 19305.45721087 +.00001063 +00000+0 +11051-3 0 7567 +2 39469 120.4910 94.8561 0258688 22.6330 338.5865 14.78578788127861 +BISONSAT +1 40968U 15058E 19305.10480711 +.00000709 +00000+0 +94886-4 0 8539 +2 40968 64.7746 101.9334 0180896 157.8367 203.0689 14.77101341127819 +Fox-1A +1 40967U 15058D 19305.50988776 +.00000308 +00000+0 +52816-4 0 8550 +2 40967 64.7747 105.9524 0183920 158.0633 202.8481 14.76015521127780 +OOREOS +1 37224U 10062C 19305.51626224 +.00000167 +00000-0 +28182-4 0 07170 +2 37224 071.9725 093.1624 0018754 309.9827 049.9690 14.82294836128240 +Aeneas +1 38760U 12048C 19305.52719926 +.00002480 +00000+0 +14978-3 0 8172 +2 38760 64.6583 122.0897 0133553 204.1150 155.3686 15.06186712130285 +LUSAT (LO-19) +1 20442U 90005G 19305.90143900 .00000017 00000-0 22548-4 0 9993 +2 20442 98.6620 247.7474 0012822 106.3301 253.9294 14.32936536555886 +SAUDISAT 1C (SO-50) +1 27607U 02058C 19305.63717160 .00000032 00000-0 25345-4 0 9994 +2 27607 64.5562 353.9576 0073726 230.0222 129.4392 14.75585003907099 +FALCONSAT-3 +1 30776U 07006E 19305.43153403 .00002938 00000-0 81331-4 0 9999 +2 30776 35.4353 304.0707 0003518 262.1789 97.8538 15.36716260701578 +BEESAT-3 +1 39135U 13015F 19305.49599860 .00001208 00000-0 68599-4 0 9991 +2 39135 64.8671 320.5995 0038601 287.2034 72.4868 15.17696147360856 +GOMX-1 +1 39430U 13066Q 19306.41648250 .00000180 00000-0 41536-4 0 9996 +2 39430 97.7625 254.0710 0150856 182.6986 177.3426 14.59302778316546 +IO-86 +1 40931U 15052B 19302.40879780 .00000597 00000-0 -58682-5 0 9994 +2 40931 5.9847 190.0824 0011407 235.6408 124.5275 14.76615343220917 +ATHENOXAT 1 +1 41168U 15077C 19306.17273886 .00002122 00000-0 76697-4 0 9997 +2 41168 14.9883 295.7048 0011536 191.0234 168.9834 15.13883319214699 +CHUBUSAT-2 +1 41338U 16012B 19306.49162716 .00000357 00000-0 21113-4 0 9991 +2 41338 31.0043 355.3616 0013818 18.0159 342.0964 15.00202773203477 +CHUBUSAT-3 +1 41339U 16012C 19306.51179014 .00000391 00000-0 23631-4 0 9999 +2 41339 31.0118 353.1495 0013436 25.2520 334.8772 15.00374702203478 +NUSAT-1 (FRESCO) +1 41557U 16033B 19306.51357535 .00001428 00000-0 55722-4 0 9998 +2 41557 97.4141 33.2087 0014070 167.8699 192.2882 15.27495816190977 +NUSAT-2 (BATATA) +1 41558U 16033C 19306.44271732 .00001615 00000-0 59166-4 0 9999 +2 41558 97.4175 34.6338 0013118 167.2049 192.9526 15.29416049191037 +LAPAN-A3 +1 41603U 16040E 19306.47361218 .00000292 00000-0 16797-4 0 9993 +2 41603 97.3442 1.6870 0011804 283.1631 201.9750 15.19760776186519 +SWAYAM +1 41607U 16040J 19305.82757214 .00001669 00000-0 72568-4 0 9997 +2 41607 97.3499 5.2452 0011609 272.4202 87.5706 15.23612827186606 +PRATHAM +1 41783U 16059A 19305.77036464 .00000059 00000-0 20646-4 0 9995 +2 41783 98.0514 2.2327 0032563 317.7221 42.1471 14.63017553165444 +ALSAT 1N +1 41789U 16059G 19306.39446259 .00000112 00000-0 30150-4 0 9998 +2 41789 98.0544 5.1377 0027143 304.4419 55.4220 14.64272545165657 +NAYIF-1 (EO-88) +1 42017U 17008BX 19305.85682838 .00001709 00000-0 69557-4 0 9999 +2 42017 97.3889 11.4654 0007575 58.6941 301.5038 15.25853018150686 +NSIGHT +1 42726U 98067MF 19306.47210474 .00034687 00000-0 20381-3 0 9994 +2 42726 51.6339 326.3435 0005457 8.2732 351.8358 15.77890592139367 +ZHUHAI-1 02 (CAS-4B) +1 42759U 17034B 19306.56182861 .00000504 00000-0 44257-4 0 9993 +2 42759 43.0180 199.0124 0010949 27.8724 38.5711 15.09673951131527 +ZHUHAI-1 01 (CAS-4A) +1 42761U 17034D 19306.19991197 .00000417 00000-0 38909-4 0 9995 +2 42761 43.0182 200.4496 0011436 27.0042 108.9325 15.09750657131463 +UCLSAT +1 42765U 17036A 19305.68522763 .00001463 00000-0 65043-4 0 9994 +2 42765 97.3351 0.6850 0013049 109.3398 250.9251 15.23001110131163 +NIUSAT +1 42766U 17036B 19305.66896541 .00001127 00000-0 53220-4 0 9992 +2 42766 97.3346 358.7499 0017292 102.6221 257.6949 15.21315268130908 +LITUANICASAT-2 +1 42768U 17036D 19305.78441677 .00002470 00000-0 10693-3 0 9991 +2 42768 97.3391 0.4766 0016685 101.1671 259.1443 15.23221433131028 +AALTO-1 +1 42775U 17036L 19305.74205684 .00000878 00000-0 41934-4 0 9994 +2 42775 97.3332 359.1655 0015636 101.9276 258.3714 15.21508554130892 +URSA MAIOR +1 42776U 17036M 19306.15073314 .00000958 00000-0 45283-4 0 9994 +2 42776 97.3341 359.7575 0015460 100.6281 259.6697 15.21657804130962 +MAX VALIER SAT +1 42778U 17036P 19305.74351762 .00001121 00000-0 51680-4 0 9997 +2 42778 97.3386 0.3068 0014017 105.3696 254.9090 15.22221840130938 +PEGASUS +1 42784U 17036V 19305.79814106 .00001305 00000-0 58781-4 0 9998 +2 42784 97.3355 0.5708 0013612 109.7141 250.5565 15.22734470130978 +NUDTSAT +1 42787U 17036Y 19306.55950580 .00002675 00000-0 11374-3 0 9990 +2 42787 97.3374 2.2308 0012940 104.2792 255.9884 15.23823351130984 +SUCHAI +1 42788U 17036Z 19305.83227788 .00001530 00000-0 67520-4 0 9992 +2 42788 97.3360 0.9995 0013192 108.7324 251.5346 15.23193536131078 +SKCUBE +1 42789U 17036AA 19305.79195349 .00001454 00000-0 64530-4 0 9998 +2 42789 97.3356 0.8745 0013065 108.9240 251.3414 15.23074870130986 +VZLUSAT-1 +1 42790U 17036AB 19305.82446514 .00001920 00000-0 82495-4 0 9995 +2 42790 97.3371 1.5118 0012655 107.8243 252.4376 15.23806408131027 +ROBUSTA-1B +1 42792U 17036AD 19305.64179629 .00001508 00000-0 66474-4 0 9998 +2 42792 97.3358 0.9113 0012622 109.7843 250.4757 15.23252763130987 +D-SAT +1 42794U 17036AF 19305.69584990 .00000224 00000-0 24605-4 0 9990 +2 42794 97.5241 344.3038 0127591 48.7916 312.4219 14.91159145128600 +TECHNOSAT +1 42829U 17042E 19306.45125015 .00000210 00000-0 26559-4 0 9995 +2 42829 97.5452 193.5060 0013495 330.3698 29.6755 14.91017220125310 +SIMPL +1 42983U 98067NF 19306.47586888 .00003448 00000-0 48559-4 0 9993 +2 42983 51.6405 13.1307 0003487 283.4560 76.6044 15.59733163114684 +RADFXSAT (FOX-1B) +1 43017U 17073E 19305.82376598 .00000698 00000-0 59025-4 0 9997 +2 43017 97.7218 221.8525 0259248 75.1805 287.7970 14.78671826105378 +ECAMSAT +1 43019U 98067NG 19306.53108255 .00006284 00000-0 74234-4 0 9999 +2 43019 51.6414 5.3057 0003756 267.9343 92.1221 15.62787893197117 +PICSAT +1 43132U 18004X 19305.84197189 .00001543 00000-0 66902-4 0 9991 +2 43132 97.4751 13.3125 0010917 131.1414 229.0767 15.23854770100237 +FOX-1D (AO-92) +1 43137U 18004AC 19305.84555488 .00001166 00000-0 51531-4 0 9999 +2 43137 97.4740 13.2551 0010476 132.4720 227.7404 15.23683840100237 +XIAOXIANG-2 +1 43155U 18008A 19306.54651376 .00001446 00000-0 89403-4 0 9994 +2 43155 97.4748 16.1329 0016825 209.5296 262.3308 15.11312332 98492 +ZHOU ENLAI +1 43156U 18008B 19306.43689988 .00000763 00000-0 49680-4 0 9997 +2 43156 97.4788 15.8998 0013982 206.8558 251.1505 15.10819572 98444 +QUANTUTONG 1 +1 43158U 18008D 19306.44696852 .00000928 00000-0 60277-4 0 9996 +2 43158 97.4724 15.2413 0013064 205.0748 218.2385 15.10395509 98400 +S-NET D +1 43186U 18014G 19305.74546309 .00000352 00000-0 35881-4 0 9991 +2 43186 97.7003 212.1501 0009649 270.3277 89.6839 14.96697507 95481 +S-NET B +1 43187U 18014H 19305.81213505 .00000348 00000-0 35551-4 0 9998 +2 43187 97.7000 212.2006 0009647 269.9997 90.0119 14.96697576 95495 +S-NET A +1 43188U 18014J 19305.74510599 .00000341 00000-0 34897-4 0 9999 +2 43188 97.7003 212.1559 0009642 270.4643 89.5474 14.96697234 95488 +S-NET C +1 43189U 18014K 19305.67860162 .00000343 00000-0 35068-4 0 9999 +2 43189 97.6999 212.0658 0009645 270.4516 89.5601 14.96696879 94028 +FENGMANIU-1 (FMN-1) +1 43192U 18015A 19306.46672565 .00003101 00000-0 12783-3 0 9993 +2 43192 97.4167 72.6613 0016393 167.1893 261.2301 15.24716739 97159 +SHAONIAN XING +1 43199U 18015H 19306.43952168 .00002219 00000-0 91190-4 0 9996 +2 43199 97.3954 71.4650 0016962 178.2857 269.9408 15.25113255 97206 +1KUNS-PF +1 43466U 98067NP 19306.51225041 .00027272 00000-0 20813-3 0 9999 +2 43466 51.6360 357.5154 0002159 5.3758 354.7263 15.71992073 84399 +UBAKUSAT +1 43467U 98067NQ 19306.45717457 .00013914 00000-0 13821-3 0 9999 +2 43467 51.6371 6.1803 0001087 261.6394 98.4478 15.66064467 84281 +BATSU-CS1 (IRAZU) +1 43468U 98067NR 19306.34547224 .00044464 00000-0 25727-3 0 9993 +2 43468 51.6372 351.0769 0003088 19.1814 340.9303 15.78127478184459 +ENDUROSAT ONE +1 43551U 98067NZ 19306.18393384 .00021448 00000-0 20195-3 0 9995 +2 43551 51.6370 9.6059 0005506 316.5199 43.5362 15.67024885 74449 +EQUISAT +1 43552U 98067PA 19305.66120604 .00017288 00000-0 17816-3 0 9994 +2 43552 51.6387 15.1615 0005748 308.9360 51.1122 15.64921199 74283 +UITMSAT-1 +1 43589U 98067PD 19306.47016372 .00016007 00000-0 16170-3 0 9990 +2 43589 51.6359 11.4730 0005339 322.2419 37.8201 15.65496753 70143 +MAYA-1 +1 43590U 98067PE 19306.46378073 .00016057 00000-0 16210-3 0 9990 +2 43590 51.6363 11.4368 0005367 322.2438 37.8180 15.65510489 70070 +BHUTAN-1 +1 43591U 98067PF 19305.61944727 .00020684 00000-0 20681-3 0 9990 +2 43591 51.6368 15.5843 0005584 319.1651 40.8926 15.65546118 69946 +SIRIUSSAT-1 +1 43595U 98067PG 19306.19539441 .00016985 00000-0 17805-3 0 9994 +2 43595 51.6362 14.8963 0002854 287.5373 72.5310 15.64512750 69184 +SIRIUSSAT-2 +1 43596U 98067PH 19306.11230954 .00016823 00000-0 17761-3 0 9996 +2 43596 51.6373 15.8924 0003295 283.8680 76.1949 15.64338669 69166 +TANUSHA-3 +1 43597U 98067PJ 19306.19355527 .00025272 00000-0 23686-3 0 9990 +2 43597 51.6353 11.8432 0003366 310.2697 49.8005 15.67038849 69224 +ELFIN-B +1 43616U 18070D 19305.75677087 .00005123 00000-0 13279-3 0 9997 +2 43616 93.0334 59.7953 0018355 137.1686 223.1002 15.38883317 63338 +ELFIN-A +1 43617U 18070E 19305.87561702 .00004902 00000-0 12675-3 0 9990 +2 43617 93.0387 60.1663 0017646 133.5721 226.7002 15.38972359 63359 +STARS-ME +1 43640U 98067PQ 19306.43797125 .00008537 00000-0 10712-3 0 9991 +2 43640 51.6378 20.3125 0004520 255.9431 104.1060 15.60635354 61065 +CUBEBEL-1 (BSUSAT-1) +1 43666U 18083E 19306.43403955 .00001148 00000-0 59978-4 0 9993 +2 43666 97.5105 329.9334 0016568 75.0626 41.2685 15.17803672 56028 +CHANGSHAGAOXIN (TY 4-01) +1 43669U 18083H 19306.46825036 .00000713 00000-0 39495-4 0 9996 +2 43669 97.4979 328.8575 0012465 69.5514 290.7056 15.16953850 55968 +TEN-KOH +1 43677U 18084G 19305.86374277 .00000293 00000-0 36022-4 0 9991 +2 43677 97.8645 58.8091 0015870 187.8864 172.2107 14.90209813 54895 +DIWATA-2B +1 43678U 18084H 19306.52605023 -.00000279 00000-0 -22062-4 0 9997 +2 43678 97.8646 60.2874 0009063 204.3812 155.6958 14.91578905 55047 +REAKTOR HELLO WORLD +1 43743U 18096AA 19306.55732405 .00001730 00000-0 68114-4 0 9990 +2 43743 97.4470 16.3295 0017252 208.9480 263.7854 15.26881679 51619 +MinXSS-2 +1 43758U 18099A 19304.17809161 .00000001 00000-0 53176-5 0 9992 +2 43758 97.7335 14.5620 0014478 235.6752 124.3099 14.95494400 49534 +FOX-1CLIFF (AO-95) +1 43770U 18099N 19305.72509128 .00000186 00000-0 22350-4 0 9991 +2 43770 97.7330 15.7707 0013489 237.0156 122.9768 14.94839588 49746 +RANGE-A +1 43772U 18099Q 19305.77035850 .00000324 00000-0 34907-4 0 9999 +2 43772 97.7391 16.0861 0013233 223.0842 136.9343 14.94976784 49748 +RANGE-B +1 43773U 18099R 19305.78226855 -.00000124 00000-0 -60922-5 0 9995 +2 43773 97.7278 15.6313 0012629 223.0597 136.9636 14.94857148 49742 +MOVE-II +1 43780U 18099Y 19305.79798679 .00000614 00000-0 61138-4 0 9993 +2 43780 97.7322 15.9277 0012592 233.8820 126.1236 14.95171475 49749 +SNUSAT-2 +1 43782U 18099AA 19305.79503018 .00000261 00000-0 29058-4 0 9999 +2 43782 97.7324 15.9683 0011923 222.3342 137.6959 14.95117276 49752 +SNUGLITE +1 43784U 18099AC 19305.84438573 -.00000075 00000-0 -15608-5 0 9992 +2 43784 97.7293 15.9096 0014033 231.6397 128.3564 14.95207060 49777 +ITASAT 1 +1 43786U 18099AE 19305.77545797 -.00000068 00000-0 -87617-6 0 9995 +2 43786 97.7347 16.0743 0014102 230.7882 129.2087 14.95202295 49760 +EAGLET-I +1 43790U 18099AJ 19306.15980073 .00000528 00000-0 52766-4 0 9997 +2 43790 97.7338 16.6064 0012248 233.6270 126.3821 14.95578228 49529 +ESEO +1 43792U 18099AL 19305.89131943 .00000413 00000-0 42404-4 0 9994 +2 43792 97.7316 16.2619 0012043 231.3869 128.6274 14.95541136 49548 +CSIM-FD +1 43793U 18099AM 19305.79068904 .00000376 00000-0 38843-4 0 9990 +2 43793 97.7284 16.0604 0012261 229.1379 130.8781 14.95812505 49503 +ASTROCAST 0.1 +1 43798U 18099AS 19305.84213670 -.00000229 00000-0 -15331-4 0 9999 +2 43798 97.7326 16.3519 0011615 213.5285 146.5202 14.95775301 49771 +JY1SAT (JO-97) +1 43803U 18099AX 19306.48383734 .00000799 00000-0 77604-4 0 9997 +2 43803 97.7305 16.6528 0014106 228.2240 131.7776 14.95348390 49866 +SUOMI-100 +1 43804U 18099AY 19305.74743490 .00000818 00000-0 79262-4 0 9999 +2 43804 97.7304 15.9227 0014137 231.0641 128.9320 14.95343601 49767 +AL-FARABI 2 +1 43805U 18099AZ 19306.47296883 .00000756 00000-0 73545-4 0 9999 +2 43805 97.7305 16.6701 0014323 228.5700 131.4291 14.95419663 49878 +PW-SAT2 +1 43814U 18099BJ 19306.53981271 .00024273 00000-0 17870-2 0 9995 +2 43814 97.7768 19.5750 0011758 208.4347 151.6234 15.03294377 49380 +CHOMPTT +1 43855U 18104G 19306.54142286 .00001047 00000-0 43159-4 0 9998 +2 43855 85.0370 325.9632 0017902 163.2358 196.9480 15.22575941 48849 +ISAT +1 43879U 18111D 19304.36617193 .00000867 00000-0 82279-4 0 9999 +2 43879 97.7093 210.3561 0011781 298.1469 61.8561 14.96071745 44079 +UWE-4 +1 43880U 18111E 19306.32232577 -.00000133 00000-0 -65914-5 0 9994 +2 43880 97.7101 212.4365 0011101 292.0673 67.9369 14.96313071 44379 +Sparrow +1 43881U 18111F 19304.30665079 .00000569 00000-0 55377-4 0 9990 +2 43881 97.7109 210.4887 0011057 298.4484 61.5623 14.96361461 44071 +Lume 1 +1 43908U 18111AJ 19303.77247084 .00001309 00000-0 55726-4 0 9993 +2 43908 97.2788 205.2959 0020010 236.0733 123.8603 15.24566543 46875 +FO-98 +1 43933U 19003B 19304.41642656 .00001039 00000-0 48598-4 0 9997 +2 43933 97.2655 357.5279 0017302 336.6637 80.9752 15.21792887 43540 +FO-99 +1 43937U 19003F 19304.38439904 .00001878 00000-0 80289-4 0 9991 +2 43937 97.2616 358.1287 0023188 320.3247 95.4737 15.23841362 43597 +Delphini 1 +1 44030U 98067PW 19304.27160105 .00020443 00000-0 26155-3 0 9995 +2 44030 51.6380 36.6050 0004504 297.2710 62.7824 15.59178960 42520 +MYSat 1 +1 44045U 18092F 19304.21094826 .00004275 00000-0 13280-3 0 9991 +2 44045 51.6439 79.2320 0011626 205.2520 154.7890 15.35495319 39902 +AstroCast 0.2 +1 44083U 19018F 19304.23983056 .00000711 00000-0 34666-4 0 9999 +2 44083 97.4534 3.0554 0012383 256.2091 103.7767 15.21499619 32375 +AISTechSat 3 +1 44103U 19018AB 19304.40439906 .00001265 00000-0 57080-4 0 9991 +2 44103 97.4415 3.2634 0011850 275.4185 145.5274 15.22806234 32421 +AISat 1 +1 44104U 19018AC 19304.28288249 .00001091 00000-0 37790-4 0 9993 +2 44104 97.4945 7.1617 0057480 310.7645 48.8614 15.30663172 32599 +Raavana-1 +1 44329U 98067QE 19303.71478629 .00010495 00000-0 16796-3 0 9993 +2 44329 051.6414 047.1638 0006607 221.3251 138.7240 15.53716529021089 +Uguisu +1 44330U 98067QF 19303.65392661 .00010055 00000-0 16150-3 0 9995 +2 44330 051.6415 047.5068 0006582 219.4671 140.5841 15.53669987021059 +NepaliSat-1 +1 44331U 98067QG 19303.71176654 .00010512 00000-0 16801-3 0 9996 +2 44331 51.6417 47.1444 0006653 222.6790 137.3685 15.53750448 21078 +Armadillo +1 44352U 19036P 19303.53810651 .00012867 00000-0 20212-3 0 9996 +2 44352 028.5322 092.5609 0378498 012.7192 348.2614 14.99131921019046 +NO-104 +1 44354U 19036R 19303.44790142 .00008162 00000-0 12275-3 0 9993 +2 44354 28.5310 92.7599 0381805 12.0029 348.9373 14.99033438 19068 +NO-103 +1 44355U 19036S 19303.45783489 .00014472 00000-0 21933-3 0 9993 +2 44355 28.5312 91.8745 0375455 13.4823 347.5493 15.00570189 19076 +Oculus-ASR +1 44356U 19036T 19303.76408745 .00039458 00000-0 55634-3 0 9993 +2 44356 028.5240 086.4785 0358741 022.1499 339.4177 15.05760700019160 +Taurus 1 +1 44530U 19059C 19304.34457400 -.00000180 00000-0 -38362-4 0 9991 +2 44530 98.5841 18.1321 0015531 126.9698 233.2917 14.45256277 7103 +OPS 6582 (TRANSIT 5B-5) +1 00965U 64083D 19306.19672509 .00000020 00000-0 13716-4 0 9993 +2 00965 90.0199 193.1233 0041498 147.6656 323.9311 13.56734319716157 +NOAA 9 +1 15427U 84123A 19306.52818904 .00000004 00000-0 24977-4 0 9990 +2 15427 98.9087 255.3399 0015115 9.5560 104.2339 14.16080512801263 +METOP-A +1 29499U 06044A 19305.89481663 -.00000003 00000-0 17989-4 0 9992 +2 29499 98.5583 355.1040 0001106 126.5526 345.3984 14.21487019676413 +METOP-B +1 38771U 12049A 19306.14640821 .00000000 00000-0 20192-4 0 9995 +2 38771 98.7264 3.5402 0000547 27.9593 24.9043 14.21482299369584 +SARAL +1 39086U 13009A 19306.11704506 -.00000010 00000-0 12545-4 0 9995 +2 39086 98.5411 130.1977 0001037 139.1033 221.0229 14.32013747349326 +ICUBE-1 +1 39432U 13066S 19305.75030079 .00000238 00000-0 29728-4 0 9991 +2 39432 97.5333 342.4508 0031119 219.5480 140.3468 14.90423575323074 +VELOX-PII +1 39438U 13066Y 19305.92931999 .00000207 00000-0 34587-4 0 9992 +2 39438 97.5888 302.3630 0070119 340.7930 19.0640 14.77931610320537 +HINCUBE +1 39445U 13066AF 19305.90400562 .00000257 00000-0 38151-4 0 9991 +2 39445 97.5604 313.7113 0056795 302.7418 56.8329 14.81851552319471 +AIST-1 (RS-41) +1 39492U 13078C 19306.41836616 .00000191 00000-0 18151-4 0 9991 +2 39492 82.4182 72.6667 0021174 43.1276 317.1592 14.87852126317313 +CANX-4 +1 40055U 14034C 19306.36716211 .00000102 00000-0 23114-4 0 9990 +2 40055 98.2321 64.2903 0014598 165.6661 194.4964 14.74874025287515 +CANX-5 +1 40056U 14034D 19305.89356205 .00000113 00000-0 24773-4 0 9995 +2 40056 98.2321 63.8049 0014571 167.3722 192.7854 14.74864184278222 +METEOR-M 2 +1 40069U 14037A 19306.42302397 .00000009 00000-0 23755-4 0 9998 +2 40069 98.5356 347.2081 0004948 214.6316 145.4539 14.20666580275834 +GALASSIA +1 41170U 15077E 19306.26798027 .00002021 00000-0 70414-4 0 9998 +2 41170 14.9889 287.6512 0012898 217.7255 142.2162 15.14204359214775 +VELOX-II +1 41171U 15077F 19305.52912281 .00001672 00000-0 57659-4 0 9994 +2 41171 14.9920 330.0505 0008861 117.6638 242.4583 15.11377335214339 +AIST-2D (RS-48) +1 41465U 16026B 19306.44718517 .00001993 00000-0 62600-4 0 9991 +2 41465 97.1723 198.0387 0011486 359.9050 103.5473 15.34096484196461 +SAMSAT-218D +1 41466U 16026C 19306.54182961 .00008054 00000-0 18087-3 0 9995 +2 41466 97.1902 208.3804 0006857 335.4987 147.6689 15.43601505197111 +SATHYABAMASAT +1 41600U 16040B 19305.83792187 .00001770 00000-0 76326-4 0 9998 +2 41600 97.3538 5.8913 0012091 272.7472 87.2382 15.23809142186693 +BIROS +1 41604U 16040F 19305.77683928 .00000525 00000-0 26131-4 0 9993 +2 41604 97.3487 4.0490 0010700 267.9407 92.0604 15.21826350186598 +BEESAT-4 +1 41619U 16040W 19305.82419437 .00001554 00000-0 68138-4 0 9993 +2 41619 97.3523 5.4172 0009594 263.6576 96.3569 15.23422723174587 +3CAT-2 +1 41732U 16051B 19306.36754502 .00001499 00000-0 58954-4 0 9999 +2 41732 97.3689 221.8458 0014838 86.1265 54.6640 15.27125480178942 +LISHUI 1-01 +1 41845U 16066E 19306.38060683 .00009706 00000-0 12779-2 0 9994 +2 41845 98.7468 10.0661 0299920 133.5562 229.0959 14.53630591157091 +CZ-4C R/B +1 43012U 17072C 19305.91824658 .00000009 00000-0 13756-4 0 9993 +2 43012 98.6999 282.5506 0127780 6.4512 353.8293 14.56059305104368 +EAGLESAT 1 +1 43018U 17073F 19305.75600456 .00001217 00000-0 98219-4 0 9999 +2 43018 97.7209 222.0264 0257574 74.3263 288.6205 14.79197543105248 +INS-1C +1 43116U 18004F 19306.27273606 .00001311 00000-0 58102-4 0 9996 +2 43116 97.4801 13.8026 0010973 122.3354 237.8947 15.23379741100290 +2018-004Z +1 43134U 18004Z 19306.18834919 .00001309 00000-0 57451-4 0 9999 +2 43134 97.4748 13.6108 0010774 130.5646 229.6531 15.23718329100278 +STEP CUBE LAB +1 43138U 18004AD 19306.13359710 .00001871 00000-0 79155-4 0 9998 +2 43138 97.4754 14.0176 0010332 131.6279 228.5845 15.24428677100308 +1998-067PK +1 43598U 98067PK 19305.78882911 .00025577 00000-0 23651-3 0 9997 +2 43598 51.6363 13.6714 0003471 306.6648 53.4029 15.67366075 69166 +STARS-AO +1 43679U 18084J 19305.81056210 .00000458 00000-0 50686-4 0 9997 +2 43679 97.8684 59.9784 0008405 214.2910 145.7767 14.92093116 54957 +FACSAT-1 +1 43721U 18096C 19306.48176890 .00001589 00000-0 63282-4 0 9991 +2 43721 97.4469 16.0508 0017233 202.7154 157.3324 15.26616338 51603 +INNOSAT-2 +1 43738U 18096V 19306.43524447 .00002738 00000-0 98607-4 0 9995 +2 43738 97.4478 17.1973 0023323 214.7975 145.1741 15.29212844 51672 +AISTECHSAT 2 +1 43768U 18099L 19305.84654723 -.00000149 00000-0 -85278-5 0 9993 +2 43768 97.7314 15.7002 0010464 225.7003 134.3360 14.94566321 49475 +KAZSCISAT-1 +1 43787U 18099AF 19306.15846726 .00000837 00000-0 81011-4 0 9997 +2 43787 97.7246 16.0524 0013163 226.4370 133.5759 14.95363591 49824 +LUOJIA-1 01 +1 43485U 18048B 19306.44315174 .00000209 00000-0 37245-4 0 9999 +2 43485 98.0094 23.6001 0012341 52.3474 307.8855 14.76605653 76477 +AUTCUBE 2 +1 43681U 18084K 19306.29292482 .00000126 00000-0 18219-4 0 9994 +2 43681 97.8656 60.1517 0008917 204.8606 155.2184 14.91749729 54970 +METEOR-M2 2 +1 44387U 19038A 19306.50651899 -.00000021 00000-0 98330-5 0 9991 +2 44387 98.5864 266.5171 0002786 91.0943 269.0555 14.23335262 17107 +AOBA VELOX-IV +1 43940U 19003J 19306.52034063 .00002626 00000-0 10983-3 0 9995 +2 43940 97.2606 0.2922 0023159 312.2115 153.7760 15.24219125 43921 +TBEX-B +1 44359U 19036W 19306.51506418 .00043094 00000-0 58467-3 0 9996 +2 44359 28.5209 67.7897 0358667 52.8002 310.4772 15.06599351 19434 +CZ-4B R/B +1 43656U 18081B 19306.11161219 -.00000035 00000-0 72382-5 0 9999 +2 43656 99.4225 348.4236 0208923 17.7773 343.0576 14.30422113 53347 +VDNH-80 +1 44392U 19038G 19305.86628243 .00000945 00000-0 57966-4 0 9995 +2 44392 97.5066 265.6654 0021257 194.6477 165.4141 15.12364607 17832 +AMGU-1 (AMURSAT) +1 44394U 19038J 19305.88100922 .00000890 00000-0 55116-4 0 9992 +2 44394 97.5065 265.6456 0021654 194.9465 165.1129 15.12175425 18049 +SWIATOWID +1 44426U 98067QL 19306.52782029 .00018336 00000-0 28453-3 0 9990 +2 44426 51.6451 33.5073 0003754 185.6965 269.4195 15.54032524 18998 +SPOOQY-1 +1 44332U 98067QH 19306.08869167 .00007980 00000-0 12906-3 0 9995 +2 44332 51.6412 35.2671 0005344 234.5067 125.5425 15.53818829 21405 +M6P +1 44109U 19018AF 19306.42132122 .00002231 00000-0 75551-4 0 9998 +2 44109 97.4938 9.0877 0058468 300.6582 114.2214 15.30099710 32708 +KRAKSAT +1 44427U 98067QM 19306.67405387 .00008755 00000-0 14575-3 0 9990 +2 44427 51.6449 33.1851 0004079 181.9840 178.1258 15.52866947 19054 +ENTRYSAT +1 44429U 98067QP 19305.87061588 .00010146 00000-0 16358-3 0 9992 +2 44429 51.6423 36.8229 0002599 193.1288 166.9635 15.53563099 18936 +DAVINCI +1 43857U 18104J 19306.05852805 .00000042 00000-0 00000+0 0 9998 +2 43857 85.0320 326.4854 0015824 188.0416 172.0722 15.21772791 48754 +LUCKY-7 +1 44406U 19038W 19305.89798399 .00000728 00000-0 46016-4 0 9997 +2 44406 97.5067 265.6263 0024449 189.2694 170.8088 15.11930403 18037 +CNUSAIL-1 +1 43133U 18004Y 19305.67118354 .00001145 00000-0 51059-4 0 9995 +2 43133 97.4742 12.8910 0010914 131.9951 228.2217 15.23423570100180 diff --git a/tests/cache/transmitters_2.txt b/tests/cache/transmitters_2.txt new file mode 100644 index 0000000..e6ad87b --- /dev/null +++ b/tests/cache/transmitters_2.txt @@ -0,0 +1,545 @@ +26931 2dCbF2jmsxFpHw8ApevTMd 16 51 305 AFSK1k2 +32789 2GyWowDxwCzVjbUW5H2R5Y 45 9 20 BPSK1k2 +41845 2PSD297bXgq2bDGDyZBZkU 0 0 5 FMN +41168 2soBqgLdLq4imXZtzqp6AD 76 16 21 CW +27848 2uGo77ULzByLLyshanpctH 8 2 24 AFSK1k2 +43805 35TsLzACK4hUeqgP5oWZ4j 40 18 45 CW +43155 3BU38dtx9w4fsQZTXqMtyc 68 1287 1885 FSK9k6 +99943 3cRwEsgyxi2ju3keP9Yfb2 0 1 136 GMSK9k6 +40071 3J35SxuePody8TvfrFv7U7 55 11 20 GFSK9k6 +43137 3rLGJWqj3XZ6Z8vADCRwiW 95 21636 22614 DUV +44109 3U7eis2HgapuZHf49c5YgY 88 3346 3781 FSK9k6 +40377 3yb6JvcxM3w3cumHiQhQt6 87 5915 6727 FSK19k2 +39770 3ZmFouEWtLL2usuzqpC8Fc 11 7 62 CW +43019 4Fdui3oPpehZn3hwZBSCqW 27 270 967 AFSK1k2 +39161 4nefL2udHRTXxwY9RHRpbB 0 0 21 FSK9k6 +27939 4p9hbcmaFJnSCZvCrZ3oCL 25 158 611 CW +44332 4rK9bvm9bm7BLypA69EnEh 79 1754 2195 GMSK9k6 +32953 4vRcttnce4Z3nhfsQQt8kM 14 89 607 CW +42778 52jVE9w8EnSpF8YFssD5KD 90 8063 8956 CW +43132 5aPmHifU2KTp7uunUqGVHJ 8 8 90 BPSK1k2 +43770 5AqszaBQhFwfRF74XHUXY5 76 133 175 FM +99981 5bmvVycYhmC5kpge5y2BqU 7 1 13 FM +43693 5DoEAeVYsobgqr94Hx9sZ9 7 27 376 CW +43589 5sU8zvn356KXimNpcZXNPn 67 527 786 CW +43856 5tFqJapRjY2htads89wqpM 0 0 13 FSK9k6 +43879 5wz9DRuveTEVMig4NvXE9j 5 5 86 FM +43615 5ZbWqSVCZ87RFqMWqiodXB 50 16 32 CW +40032 6DQp67crsBzih2LWRGFNFM 1 11 565 BPSK1k2 +43677 6kVX4aQjDZHGBJYSHGhaga 31 111 353 GMSK9k6 +43721 6L2qTXePZyNaFbLjNEyyaj 76 1880 2443 GMSK9k6 +40906 6PkyCNyEaqRbADNZXj94WM 74 102 137 USB +99801 6PMJaNzeqyaLHDazrHWHHK 9 7 75 CW +33591 6sVpSCgyPBskf5Mt6qp49N 72 134 184 BPSK +39439 6SYqdPdX7PsEJiLn9vXrSR 3 15 473 BPSK1k2 +44387 6U5FTnY4mgCcxiPgauJhES 14 19 128 APT +99812 6vhMbP32NwNpX27wc7zZbf 0 0 1 GFSK9k6 +43743 6WmKkuZA37r5vT7xz2VGBY 50 71 140 CW +40074 7AchptE4yLHTtdLHSZQR4o 52 41 78 CW +40074 7FGfFQtV3iYR8anFpbZKz3 70 125 177 CW +42761 7fV9xpVQEQfSHipnioTrFg 92 12478 13466 CW +99802 7RxugSYTf4sUu6S3gdeLob 27 292 1047 GMSK4k8 +43881 7ZsdREe4GuNxhF4dhNTCLS 78 1696 2156 GMSK4k8 +32791 83vZm8YxPFoXjEzH9yhy4V 50 3 6 FMN +43880 84i7RcGzy3QTCzM9GaRYmP 73 1887 2583 FSK9k6 +43156 889PvsKmwVnkyy5gvvw5pi 79 2324 2921 BPSK9k6 +39427 88v7p7asctEGk47ZrqF7yN 45 5 11 AFSK1k2 +99811 892LK7SvkoqXsmPobLSEUj 0 0 430 GFSK9k6 +43640 8asMcXVyUJWkQzcADwhpog 0 0 0 AFSK1k2 +43012 8eoDbpwgVPQLSsUgeruNvE 41 337 807 FM +40069 8oBdHqMqgmMiWvRru6fWMn 81 11783 14380 LRPT +40379 8r24GV63wBsaB5GpAVC4cB 77 21 27 FSK9k6 +43598 8RWF5jAGR3SaG3QQJAjNSP 33 7 21 FM +43669 9hzSiq6cRmtPsVLhXT9ZBm 24 6 25 GMSK9k6 +40968 9KeB2ZXuBaUMjcK6TtvUdh 83 7173 8567 FSK9k6 +40074 9UHihpacwFrRmgZNAweK2g 78 1454 1848 BPSK1k2 +39432 a5kpE63CcUXcGwLN4fY26k 12 8 63 BPSK1k2 +99963 a5nUNqpW6uTGzBgMB68LE6 7 52 662 GMSK9k6 +44355 A8CMQdLLwZp3mbUbCL3zKN 15 126 790 FSK9k6 +27848 aBHGFxMopeCscUYRyiYdXC 82 4391 5334 CW +43156 ABJcDQYU2o8ZP2M8Kd2aSD 10 3 29 FM +14781 aBPWui23BqUhVc62nySNuQ 45 926 2035 AFSK1k2 +99818 aEV9M2aJQyRwntCLpxEX5g 56 208 366 GMSK4k8 +36122 AEzrojCTbvAeZRDtPmqitc 10 2 20 FM +43640 AHkcqL43CfVpo43YMd72he 7 23 303 CW +43792 aj32dry5ZZkoA84yLYz8y8 28 13 46 FM +42017 aKFXGsXLrQFvgJFRW7cCCh 65 52 80 USB +43681 aNmvBHhT8mmyxj6tMhce77 6 30 446 WSJT +42792 AoDzLwqzB8jt4sFQmmBxRo 87 2824 3230 CW +99807 AP8GHaDWQxvrRWPvQJN2H3 0 0 0 FM +43770 aQiKaeWH7YPEMNgGo5Qg58 80 53 66 AFSK9k6 +39428 aRboijNaKGSDZu3ZVyTFX2 0 0 1 None +99901 ArnEbH8rDZLL75ivL7YYu2 19 31 162 FSK9k6 +42789 aRp8SimW6aLZYsecTpEU5F 61 1606 2610 CW +43666 aS4oVeSSuAkEDEVGmpdcNe 78 5669 7230 FSK9k6 +40025 AWujQt3WDBqLAmjXYtBgPZ 3 1 28 BPSK1k2 +42790 AX8jbngoyxRsg58hKJxo42 76 546 718 MSK4k8 +43679 b2e32bD2FQmuEa95cpcLaT 29 310 1040 CW +42765 BCqBeK7kgXcJ779CbDJfu4 10 37 356 FSK9k6 +43466 bCuS5SQZRffE42Rxz45Pjg 91 139 152 GMSK1k2 +43679 BgkipNqBJHngFE7LB2qp85 25 2 8 FM +41338 bGY3GV449zGjSezkRjDVFD 15 30 188 CW +39136 BhZeqihzoRqZ4wiDAXfjQf 3 19 536 GMSK4k8 +99981 bLbd9EtoQfivs5eysYemb2 0 0 16 QPSK38k4 +44387 bLyAgpua2DYBYAtCnfoZhF 0 0 6 LRPT +99809 bnnhacLTJVVt5kVJpouHrY 9 10 106 CW +99961 BPCnonMHkQ2hdnPeN48g3L 9 213 2315 GMSK +43189 BQHNVvqPs2Lniez5FbNckc 13 18 132 FFSK1k2 +41340 BRs3oJkUeAmQbLsJFaUuBP 78 1362 1746 CW +41465 bS4sDmnWn4NygTeRRWLZKc 53 392 736 FM +33591 Bsa8dgFiYCpAuMTjZrqY5a 11 34 304 BPSK400 +41171 btX4S4t58zxggKoLHYWGMR 50 45 89 CW +43770 bxfwWfvm9UaXRvVfyhcjt6 92 13315 14323 DUV +28895 BykbvfhDt8p3ieh8Nr8SYm 4 19 472 AFSK1k2 +40909 BZVHvyW5jm2owcx7L5gYt8 71 56 78 USB +40907 bzvvEibPpi3aRsrUjBTH7V 77 629 814 GMSK9k6 +41340 c2yGXJPJH5jXjQ3dcyhWXH 88 89 101 CW +41339 C3zhr7czgjTcyyDwKsZiQ5 6 7 116 CW +25397 c4T33yxNiE8EAEc7V6LMQk 69 38 55 FSK9k6 +43192 C4XkUsJZiPC9HfyrW6Ur2G 30 273 896 FM +43591 C9CQo5ghk7a6N2JGYo8dWh 51 1869 3637 AFSK1k2 +42761 CaxhYGFfYkuzJ7JRgQcQU7 82 546 660 USB +44429 CFfAcDHjeQBQi9aXQV278f 40 1242 3058 BPSK9k6 +43787 CKc36jXmeH2PYXx4VpFiLe 63 1087 1717 FSK9k6 +43137 ckTw5Du4VKjWGouE36z5b3 93 685 736 FM +43551 CMgAAGxSbkVFhQrf5ocR58 22 189 851 GFSK9k6 +43792 cmw2kqKrADT2JYGhwSfui3 86 7899 9164 GMSK9k6 +39770 cobJpvgUcKgMdjQRJjzzMS 0 0 30 AFSK1k2 +40069 CojkGDaq3u42nRdLdfczng 85 1535 1786 LRPT +40908 cpsxRoz8S2dndbyCX8BEDX 76 133 175 CW +40903 cpx9PNK4TVM2nWMsQCNAph 90 7989 8790 CW +40926 Cs8TM5KQKrhN8ySefgatYb 68 1580 2320 GMSK4k8 +43133 CsQoaXPvoi95reVyvpFNDJ 5 12 223 BPSK9k6 +43937 cswUpgKQUWHABdSza6qeT2 64 24 37 SSTV +43937 cyB4Dc9mjby56MBjJidDVH 0 0 1 AFSK1k2 +25338 D3ZUeiSUnUQkq5EuEAepxi 78 100 127 PSK +40021 D5hpsmx8LgSCS3u9rpLMVC 10 1 10 BPSK1k2 +39446 D7iEeEbjNj49tusqHgpL4g 0 0 7 AFSK1k2 +39469 da9uCaUD8QmVECEeSp9iee 85 6072 7086 FSK9k6 +42829 DAZAnJVD2KmVwpfo3c4G4W 59 385 642 GMSK4k8 +42759 DeWBnHP8rRczvykrQhwJcU 96 261 271 FSK4k8 +40655 dfwBETuBLJf8mrcXwUSTDo 4 14 305 PSK31 +43192 DHcjMP2jZbmhG5obkL6tgh 22 90 398 BPSK9k6 +35935 dJh7FWnBCfAg4ny2qqxabN 84 5690 6769 GFSK19k2 +35933 dKekeLctU9VrDaYg7QRQ9J 3 15 376 GMSK4k8 +41458 dRqxGytS4w53tadvVFsy5V 8 60 734 CW +40900 dT5BBeo3b7FsPumKboBNch 2 10 389 FSK9k6 +40958 Dvhbn7HJzGo5hEFJ2kEiFd 11 14 127 CW +43640 DVrQS37nbVyPJDex3p4hqX 0 0 0 GFSK9k6 +40042 DWCqS7EMmVoFQKAi9nvJpg 46 1247 2678 FSK9k6 +43617 dxToHGhvUpdMwrAFJ7gf76 75 15 20 GFSK19k2 +32788 E2zRt9cEPo2uzATaRXX8zi 50 5 10 MSK1k2 +40056 E6m7ov6W37ttWcVhQwidfJ 0 0 16 BPSK +43814 E7UF4RrE6DP578K3orALYQ 60 1493 2479 BPSK9k6 +43940 E7urs5XJpK6AwTzayPTpuN 1 3 222 GMSK9k6 +44360 e8Lx9hQdFhiuJp94sa5bz7 0 0 0 FSK19k2 +44356 e9izxeAprUqTcYVngQHFiM 12 498 3879 GMSK9k6 +39439 E9oxq3fVUqxWJwbsJFn94f 51 210 405 CW +40054 ecmM575wCsfnP4UyZPLnoP 3 1 30 CW +42787 ECnJDqVaHWsGLA7yGpSJL3 55 931 1684 BPSK9k6 +42983 eDcFKwmCw3zcvR2TrifQ8W 8 73 866 AFSK1k2 +43738 EGfygz7QpFdWZJ6hktGrrZ 28 9 32 FM +40912 EifSE4XNdP9LyoFNcbcNJo 88 8478 9563 GMSK9k6 +40380 eJs9KnfVMdL5At8igBjqLS 21 156 733 FSK9k6 +25338 ejScA6SpoPy4SW8wyt6Cnd 25 11 44 PSK +44352 EK6A86Nt8ApPK4AiSSHKuF 33 1 3 CW +43138 ENc5PwypWRp9TpGYFAafA6 32 83 259 FM +43466 eo3tn2jMr6wjqdzHRRFFSD 88 369 418 GMSK9k6 +07530 epmfL93RZ2Vf5WKK4X2auf 5 28 477 CW +43693 epZQsUEaAW3A357WE3WjgJ 15 123 809 FSK9k6 +99803 eqePydwing5atKGaBEFQkG 20 2 10 GMSK1k2 +43793 etjM6oKkFxcm6pSQoYPRFo 84 4920 5794 GFSK9k6 +99939 Ev5t3CMeBuXv6wvLPGx4PH 7 2 27 FSK9k6 +43640 evNu7Asm8fzgQTfPLQtJ2o 0 0 54 AFSK1k2 +25544 EvtcWByczLm3LejfbGt8pS 15 53 339 FMN +99915 eXLEgJobaNQvwwPhLiRhtb 0 0 82 FSK9k6 +40967 EXWmZRvHRKhrq9ctSa6cpG 74 94 126 FM +39492 f5ZSbAccAwz7NBPF9LWPp9 20 7 34 FSK4k8 +41338 f6CupQE36AJzHTKeLZrToC 11 1 9 GMSK9k6 +15427 F8aCi2iTe83XT9TnBwrth4 78 3570 4567 FM +44329 fB7B6jkc7fUcMhYrP3xJU8 82 1292 1573 CW +41783 FbMz82s4DtgiUxGVXhn7YY 0 0 19 CW +42017 FCbPaTaoqud8AZfYPyEWMA 82 188 229 BPSK1k2 +43617 FgBaUzULUc6wseLXx7hiSo 65 2806 4260 GFSK9k6 +40911 fhM8LwHgZaPL6MjtjLL4MC 85 1008 1184 GMSK9k6 +99981 FjxYLt8a2TiFRr8RW8gxy6 7 23 323 AFSK1k2 +99807 FKY3GgdaMXZPiWgzNWHLNW 0 0 145 GMSK4k8 +44083 fMLhy2PqSLaB8bQaTUkDXL 77 1544 1998 FSK9k6 +36799 FNcx4kGjkFYau3YHhjCbFE 26 340 1264 CW +44359 fnNDa5AKKxmgRccbCNtorV 12 455 3629 GMSK9k6 +99818 FnZB6mtcxffQxhT4ML4GNT 0 0 0 GMSK9k6 +27844 fpLBtCB3kRcf5uFWvSonsC 4 1 24 AFSK1k2 +40909 FPQ2bkVNhx8T5NCeg8grn8 89 6356 7128 CW +40654 FtxHUM8pqr6Ep95RehAouX 71 8681 12190 AFSK1k2 +43640 fvsx5rUqh7NRe7aV7W6foi 0 0 9 CW +27939 FyC3BE75BxrFU25Lk5XLCN 21 122 575 CW +42788 fykfSgtzV9A77A74gJ9ML4 41 14 34 FSK2k4 +38340 fZHi59dXRTTtGPZC6EVL6i 3 16 424 CW +41732 FZJsiKhdoSGUDKMbg7si7f 9 74 795 BPSK9k6 +40071 g2PQTyQ6gv4kudov7KoSQc 83 6010 7217 GFSK9k6 +40056 g6GLEgvyLTaEwshbd2CbJK 6 2 31 BPSK +28654 g7x5LaHGq4j3DAQoPSs78G 15 9 60 CW +43590 gbcectqEdajt7qUsiThoAY 66 721 1082 CW +39446 gBpooS3AUqyvkhCpRQvvW5 63 2689 4241 FSK9k6 +42759 GE2NN9qhrAwaxm3W8E7Hei 84 544 647 USB +41460 gEDKtJFX6d7kM6xUAM4MJ8 84 276 327 CW +44387 GEE2LAKDR2zeSYVsM8U2e3 2 3 116 APT +32953 gFtFgRMUqbmLbR94Jjb2KK 0 0 4 FMN +39432 gHNdPTyE4v4yEkGBJzRFWV 25 1 4 FM +40906 GKvyYnXuEeNMhviHYHBDh9 85 326 381 GMSK19k2 +41600 gLqPtHih2tVFTcPndPK3zR 11 51 443 BPSK +27848 gmmMUrZydhneJJZRJAYoG 68 11 16 CW +43597 GPz7QLruiv5g9uW3HmKC7H 39 460 1175 FSK9k6 +44354 gqn54Lfe8kJWq9ktNNA5iF 54 453 831 AFSK1k2 +43158 gSi3sefYemAatb9xw4RMV7 10 29 275 FSK9k6 +43137 gtcfCX5FV7BRvG5p3ZCDoa 97 1789 1835 FM +40906 gtzv79Zp7kPymUekFaA2w4 85 178 208 CW +43552 gWhusBsSLr5bpKVxkRh79F 72 3605 4986 FSK9k6 +43803 gWivxT7RmBwKK8WbVy6ucF 58 83 141 CW +43156 gxCURk5XUV2j2bGbZgkX8V 5 8 141 BPSK9k6 +43616 GyJY8KwQgLxtQuFHFpcmk5 65 1851 2816 GFSK9k6 +40909 gz28Jj9NyRm7jMb5UK5Pv5 87 663 760 GMSK9k6 +42766 h6pLPnkbouwiDkMkqL6KvN 12 44 356 FSK1k2 +32953 h7S7VNjodegJM2AYahtvAN 0 0 7 FMN +40654 h7V53UpetXSEaFC6CkFmXg 88 2922 3306 PSK31 +43597 H86rQQN7bnwm7K38rQNDtH 24 14 57 AFSK1k2 +40911 h922BguPKYt56S4JSV87WL 73 98 134 USB +99981 HaioKXQtHNrcYTrw7pxrbm 9 12 126 CW +43937 HHohQuHYKUbtyyeCf9MG3U 0 0 0 QPSK +41460 HhPiuNj3whyDNCFCYBDykV 91 166 181 GMSK9k6 +44030 hNQgvWvoYCcyk6hTafYuRG 82 2464 2996 GMSK4k8 +40907 hqdRQnR5w4LrN5ag2f7NXB 71 131 184 USB +40911 HReEBxwoWJDuuvF5CfiyET 93 9682 10399 CW +44355 HsNs3ELgaGTVX8muvifYfT 77 354 457 AFSK1k2 +35932 HtEGx3wfyNjXDxoFEvBTrc 0 0 1 AFSK1k2 +43758 HvDeu98rLANLxXKPBtdM5h 15 178 1162 GMSK9k6 +40074 HWdDcVRpjQJCxMbtRkL5em 28 196 692 BPSK1k2 +43678 HYB3Frb2cf4LUhzfbTCCw4 13 157 1168 FM +99914 HYS9gMdmAfCbSGoqtusTtG 25 130 518 FM +41466 HzG7GJEdAUZ4aYbHBUWyad 16 123 737 CW +43782 iBQfxBSV3gGMw8odR8tYke 12 37 301 BPSK9k6 +32785 ie2oBdY3zydrkWxEHvXtL 5 1 19 AFSK1k2 +40967 ifDEyp2yzKfJd9Jyg6Pgbn 94 5105 5426 FM +43138 iijuqxdAHNgnoK9BsziQjT 26 100 384 CW +99801 iW5XyUVFVZPvCxfKyuYXhW 15 294 1863 BPSK12k5 +42792 iWkJWKys6FuiVgeguHL993 88 1505 1694 AFSK1k2 +39444 iXwP5z3WSrJYoLviKuKRYL 93 11852 12645 BPSK1k2 +43798 J38rm6Dj47YkTdpYC6UrvS 6 8 123 FSK1k2 +24278 J69tNga2yUACngU6T85Buk 0 0 2 FM +39087 j7hToyExdmZhuhWRhsutgV 4 21 448 CW +40054 J9oQxM9AS9NddRQKE4u9Jg 4 23 491 CW +25544 jAkJ2yf46z8Kup5Yu8vita 9 14 152 FM +40931 Jd69E6WhfsdUPWGYrCkDmX 0 0 3 FM +43758 JDidK4QteDsyXujpqZNS6a 0 0 0 GMSK19k2 +44354 JeKGaTdNU5M7LC5igCVzi9 47 1048 2195 SSTV +40910 JF5HmyNqCqa5zb76EiaHgL 91 8207 8974 CW +28654 jfPQW4xWfTFmp7eKoPNsph 14 40 268 BPSK400 +40908 jjNQUqaaSuehNx5qVGzQwY 83 2694 3244 GFSK4k8 +43773 JLARnjSiYKTiPcmikCxKyW 0 0 16 GFSK2k4 +41460 JLNq6FzBfaCvK7H5neMKiC 93 6023 6444 GMSK2k4 +43678 JmHHyS3anLiFQg7GUv6F5A 15 62 391 CW +43187 jNtREHXsKo2T4HLMWJRZwR 13 32 229 FFSK1k2 +41465 jqubeJSmKwDVPB8v2Tgwkh 57 15 26 FM +43933 jRF2dUjv3yBKS2d6t7W3BG 17 59 341 CW +40928 jtYNPDnTgVFswZdLNijeWV 77 2397 3080 GMSK4k8 +44330 jutNQYFDp3R2k4PtRiRT2N 58 88 150 GMSK4k8 +41557 JvZyP4BkTz7azt5JRqoXxF 9 40 438 FSK19k2 +40906 jXXaGaB5LzZEurn8XGtMYF 90 10133 11230 CW +43188 JzaoM9sEECPEUNSEw59ZDm 13 15 115 FFSK1k2 +39492 jzrNsDQNgzxxZvHBWPvo74 14 91 637 CW +99926 K5wxBFdBxJpx4gp7QaHxaQ 8 4 48 FM +40927 KbEUEaZmz8PmhJ9XZ7CeCZ 2 6 230 GMSK4k8 +33591 kE4VaYKpnFmzEquEjKKi8D 98 38688 39137 APT +43017 KgazZMKEa74VnquqXLwAvD 94 25917 27314 DUV +39444 kjb3TFADq77qj2AFSzxHCV 70 132 188 USB +39134 KRqcrmSVuDcWj5f2ZycKSf 33 355 1059 CW +40655 KsFooqFcsjCEbfR9Wxm3qf 0 0 168 AFSK1k2 +44352 KvhPyZKYATt2gso5y3mPPU 44 826 1840 GFSK19k2 +38771 kWpG6dELjiuYBLXN5arLLk 0 0 19 BPSK400 +37839 KXTiVXsz8GnSZrfQU4yTnM 6 1 16 FSK2k4 +41789 LAx8UQA9zvxdCnUnYmGffC 58 1107 1883 FSK9k6 +39770 LerwMDzsm3Pq7y4KdZJRGW 0 0 10 CW +43017 LoK6HANoyLWRnwhJKs8gHd 96 3152 3270 FM +43597 LRU9DbcqQ7xpARWCiWrFZG 62 39 62 FM +44332 Lun5eGJAUAKwUqHZsbzSJd 72 13 18 GMSK4k8 +40377 LuVHGVKfLRH9R7Qtu7WtWA 42 6 14 GMSK19k2 +42790 LVJfPNYASyQ3PUBvcpxLwn 90 3405 3745 CW +40021 LyLQ3K5KTts6gJGQTVuSDP 39 1555 3964 BPSK1k2 +43615 M254Xd2mj4z3RFihmXRe56 85 3642 4269 FSK9k6 +40043 m3AudrFo7YRXBGjH6GovDQ 92 8799 9513 FSK9k6 +41845 M5SqudRyz3bQgGGjt5xoWm 33 7 21 CW +25397 maYGaaMWsSBeDDDMpcM9ES 68 62 91 FSK9k6 +41459 MB7ver9P2WRaREiQtGJ9iU 33 607 1815 AFSK1k2 +43199 MBfYJtqVLfZYtvpZ3mPvsb 83 4092 4909 BPSK9k6 +39427 mC6MpttrDi3hxmhzisPoeQ 0 0 3 AFSK1k2 +42784 mdAtyjQmUGnkh6yqT2GPN4 28 148 524 FSK9k6 +40024 mGn8cGayGiNWSoihVSBMqn 0 0 7 BPSK1k2 +44530 mhCq9NoyceojDk88VKWHUM 0 0 16 FM +43786 Mhtbkk6uei97oKEmLkGLBm 75 3780 5038 BPSK1k2 +43677 MHUkkmcUrRpxvexXC6R5pC 0 0 6 WSJT +43792 MJ9pU2M5qNQRRKzBHHniMb 58 28 48 GMSK4k8 +25338 mjsHcYajEgbiS9cbKfecGo 98 33011 33400 APT +33493 MLBshLfC6cFP4AsoaR2MWh 93 6375 6850 CW +41339 mLxt93FKx9r5gqKbxtuybR 0 0 10 GMSK9k6 +41459 MmBxtexG8v8sBPxKzeEqSc 25 17 68 CW +43467 MoW7rRJVvLSY3XgBprHEej 17 87 492 FSK9k6 +33493 MqmQZv4wGRtxxfCFUGT5rh 4 5 118 GMSK9k6 +40910 MQpfemiY9Pxga9ehRkmd9R 80 616 769 GMSK9k6 +27844 mqQF9JxmD4KB6MqTVXqQBQ 93 7001 7519 CW +33499 MquDcKUEW6mR3VP3M2vAdQ 92 7318 7942 CW +25397 MRMmE3cF5JgNqE8UXcpFDA 0 0 0 FSK9k6 +42776 MSiz8AyXLSjcPtQhJYrBjT 6 13 201 FSK9k6 +42017 msnC2ijNNoQ2ECKunbpAkm 94 11295 11933 BPSK1k2 +44394 msskNZ5tnCN5jiQC3r35tj 60 672 1104 FM +39153 MTMEfksHRarmn9mxBJuEF4 4 12 251 AFSK1k2 +43467 MTyDixi4GMSAWp5xxiPvgm 18 7 37 CW +39161 Mu29Q8EX5CyCenGm3ZKAx5 0 0 7 CW +43773 mvUyauiYL7dgkeK3F8wLc6 0 0 36 GFSK2k4 +44331 mwLCtnmHojERWGKTnMT6Kj 84 1721 2025 CW +43773 MynGCofqjNakTmW9AnGkb4 10 16 155 FSK9k6 +39428 N2Jc9jGVmQhLqVapkSqj4U 20 13 65 USB +32791 N7SGiqMhkHpjfjeGh42wvX 90 4765 5278 CW +43678 nc9CoLLaPDMyqj9m2RfxAU 7 12 151 AFSK1k2 +43116 Ne5FF8ZkMtvFP3TvwrAz6W 9 25 275 FSK1k2 +39427 Ne9UPFJErgJFcEzqADZJWL 31 9 29 CW +32789 nGjcbveXh7NUBQvuR2TaaC 24 7 29 BPSK1k2 +40074 NgyrK6zK9cb9cZVSSfE9m3 53 22 41 USB +44045 NhcEguygqpXW79d8U8afRC 28 30 106 BPSK9k6 +44329 NhFJ8882T9MwjYKcNhYCMh 87 164 187 GMSK4k8 +40719 nHWtq7t2BfC8pNYYpi4ZwS 12 91 744 BPSK1k2 +32791 nJWyfQ4aLw7GVKboLhni6j 64 50 78 SSTV +40378 nKnqokquVoKFRAJcePjqjj 40 2 5 GMSK19k2 +37839 NMbzCvfQ2cfTf4XUbDKe5A 44 56 126 CW +40057 nP9SjSXhoLLLi4Xso84aER 11 148 1258 CW +40014 NSXo8tGxmxpTUMsmSH34FF 92 11462 12442 FSK9k6 +43784 NTAbJCQ75TbkNGqXA4gMYi 59 797 1338 GMSK9k6 +43790 NwAjXMKwWFyQkeSz9Qn9RS 44 219 494 BPSK1k2 +43591 NwfFCEAaoAnX3DhjdzS4qg 88 3239 3667 CW +99809 NZe9K6tc4tyk9GxYgfHAXh 5 4 76 SSTV +44387 NzJEpKJVLQRrxRtVWH3Kfn 42 752 1788 LRPT +44360 NzzuxYkooLuv9hYeNa7pqc 68 1059 1551 FSK9k6 +44406 o5eiLkcaNbq6BX3gv6TB2c 46 828 1796 GFSK4k8 +40900 oBKWA5oi4RtLDJMDnKWx59 0 0 2 FSK9k6 +43803 ocoEf6MEZtiZgvEWSWsqtY 93 7673 8221 BPSK1k2 +40043 oepFFUCo6qxWgQckFGWt8H 79 57 72 FSK9k6 +43134 oM5JaAWgx3UEb6ZDQRtd29 3 10 305 BPSK9k6 +43857 oPnyXfCDXaiKzYoQ7PRNea 1 2 107 CW +44330 osebQczQC5X852ueXKBXjH 83 1382 1647 CW +43855 ovpmeNWQar69dTqXcZ4nMi 79 3044 3834 AFSK1k2 +40903 oxQ2jWYfhGivZfjbXdyz4H 68 90 131 USB +43772 oYUaYcoHMrzKPVW2FhaXNh 29 113 379 FSK9k6 +43614 P2BxveGC2piBc9BY2Vad8P 4 10 240 FSK9k6 +41557 P3bU8XcEbeaYMEA5SC9is9 6 15 224 USB +44427 p6FPnWutpjGMFjjERPgDBm 47 807 1693 AFSK +43132 p6Sv4Uvkd93dDXqubCzxp2 40 97 238 FM +39090 p7t87ZPTo5NTCxpY5P2bm5 81 2450 3010 FSK9k6 +43772 PamzvHvsAxx3VzZtYLZ5Hg 0 0 28 GFSK2k4 +43186 PDnTJt7D37Ke8MCxi59CE7 14 27 183 FFSK1k2 +43780 Pep4VZvfomiawYMYXwgdwk 65 7555 11554 BPSK12k5 +25544 PjfcFc4PZ8M8n3thuyA6x9 1 33 2062 FM +99921 PLXzNQz3siJN9jXRyAqDHN 0 0 42 CW +40379 PMnr7eXunTq4zsS3WnbqxV 92 6929 7501 FSK9k6 +43598 pqPZH5uwmHs9vRLCjHFaQZ 27 202 731 FSK9k6 +25544 pQRPwTWqQr7unDav5Mz4pG 59 457 770 FM +40910 pr9DVsgPMkAx8moihfWTFV 81 203 248 USB +39444 Pt4MFHSC8UFHu3aTQTLz9K 89 676 753 BPSK1k2 +43770 pUjViMSiFpt9rYRfh8jwGa 80 12 15 FM +43908 PVQ67hmaK6HTExvVRu2CDQ 85 2791 3279 GMSK4k8 +99816 PvztPB53Swk8hGHMtvLyPH 14 85 575 CW +43656 pwskyFLLjqP5vqDagm2MSJ 26 221 833 FM +42768 q34ztk3T9kUPDn4qkoxsBb 66 2861 4319 FSK9k6 +40908 q6CVKJirfoUjNzD2A4rxsk 68 808 1181 FM +29499 qaT5P4FsKUEZCSAk4sMuQc 91 135 148 BPSK400 +99901 QbDTAeAyQ9SdpUfRegx8BZ 35 14 40 CW +99807 QC3VRyswS6cPkxqp3Cxpka 0 0 5 CW +44420 qD2ifZ7hJvYpfDvXBK4QoU 51 28 54 CW +40032 QE9FpDcXwx383HzouMDGCL 10 77 725 CW +32785 qFB67RqFJauwWgZCimDUPJ 18 3 16 GMSK9k6 +99913 qG4gHh4HMbBRJ7btnfqyrS 0 0 100 FM +40025 qgm5DPSVdJ86YzehiYWQcX 14 216 1517 BPSK1k2 +39438 qi4FX8EQ2UsiwwEyhbuYT7 15 101 646 CW +35932 qkFttEau6SfHo2jM3kcftm 34 12 35 CW +42759 qPbeGpVSxXnJ4YMfBRfG92 91 12571 13676 CW +43466 qPdK6RfA6UPT8CWogypiz4 86 4963 5737 GMSK1k2 +41168 Qq2oUjXmFkUxkP8grjUDaM 83 1061 1275 MSK2k4 +39444 QsYRjdzExRFdZyJvcEw2GC 28 49 174 CW +25397 qvdNpHXGCBkBYSzGokjsYY 65 2681 4104 FSK9k6 +43012 QXEvJnabzEgE9SNKy2V2DQ 21 5 23 FM +99809 QyWuvTPEMp7Yskdz3XZSQJ 11 125 1069 GMSK9k6 +43782 r2ctUdgLzgahyvqhZNkUfJ 0 0 5 BPSK2k4 +39427 R5YQu55yNKd48di5HbPfe5 0 0 0 CW +35935 r6mypHqFn5e2M2gadzsPx3 72 21 29 GFSK19k2 +43780 r8kzxurnEPPdbkpGYU4D2a 62 31 50 CW +42775 rAtiFkr9f4e7PnGAxcWxkF 90 3426 3784 CW +40903 RdYt6csXh5XGEhh7UBxENH 96 31 32 CW +32789 RGrApAMv8gLbweTgXRhZGa 39 756 1916 BPSK1k2 +44359 RHw8SpwMRMg6wxUuSQB8HT 0 0 172 GMSK9k6 +37855 RHwhZR7PW4heGkuudpbLxa 14 11 76 BPSK1k2 +30776 rjz4x8XfpQCvmM8qgArr9Z 95 10423 10919 FSK9k6 +40958 rLMH4E6ueaCTs37sKD86FU 12 56 438 MSK4k8 +28654 RMnA3okEddVHPBht23QYDm 73 67 91 CW +33493 rmv9kRFrXDtQ8H7wucWwbm 85 52 61 CW +25397 rnK4cgRRm9cdM2rxFkyoQG 0 0 0 FSK9k6 +99817 Ro3SFmDkq5cLKd8D9vadiS 0 0 0 GMSK9k6 +33493 RP8r4va9hjC7sADMafUEFM 21 7 32 AFSK1k2 +43551 RQPRosihcBadtdmLE7c43h 18 3 16 CW +43937 RS6GpDhfW7Ba4iMd99DBtS 0 0 19 FM +44387 RYyEQYkVvjMF7v2F8XVang 69 431 617 LRPT +44426 S2U7PbMuRdnyRwUPKbidDM 76 1603 2083 AFSK1k2 +42761 s7WSyh6UFkfkzeW4rro6Ze 95 2688 2805 FSK4k8 +40024 s8jpdkUffam9RxRArizMQd 17 217 1266 BPSK1k2 +39417 SceFq4oXTQbAsaugQsnwuG 45 686 1501 FSK9k6 +39086 SDFqERDjjgdzVPwF8MPSEh 90 3904 4305 BPSK400 +44045 SHa8EwycRfDza4s3wNbj3j 54 2350 4332 BPSK1k2 +28895 ShK6dsshtuNqssrY4xP7LA 73 2615 3547 CW +40055 sjVybmqJVwcqCuGnKV727T 10 6 58 BPSK +41604 sk98c5TotS9n4ADNkTNFjP 3 5 141 GMSK4k8 +43772 SogJiSn8iCS7piP4bhAzJP 0 0 23 GFSK2k4 +32785 SqKWM4e6CfqZ9JryAZcJTf 88 4033 4547 CW +43485 srRymFH6KNvisXgchfnf77 12 3 25 GMSK4k8 +43780 SsA4Y9wudA3S7DBt79sjQ9 58 80 136 BPSK12k5 +41458 svkDc6PsrFPJ4E2yXKuWcS 2 3 107 DSTAR +43018 SxaDAyAgw6ugJEPnTUZPXa 2 10 402 FSK9k6 +24278 t2ffeMh8FNf979UMF7kGaV 38 658 1691 USB +36122 T7QXLn5PryWVdjqDUfGa55 44 627 1411 CW +40012 TfCk7i5Hmy2PEFd2kXvFjh 92 11277 12208 FSK9k6 +40378 tfqRdP93FEm36tirADWWQR 87 4092 4664 FSK19k2 +44103 TGP8nqLVquNWuYYytpbQ7A 89 2260 2531 GFSK9k6 +25397 TiQ24jMtQ728WY4tUkckff 0 0 0 FSK9k6 +32788 tJ7KvHwqyU7UxufWZzrYZ6 66 2836 4286 MSK1k2 +43933 tjvgbnDFam2zaDy9Jq6hsT 30 32 105 AFSK1k2 +39427 TMxTiKcBFxGmTcWv2qYfUC 42 889 2074 CW +99805 tn55cu33k7yWBvhRGXoroc 22 2 9 GMSK1k2 +99816 TorPAunbxm2KKmS36KvmD8 0 0 234 GMSK +43677 ttuDCCJHRoYjtEYuJS2otk 60 3379 5575 CW +43804 tueyqmSprTPjQCvGk43k5K 77 1427 1846 GMSK9k6 +43805 tuskQRiEw5yMwZHtFeonQG 68 854 1246 GMSK4k8 +99808 tXMHk3uuaHuhX73cryDske 1 5 425 GMSK9k6 +43681 txSMS2PSzXs66a8nfCQHDf 0 0 79 FSK9k6 +28654 u2h8AaSR7ZJPreFgVDtcfP 98 33262 33645 APT +41783 U3w63iVrBkBHNNr73W8mLZ 10 2 19 FSK1k2 +40025 u62BCJJmjWBRDLxYqLBYC5 1 3 152 CW +40654 u9hJGiCLG6Sc2Bmgtxnn7i 84 1690 2010 PSK31 +99972 U9X4CS3J5CqK3torAgTfJD 0 2 680 GMSK9k6 +37224 uFLHu8MEJU5LJqjkVSHs2G 0 1 394 AFSK1k2 +27844 ufVXbFsznnzKWsXqyf8gwE 70 12 17 CW +43596 uHEnVFaagLRZiyeSZFwyoA 82 5387 6510 GMSK4k8 +42775 uhHbNvHYr2epY26uEpUXxG 73 222 303 FSK9k6 +99809 UJUqAdUGDkaLpTCvk6j5H8 0 0 9 GFSK9k6 +07530 uLfAhJaZJUWmA9Sik8yQ2m 49 1027 2071 CW +39430 ULXxBCypZh4f2qPnJeg6WH 82 5803 6996 CW +35932 umF8WmqmSSiMVnfbPUwNh4 33 11 33 CW +40912 UMxxEUjkahmhdywka7FTwe 4 21 487 GMSK9k6 +37855 UpunTDE3mZuzsVXUBWNGj5 33 3 9 FSK9k6 +00965 UzPz4gcsNBPKPKAFPmer7g 63 3822 6038 USB +26931 v5NW6by7m6NoK7gC2XCGyF 33 651 1961 AFSK1k2 +38760 V5w2y4795oxP4wjhhHbZHb 12 30 245 AFSK1k2 +41607 v6rsdjnUm3ed4rPZyew4ri 18 70 375 CW +40907 V76m6YW7nVsTrgCboMVHEb 90 8869 9786 CW +44352 V8ftSCUFrz3U7uwQr8Ne98 9 4 41 GMSK +99962 V9yTvPHRF3iQxtbCtxAW9A 0 0 192 BPSK9k6 +41558 vbwB8JMQHhZSDrMH5TGYBK 50 1691 3338 FSK19k2 +43590 vcSqoKHZe6KYHoKqhTiytH 26 384 1450 AFSK1k2 +43743 VHSMhg3mqEWUemD9UhkQJf 83 2851 3423 GFSK Rktr +40380 ViBdvztMKTCQJ46ozB35RN 0 0 7 AFSK1k2 +40074 VkmkGr2WyemjUFRGmyA6yP 51 3323 6506 CW +44360 vpcDzL7w8WwBPgVggkWif6 0 0 0 FSK +43780 VpHdmCN4K6purYuRDNWQ7i 65 66 101 CW +43881 VpxJWqL7Y6mL2if5vinBSm 0 1 265 FM +99806 Vs6DbmVMsW5JHWQSGkcjMH 0 0 2 GMSK1k2 +41340 vsY59x3TnTeSArEiFKwPqE 69 49 71 AFSK1k2 +43738 Vteu3rpiLQdr4o59RC6sgA 2 1 40 GMSK4k8 +40903 vW5mPKSJirXyyaGDsH56AP 92 676 728 CW +41557 vx3Eu5TL8mPfVvLQakjDzc 11 1 9 FM +37855 vYCZHtGQcfFqzT9fNTT6ei 57 1380 2411 AFSK1k2 +99913 vyrpLh6J6Ngis62eCVrjeN 4 8 171 BPSK1k2 +99814 W2odKw2mndJ5dBgUBZ6PjD 71 737 1035 FM +32785 w3YLCLgdTqDpqhZ24uaJzM 61 11 18 CW +43677 w7P94GHjtdfjHnYG9RrkHJ 77 85 110 CW +43937 w9atysxgD3MMHnX2Rv3svC 94 3721 3947 CW +44354 WA6Kth9mprL2jfnGN9DBMc 22 17 76 PSK31 +43467 WAKUz4gTQef4KdoJgdDSAU 1 1 66 USB +43855 WE7bhPH9BQQkbYx9qcH83M 66 8 12 GMSK9k6 +42829 WfADG9G7jrpcQ4tkBtQb4P 46 580 1259 CW +43132 wgEmKDDYtBZpvLMAsoDD7P 28 354 1247 BPSK9k6 +43640 Wj3wT53V3Coyt2Cva7Qrhn 0 0 2 GMSK9k6 +40931 WJmmGFBv75YH2JUR2RaHBN 0 0 0 AFSK1k2 +43589 wJNinAfbDaTr35RzYrnxeS 71 4533 6331 AFSK1k2 +35935 WjSuDmnkX32dASG7NqajhU 90 659 730 CW +42788 Wk3ERYzGTeubzNmY6zb6PS 42 508 1185 CW +39770 WNLUsAQJfMEagGmXAxTD7X 3 15 441 SSTV +40654 wnYjL6yjW3wxsVUhqS2duM 80 1597 1994 AFSK1k2 +39439 WoaWzeKLVSn4dmV5BtEMQQ 56 2998 5347 CW +29499 WPbJwgkLaQ6hD973hr9ZMd 90 2495 2756 BPSK400 +99964 wRtRDeaoFCHiBQXfuNJEuQ 1 37 2124 GFSK9k6 +44331 WrZv8zDc6QTuLf8CvGCZ6H 83 133 160 GMSK4k8 +40025 wVeqTcuPmKzk7LcWKfwmMH 18 7 37 USB +39440 WvVrtfb4nKtEr3sJGqZdT 75 3168 4193 FSK9k6 +99930 WX8ESb2X7HaKD4RgMa4ofJ 5 4 68 GMSK9k6 +32791 WzUhZvVherckTDUttWu3dW 78 120 153 AFSK1k2 +43012 wZZsyaNEvdgec7ei7D2WmE 0 0 1 FM +40931 x4TAmrVLwZo3hx946fHi44 0 0 5 AFSK1k2 +40042 X9Xu5Zcwr79Yu9v86PfCWX 25 9 36 AFSK1k2 +39430 xAU7UCMqYdVNPDtbej2aeJ 74 259 347 MSK4k8 +41619 XaxdSBCHmoErvPmprWHCv6 35 297 833 GMSK4k8 +44420 XCTrh6yGxk6uSEEHpRDh6d 58 2690 4564 FSK9k6 +42759 XdKYnxrPbyXKJRtQjrHXu6 95 2264 2366 FSK4k8 +99817 XDmqSaM9btobnhbXfbfaJV 68 335 486 GMSK4k8 +39134 xfcdPcSWKbqzRDxZZ79yhX 22 4 18 CW +41603 XgAhCSKPnk7DpbUu7NWBKd 6 11 158 FFSK1k2 +39428 xhcgD5AANWnK8r2jq6QVA7 0 0 11 None +40908 xHDr7c3A7TuTPFcVvHKQuN 27 418 1519 AFSK1k2 +43595 xJdvkNyavNNZwCFBYdWC5i 87 5212 5949 GMSK4k8 +43768 XJsHG6GRFqrBrmP3uvF93E 73 1876 2554 GFSK9k6 +99802 XmSMTCoZv86rqxvufZntzM 0 0 0 GMSK9k6 +41170 XQHaoCTnbpEMCSHrib4w8k 65 17 26 GMSK4k8 +39445 xTtxXVXXBQrJ4ivDHwpomn 7 1 14 None +43792 xTVXwsEVTjzmE7zGKTmGhg 6 2 30 BPSK4k8 +44530 xuaBFNz9x9K4aEe7sg5hoG 52 233 446 BPSK9k6 +00965 xVNv3Gze2CGndzY9FxTixE 57 502 869 FMN +37841 XvPtteeoMRay7B3n3akDJE 54 126 230 CW +40903 XWkgoTzbierFtJcCBZxPv4 87 427 487 GMSK9k6 +43937 XxMndDhC3zeLPMrhhzqw6o 0 0 21 GMSK9k6 +44392 XYEPdSo3Avk4NKdgPAgaKL 41 267 642 FM +99921 y32qfR4cgJji27gJqYQDm7 3 2 61 GFSK1k2 +43468 Y3pusxeUxDoRzKWh7KEGth 87 6495 7453 FSK9k6 +43792 y5GTUBzux5RccNkkSvcsfJ 13 213 1545 BPSK1k2 +41607 y7giaXsnzKuXdDjTmygj99 22 5 22 FSK1k2 +27607 Y9P45XRJH8yAsbDDe4qHnE 60 1345 2230 FM +35932 yA9kEtgExZb7QvBrpWxu7 45 346 763 AFSK1k2 +44104 Yb6JCnq2BAmBx74owTqBnJ 56 1237 2208 AFSK1k2 +39135 yc8o9nWfq2bdVwUitzYn57 0 0 16 GMSK4k8 +07530 YCcdJmZyt62cx8R8fv8mTe 51 98 191 CW +42794 yFxouh6mrokgXSEduoepfk 18 9 48 CW +25544 yMufCB474YJ4YRdDepfMUk 53 2669 4990 FM +38771 YpHpZiWytCCCcnchvkV62Z 4 10 204 BPSK400 +25544 yPvKr7jdJZLHsHukp8dDQF 7 29 402 AFSK1k2 +99807 yQ3fgF72FTGJzfgZjNfsM6 60 406 666 GMSK4k8 +99939 YRektpBYH4Y3M2KyGdpUS3 0 0 36 FSK9k6 +43616 yTpH2QWnVX2w9mz9EuFVj2 40 2 5 GFSK19k2 +41845 yUuUeLhjDbdH7Eb8GsYuFP 38 779 2000 CW +42794 yvJXkz5kQDCFHc7fDEBjS6 11 62 546 FM +43856 ywDrrochi6ATWwTvAh2mzh 3 9 270 CW +43879 yX2PAJWyj38qPmnxA6on8E 90 3449 3812 GMSK4k8 +42726 YxYvPHA2hNe8aLybAKGjvT 86 5573 6453 FSK9k6 +42794 YYq5vXXePXcokeedNnnu54 15 3 19 FSK4k8 +40719 yzLZeFypEj65qUKis3XrTd 11 23 201 BPSK1k2 +20442 Z2ViCYEPTmBkKPkMKFgnJg 62 52 83 BPSK1k2 +99804 Z8vjLjgMr9FD6CAJLz9J7U 33 35 104 GMSK1k2 +99802 Z9p78prM5K3Ms3A2mx5EdQ 0 0 2 CW +20442 ZAKErADdWKpMiDjvKKhmmB 94 9329 9878 BPSK1k2 +44426 zbmwJ8brZEFmHPqvYGfdwZ 83 185 221 GFSK9k6 +40021 ZJBvFCm6u4wBLVs6JSAad7 28 31 109 CW +25544 ZJxCeQmih9zDfYNVrB4wRN 50 4078 8155 AFSK1k2 +33499 ZkQJidFbx97FBARSxybeyh 9 14 144 AFSK +43857 zNYhXHcEHcEYgAzU66oQDb 1 4 207 GMSK9k6 +99926 ZofhkTSngUo3AfoFTGAucA 4 1 23 FM +24278 Zqa2ebzyRRBffvwkLnjTVc 28 79 282 CW +43679 Zqbhz2u99f5gsuHpQGegPZ 18 2 11 GMSK +42778 zrt4AbnsrVgEigNKnEesNg 7 29 373 GMSK9k6 +43738 zRVLBvJShk7Az3hE2Xa5eY 74 1096 1472 GMSK4k8 +43138 ZrWpn6siowtNvbyP8xSefE 11 10 88 FM +42789 zUGFsH6SNZfyd9bbCsrzXF 73 478 654 FSK9k6 +99812 zVuNDnRZaHtFY49D28oQR4 2 16 599 GMSK9k6 +99921 ZWobv5XYH46oxDNpzSMJJQ 0 0 47 GFSK9k6 +40967 ZyjKNJ9KqnTHBCUzAPN5G5 74 14789 19898 DUV diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..beeff2d --- /dev/null +++ b/tox.ini @@ -0,0 +1,24 @@ +# tox (https://tox.readthedocs.io/) is a tool for running tests +# in multiple virtualenvs. This configuration file will run the +# test suite on all supported python versions. To use it, "pip install tox" +# and then run "tox" from this directory. + +[tox] +skipsdist = True +envlist = + flake8 + py37 + +[testenv:flake8] +deps = + flake8 +skip_install = True +commands = flake8 \ + auto_scheduler + +[testenv] +deps = + pytest + -rrequirements.txt +commands = + pytest diff --git a/utils.py b/utils.py index 7259fdf..4c839e5 100644 --- a/utils.py +++ b/utils.py @@ -2,6 +2,8 @@ import logging import settings import os +from auto_scheduler import Twolineelement, Satellite + def read_priorities_transmitters(filename): # Priorities and favorite transmitters @@ -31,27 +33,63 @@ def get_priority_passes(passes, priorities, favorite_transmitters, only_priority normal = [] for satpass in passes: # Is this satellite a priority satellite? - if satpass['id'] in priorities: + if satpass['satellite']['id'] in priorities: # Is this transmitter a priority transmitter? - if satpass['uuid'] == favorite_transmitters[satpass['id']]: - satpass['priority'] = priorities[satpass['id']] - satpass['uuid'] = favorite_transmitters[satpass['id']] + if satpass['transmitter']['uuid'] == favorite_transmitters[satpass['satellite']['id']]: + satpass['priority'] = priorities[satpass['satellite']['id']] + satpass['transmitter']['uuid'] = favorite_transmitters[satpass['satellite']['id']] # Add if priority is high enough if satpass['priority'] >= min_priority: priority.append(satpass) elif only_priority: # Find satellite transmitter with highest number of good observations - max_good_count = max([s['good_count'] for s in passes if s["id"] == satpass["id"]]) + max_good_count = max([s['transmitter']['good_count'] for s in passes if s['satellite']["id"] == satpass['satellite']["id"]]) if max_good_count > 0: satpass['priority'] = \ (float(satpass['altt']) / 90.0) \ - * satpass['success_rate'] \ - * float(satpass['good_count']) / max_good_count + * satpass['transmitter']['success_rate'] \ + * float(satpass['transmitter']['good_count']) / max_good_count else: - satpass['priority'] = (float(satpass['altt']) / 90.0) * satpass['success_rate'] + satpass['priority'] = (float(satpass['altt']) / 90.0) * satpass['transmitter']['success_rate'] # Add if priority is high enough if satpass['priority'] >= min_priority: normal.append(satpass) return (priority, normal) + + +def satellites_from_transmitters(transmitters, tles): + ''' + Extract interesting satellites from receivable transmitters + ''' + satellites = [] + for transmitter in transmitters: + for tle in tles: + if tle['norad_cat_id'] == transmitter['norad_cat_id']: + satellites.append(Satellite(Twolineelement(*tle['lines']), + transmitter['uuid'], + transmitter['success_rate'], + transmitter['good_count'], + transmitter['data_count'], + transmitter['mode'])) + return satellites + + +def print_scheduledpass_summary(scheduledpasses, ground_station_id, printer=print): + printer("GS | Sch | NORAD | Start time | End time | El | " + + "Priority | Transmitter UUID | Mode | Satellite name ") + + for satpass in sorted(scheduledpasses, key=lambda satpass: satpass['tr']): + printer( + "%3d | %3.d | %05d | %s | %s | %3.0f | %4.6f | %s | %-10s | %s"%( + ground_station_id, + satpass['scheduled'], + int(satpass['satellite']['id']), + satpass['tr'].strftime("%Y-%m-%dT%H:%M:%S"), + satpass['ts'].strftime("%Y-%m-%dT%H:%M:%S"), + float(satpass['altt']) if satpass['altt'] else 0., + satpass.get('priority', 0.0), + satpass['transmitter'].get('uuid', ''), + satpass['transmitter'].get('mode', ''), + satpass['satellite']['name'].rstrip()))