These are all based on Jim Hasslett's original concept for an RPi-based satellite receiver.
schedule_all.sh
#!/bin/bash # Update Satellite Information wget -qr https://www.celestrak.com/NORAD/elements/weather.txt -O /home/pi/weather/predict/weather.txt grep "NOAA 15" /home/pi/weather/predict/weather.txt -A 2 > /home/pi/weather/predict/weather.tle grep "NOAA 18" /home/pi/weather/predict/weather.txt -A 2 >> /home/pi/weather/predict/weather.tle grep "NOAA 19" /home/pi/weather/predict/weather.txt -A 2 >> /home/pi/weather/predict/weather.tle grep "METEOR-M 2" /home/pi/weather/predict/weather.txt -A 2 >> /home/pi/weather/predict/weather.tle #Remove all AT jobs for i in `atq | awk '{print $1}'`;do atrm $i;done #Schedule Satellite Passes: /home/pi/weather/predict/schedule_satellite.sh "NOAA 19" 137.1000 /home/pi/weather/predict/schedule_satellite.sh "NOAA 18" 137.9125 /home/pi/weather/predict/schedule_satellite.sh "NOAA 15" 137.6200
schedule_satellite.sh
#!/bin/bash PREDICTION_START=`/usr/bin/predict -t /home/pi/weather/predict/weather.tle -p "${1}" | head -1` PREDICTION_END=`/usr/bin/predict -t /home/pi/weather/predict/weather.tle -p "${1}" | tail -1` var2=`echo $PREDICTION_END | cut -d " " -f 1` MAXELEV=`/usr/bin/predict -t /home/pi/weather/predict/weather.tle -p "${1}" | awk -v max=0 '{if($5>max){max=$5}}END{print max}'` while [ `date --date="TZ=\"UTC\" @${var2}" +%D` == `date +%D` ]; do START_TIME=`echo $PREDICTION_START | cut -d " " -f 3-4` var1=`echo $PREDICTION_START | cut -d " " -f 1` var3=`echo $START_TIME | cut -d " " -f 2 | cut -d ":" -f 3` TIMER=`expr $var2 - $var1 + $var3` OUTDATE=`date --date="TZ=\"UTC\" $START_TIME" +%Y%m%d-%H%M%S` if [ $MAXELEV -gt 19 ] then echo ${1//" "}${OUTDATE} $MAXELEV echo "/home/pi/weather/predict/receive_and_process_satellite.sh \"${1}\" $2 /home/pi/weather/${1//" "}${OUTDATE} /home/pi/weather/predict/weather.tle $var1 $TIMER" | at `date --date="TZ=\"UTC\" $START_TIME" +"%H:%M %D"` fi nextpredict=`expr $var2 + 60` PREDICTION_START=`/usr/bin/predict -t /home/pi/weather/predict/weather.tle -p "${1}" $nextpredict | head -1` PREDICTION_END=`/usr/bin/predict -t /home/pi/weather/predict/weather.tle -p "${1}" $nextpredict | tail -1` MAXELEV=`/usr/bin/predict -t /home/pi/weather/predict/weather.tle -p "${1}" $nextpredict | awk -v max=0 '{if($5>max){max=$5}}END{print max}'` var2=`echo $PREDICTION_END | cut -d " " -f 1` done
receive_and_process_satellite.sh
#!/bin/bash # $1 = Satellite Name # $2 = Frequency # $3 = FileName base # $4 = TLE File # $5 = EPOC start time # $6 = Time to capture sudo timeout $6 rtl_fm -f ${2}M -s 60k -g 45 -p 55 -E wav -E deemp -F 9 - | sox -t wav - $3.wav rate 11025 PassStart=`expr $5 + 90` if [ -e $3.wav ] then /usr/local/bin/wxmap -T "${1}" -H $4 -p 0 -l 0 -o $PassStart ${3}-map.png /usr/local/bin/wxtoimg -m ${3}-map.png -e ZA $3.wav $3.png fi