def _communicate_tracking_info(self): """ Runs as a daemon thread, communicating tracking info to remote socket. Uses observer and satellite objects set by trackobject(). Will exit when observation_end timestamp is reached. """ sock = Commsocket(self._IP, self._PORT) sock.connect() # track satellite while self.is_alive: # check if we need to exit self.check_observation_end_reached() p = pinpoint(self.observer_dict, self.satellite_dict) if p['ok']: dict = { 'azimuth': p['az'].conjugate() * 180 / math.pi, 'altitude': p['alt'].conjugate() * 180 / math.pi, 'frequency': self._frequency * (1 - (p['rng_vlct'] / ephem.c)), 'tle0': self.satellite_dict['tle0'], 'tle1': self.satellite_dict['tle1'], 'tle2': self.satellite_dict['tle2'] } socketio.emit('update_rotator', dict, namespace='/update_status') self.send_to_socket(p, sock) time.sleep(self.SLEEP_TIME) sock.disconnect()
def get_status_info(): current_pass_json = {} scheduled_pass_json = {} current_pass_json['azimuth'] = 'NA' current_pass_json['altitude'] = 'NA' current_pass_json['frequency'] = 'NA' current_pass_json['tle0'] = 'NA' current_pass_json['tle1'] = 'NA' current_pass_json['tle2'] = 'NA' # current_pass_json = jsonify(current_pass_json) scheduled_pass_json['Info'] = 'There are no scheduled observations.' # scheduled_pass_json = jsonify(scheduled_pass_json) current_pass_sock = Commsocket('127.0.0.1', client_settings.CURRENT_PASS_TCP_PORT) scheduled_pass_sock = Commsocket('127.0.0.1', client_settings.TASK_FEEDER_TCP_PORT) current_pass_check = current_pass_sock.connect() scheduled_pass_check = scheduled_pass_sock.connect() if scheduled_pass_check: scheduled_pass_json = scheduled_pass_sock.send("Requesting scheduled observations\n") scheduled_pass_json = json.loads(scheduled_pass_json) else: logger.info('No observation currently') if current_pass_check: current_pass_json = current_pass_sock.send("Requesting current observations\n") current_pass_json = json.loads(current_pass_json) else: logger.info('No observation currently') # return current_pass_json return jsonify(observation=dict(current=current_pass_json, scheduled=scheduled_pass_json))
def _communicate_tracking_info(self): """ Runs as a daemon thread, communicating tracking info to remote socket. Uses observer and satellite objects set by trackobject(). Will exit when observation_end timestamp is reached. """ sock = Commsocket(self._IP, self._PORT) sock.connect() # track satellite while self.is_alive: # check if we need to exit self.check_observation_end_reached() p = pinpoint(self.observer_dict, self.satellite_dict) if p['ok']: self.send_to_socket(p, sock) time.sleep(self._sleep_time) sock.disconnect()
def _communicate_tracking_info(self): """ Runs as a daemon thread, communicating tracking info to remote socket. Uses observer and satellite objects set by trackobject(). Will exit when observation_end timestamp is reached. """ sock = Commsocket(self._IP, self._PORT) sock.connect() # track satellite while self.is_alive: # check if we need to exit self.check_observation_end_reached() p = pinpoint(self.observer_dict, self.satellite_dict) if p['ok']: self.send_to_socket(p, sock) time.sleep(self.SLEEP_TIME) sock.disconnect()
def get_jobs(): logger.info('Get jobs started') """Query SatNOGS Network API to GET jobs.""" url = urljoin(settings.SATNOGS_NETWORK_API_URL, 'jobs/') params = {'ground_station': settings.SATNOGS_STATION_ID} headers = {'Authorization': 'Token {0}'.format(settings.SATNOGS_API_TOKEN)} logger.debug('URL: {0}'.format(url)) logger.debug('Params: {0}'.format(params)) logger.debug('Headers: {0}'.format(headers)) logger.info('Trying to GET observation jobs from the network') response = requests.get(url, params=params, headers=headers, verify=settings.SATNOGS_VERIFY_SSL) if not response.status_code == 200: raise Exception('Status code: {0} on request: {1}'.format( response.status_code, url)) for job in scheduler.get_jobs(): if job.name in [spawn_observer.__name__]: job.remove() sock = Commsocket('127.0.0.1', settings.TASK_FEEDER_TCP_PORT) tasks = [] for obj in response.json(): tasks.append(obj) start = parser.parse(obj['start']) job_id = str(obj['id']) kwargs = {'obj': obj} logger.info('Adding new job: {0}'.format(job_id)) logger.debug('Observation obj: {0}'.format(obj)) scheduler.add_job(spawn_observer, 'date', run_date=start, id='observer_{0}'.format(job_id), kwargs=kwargs) tasks.reverse() while sys.getsizeof(json.dumps(tasks)) > sock.tasks_buffer_size: tasks.pop() b = sock.connect() if b: sock.send_not_recv(json.dumps(tasks)) else: logger.info('Task listener thread not online')
def get_jobs(): logger.info('Get jobs started') """Query SatNOGS Network API to GET jobs.""" url = urljoin(settings.NETWORK_API_URL, 'jobs/') params = {'ground_station': settings.GROUND_STATION_ID} headers = {'Authorization': 'Token {0}'.format(settings.API_TOKEN)} logger.debug('URL: {0}'.format(url)) logger.debug('Params: {0}'.format(params)) logger.debug('Headers: {0}'.format(headers)) logger.info('Trying to GET observation jobs from the network') response = requests.get(url, params=params, headers=headers, verify=settings.VERIFY_SSL) if not response.status_code == 200: raise Exception('Status code: {0} on request: {1}'.format(response.status_code, url)) for job in scheduler.get_jobs(): if job.name in [spawn_observer.__name__]: job.remove() sock = Commsocket('127.0.0.1', settings.TASK_FEEDER_TCP_PORT) tasks = [] for obj in response.json(): tasks.append(obj) start = parser.parse(obj['start']) job_id = str(obj['id']) kwargs = {'obj': obj} logger.info('Adding new job: {0}'.format(job_id)) logger.debug('Observation obj: {0}'.format(obj)) scheduler.add_job(spawn_observer, 'date', run_date=start, id='observer_{0}'.format(job_id), kwargs=kwargs) tasks.reverse() while sys.getsizeof(json.dumps(tasks)) > sock.tasks_buffer_size: tasks.pop() b = sock.connect() if b: sock.send_not_recv(json.dumps(tasks)) else: logger.info('Task listener thread not online')