You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

68 regels
2.5 KiB

  1. #!/bin/bash
  2. ### Run as a normal user
  3. if [ $EUID -eq 0 ]; then
  4. echo "This script shouldn't be run as root."
  5. exit 1
  6. fi
  7. ## import common lib
  8. . "$HOME/.noaa.conf"
  9. . "$NOAA_HOME/common.sh"
  10. # $1 = Satellite Name
  11. # $2 = Frequency
  12. # $3 = FileName base
  13. # $4 = TLE File
  14. # $5 = EPOC start time
  15. # $6 = Time to capture
  16. # $7 = Satellite max elevation
  17. if [[ "$1" == *"NOAA"* ]]; then
  18. receive_script="receive_noaa"
  19. elif [[ "$1" == *"METEOR"* ]]; then
  20. receive_script="receive_meteor"
  21. else
  22. log "No recognized receive skript for satellite $1!" ERROR
  23. return -1
  24. fi
  25. log "Looking for passes of $1" INFO
  26. PREDICTION_START=$(predict -t "${NOAA_HOME}"/predict/weather.tle -p "${1}" | head -1)
  27. PREDICTION_END=$(predict -t "${NOAA_HOME}"/predict/weather.tle -p "${1}" | tail -1)
  28. if [ -z "$PREDICTION_START" ]; then
  29. log "predict did not return any values for $1!" ERROR
  30. log "predict -t \"${NOAA_HOME}\"/predict/weather.tle -p \"${1}\"" ERROR
  31. predict -t "${NOAA_HOME}"/predict/weather.tle -p "${1}" >> /var/log/noaa.log 2>&1
  32. fi
  33. var2=$(echo "${PREDICTION_END}" | cut -d " " -f 1)
  34. MAXELEV=$(predict -t "${NOAA_HOME}"/predict/weather.tle -p "${1}" | awk -v max=0 '{if($5>max){max=$5}}END{print max}')
  35. while [ "$(date --date="@${var2}" +%D)" = "$(date +%D)" ]; do
  36. START_TIME=$(echo "$PREDICTION_START" | cut -d " " -f 3-4)
  37. var1=$(echo "$PREDICTION_START" | cut -d " " -f 1)
  38. var3=$(echo "$START_TIME" | cut -d " " -f 2 | cut -d ":" -f 3)
  39. TIMER=$(expr "${var2}" - "${var1}" + "${var3}")
  40. OUTDATE=$(date --date="TZ=\"UTC\" ${START_TIME}" +%Y%m%d-%H%M%S)
  41. if [ "${MAXELEV}" -gt "${SAT_MIN_ELEV}" ]; then
  42. SATNAME=$(echo "$1" | sed "s/ //g")
  43. echo "${SATNAME}" "${OUTDATE}" "$MAXELEV"
  44. echo "${NOAA_HOME}/${receive_script}.sh \"${1}\" $2 ${SATNAME}-${OUTDATE} "${NOAA_HOME}"/predict/weather.tle \
  45. ${var1} ${TIMER} ${MAXELEV}" | at "$(date --date="TZ=\"UTC\" ${START_TIME}" +"%H:%M %D")"
  46. sqlite3 $HOME/raspberry-noaa/panel.db "insert or replace into predict_passes (sat_name,pass_start,pass_end,max_elev,is_active) values (\"$SATNAME\",$var1,$var2,$MAXELEV, 1);"
  47. else
  48. log "Max. elevation ${MAXELEV} too small for configured ${SAT_MIN_ELEV}" DEBUG
  49. fi
  50. NEXTPREDICT=$(expr "${var2}" + 60)
  51. PREDICTION_START=$(predict -t "${NOAA_HOME}"/predict/weather.tle -p "${1}" "${NEXTPREDICT}" | head -1)
  52. PREDICTION_END=$(predict -t "${NOAA_HOME}"/predict/weather.tle -p "${1}" "${NEXTPREDICT}" | tail -1)
  53. MAXELEV=$(predict -t "${NOAA_HOME}"/predict/weather.tle -p "${1}" "${NEXTPREDICT}" | awk -v max=0 '{if($5>max){max=$5}}END{print max}')
  54. var2=$(echo "${PREDICTION_END}" | cut -d " " -f 1)
  55. done