Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

receive_meteor.sh 3.1 KiB

4 anni fa
4 anni fa
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #!/bin/bash
  2. ## import common lib
  3. . "$HOME/.noaa.conf"
  4. . "$HOME/.tweepy.conf"
  5. . "$NOAA_HOME/common.sh"
  6. SYSTEM_MEMORY=$(free -m | awk '/^Mem:/{print $2}')
  7. if [ "$SYSTEM_MEMORY" -lt 2000 ]; then
  8. log "The system doesn't have enough space to store a Meteor pass on RAM" "INFO"
  9. RAMFS_AUDIO="${METEOR_OUTPUT}"
  10. fi
  11. ## pass start timestamp and sun elevation
  12. PASS_START=$(expr "$5" + 90)
  13. SUN_ELEV=$(python3 "$NOAA_HOME"/sun.py "$PASS_START")
  14. if pgrep "rtl_fm" > /dev/null
  15. then
  16. log "There is an already running rtl_fm instance but I dont care for now, I prefer this pass" "INFO"
  17. pkill -9 -f rtl_fm
  18. fi
  19. # $1 = Satellite Name
  20. # $2 = Frequency
  21. # $3 = FileName base
  22. # $4 = TLE File
  23. # $5 = EPOC start time
  24. # $6 = Time to capture
  25. # $7 = Satellite max elevation
  26. log "Starting rtl_fm record" "INFO"
  27. timeout "${6}" /usr/local/bin/rtl_fm ${BIAS_TEE} -M raw -f "${2}"M -s 288k -g 48 -p 1 | sox -t raw -r 288k -c 2 -b 16 -e s - -t wav "${RAMFS_AUDIO}/audio/${3}.wav" rate 96k
  28. log "Demodulation in progress (QPSK)" "INFO"
  29. meteor_demod -B -o "${METEOR_OUTPUT}/${3}.qpsk" "${RAMFS_AUDIO}/audio/${3}.wav"
  30. if [ "$DELETE_AUDIO" = true ]; then
  31. log "Deleting audio files" "INFO"
  32. rm "${RAMFS_AUDIO}/audio/${3}.wav"
  33. else
  34. log "Moving audio files out to the SD card" "INFO"
  35. mv "${RAMFS_AUDIO}/audio/${3}.wav" "${NOAA_OUTPUT}/audio/${3}.wav"
  36. fi
  37. log "Decoding in progress (QPSK to BMP)" "INFO"
  38. medet_arm "${METEOR_OUTPUT}/${3}.qpsk" "${METEOR_OUTPUT}/${3}" -cd
  39. rm "${METEOR_OUTPUT}/${3}.qpsk"
  40. if [ -f "${METEOR_OUTPUT}/${3}.dec" ]; then
  41. if [ "${SUN_ELEV}" -lt "${SUN_MIN_ELEV}" ]; then
  42. log "I got a successful ${3}.dec file. Decoding APID 68" "INFO"
  43. medet_arm "${METEOR_OUTPUT}/${3}.dec" "${NOAA_OUTPUT}/images/${3}-122" -r 68 -g 68 -b 68 -d
  44. else
  45. log "I got a successful ${3}.dec file. Creating false color image" "INFO"
  46. medet_arm "${METEOR_OUTPUT}/${3}.dec" "${NOAA_OUTPUT}/images/${3}-122" -r 65 -g 65 -b 64 -d
  47. fi
  48. log "Rectifying image to adjust aspect ratio" "INFO"
  49. python3 "${NOAA_HOME}/rectify.py" "${NOAA_OUTPUT}/images/${3}-122.bmp"
  50. /usr/bin/convert -thumbnail 300 "${NOAA_OUTPUT}/images/${3}-122-rectified.jpg" "${NOAA_OUTPUT}/images/thumb/${3}-122-rectified.jpg"
  51. rm "${METEOR_OUTPUT}/${3}.bmp"
  52. sqlite3 /home/pi/raspberry-noaa/panel.db "insert into decoded_passes (pass_start, file_path, daylight_pass, is_noaa) values ($5,\"$3\", 1,0);"
  53. pass_id=$(sqlite3 /home/pi/raspberry-noaa/panel.db "select id from decoded_passes order by id desc limit 1;")
  54. if [ -n "$CONSUMER_KEY" ]; then
  55. log "Posting to Twitter" "INFO"
  56. python3 "${NOAA_HOME}/post.py" "$1 ${START_DATE} Resolución completa: https://weather.reyni.co/detail.php?id=$pass_id" "$7" "${NOAA_OUTPUT}/images/${3}-122-rectified.jpg"
  57. fi
  58. sqlite3 /home/pi/raspberry-noaa/panel.db "update predict_passes set is_active = 0 where (predict_passes.pass_start) in (select predict_passes.pass_start from predict_passes inner join decoded_passes on predict_passes.pass_start = decoded_passes.pass_start where decoded_passes.id = $pass_id);"
  59. else
  60. log "Decoding failed, either a bad pass/low SNR or a software problem" "ERROR"
  61. fi