This is a tool to automatically compute passes of satellites and schedule observations on the SatNOGS Network. You can schedule observations from your own station/s or from other stations. Be careful, a misuse of this tool can program a great number of observations on your station or on others, which can’t be deleted.

Installation

Assuming you are using Debian (i.e. Raspberry Pi) write these commands:

sudo apt-get update
sudo apt-get install git virtualenv python3-virtualenv

git clone https://gitlab.com/librespacefoundation/satnogs/satnogs-auto-scheduler.git
cd satnogs-auto-scheduler
virtualenv -p python3 env
source env/bin/activate
pip install .

You can verify your installed version with the following command:

$ ./schedule_single_station.py --version

Configuration

Copy the env-dist file to .env

cp env-dist .env

Edit .env file to add your SatNOGS Network API token, username and password in the SatNOGS network:

NETWORK_USERNAME = ‘XXX’
NETWORK_PASSWORD = ‘YYY’
SATNOGS_API_TOKEN = ‘ZZZ’

Test run

Perform a test to download orbital elements and transmitter priorities. The -n option computes the passes but does not schedule them (don’t forget it). This command calculates passes of all satellites from (now+10 minutes) to 1.0 hours on the <STATION_ID> scope:

./schedule_single_station.py -s <STATION_ID> -n

The results are stored in /tmp/cache in three different files

transmitters_<STATION_ID>.txt

tles_<STATION_ID>.txt

last_update_<STATION_ID>.txt

Transmitter file structure

This file contains the transmitters definitions for each satellite as defined in https://db.satnogs.org/transmitters. Each row represents a transmitter with the following plain text structure:

NORAD_CAT_ID, UUID, success rate (percentage), number of succesfull observations, number of total observations, transmitter mode

Example:
26931 2dCbF2jmsxFpHw8ApevTMd 16 55 334 AFSK

NORAD_CAT_ID: 26931 (corresponds to PCSAT)
UUID: 2dCbF2jmsxFpHw8ApevTMd
success rate (percentage): 16
number of successful observations: 55
number of total observations: 334
transmitter mode: AFSK

Setup priority scheduling

To limit the number of observations you must create a file called priorities file. This file has following row structure:

NORAD_CAT_ID, priority, UUID

Example:
33591 1.0 kE4VaYKpnFmzEquEjKKi8D

NORAD_CAT_ID: 33591
priority: 1.0
UUID: kE4VaYKpnFmzEquEjKKi8D

As this files uses information from the transmitters, you can obtain it from the transmitters file. For example, to calculate priorities for the APT transmissions of the three NOAA satellites, write following commands:

STATION_ID=<your_station_ID>
TRM_FILE="/tmp/cache/transmitters_${STATION_ID}.txt"
PRIO_FILE="priorities_${STATION_ID}.txt"
# NOAA-19
grep -e "33591" ${TRM_FILE} | grep -e "APT" | awk '{printf("%s 1.0 %s\n",$1,$2)}' > ${PRIO_FILE}
# NOAA 15
grep -e "25338" ${TRM_FILE} | grep -e "APT" | awk '{printf("%s 1.0 %s\n",$1,$2)}' >> ${PRIO_FILE}
# NOAA 18
grep -e "28654" ${TRM_FILE} | grep -e "APT" | awk '{printf("%s 1.0 %s\n",$1,$2)}' >> ${PRIO_FILE}

Now, once your priorities_<STATION_ID>.txt file is created, you can call schedule_single_station.py to calculate the passes for these satellites:

./schedule_single_station.py -s <STATION_ID> -n -d 24 -f -P priorities_<STATION_ID>.txt

The -d option is the duration of the schedule in hours (in the example 24 hours, keep in mind that only durations up to 2900 minutes are allowed). Don’t forget to add the -f option to schedule only the satellites you are interested in and not ALL the satellites. The -T option should be added if you are working with a test station.

If everything works as expected, remove the -n option and schedule:

./schedule_single_station.py -s <STATION_ID> -d 24 -f -P priorities_<STATION_ID>.txt

Now check the programmed observations in the dashboard.

You can always ask for help with:

./schedule_single_station.py --help