1_capture 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #!/bin/bash
  2. source ~/BallonSonde/variables.sh
  3. CONVERTLL_PATH="/home/pi/BallonSonde/convert_ll_dec.py"
  4. READ_NMEA_PATH="/home/pi/BallonSonde/read_nmea.py"
  5. rm -rf /ramfs/*.jpg
  6. echo "=> Acquisition on !"
  7. DATE=$(date +%y%m%d_%H%M%S)
  8. ###########################################
  9. # Si présence d'un GPS quelconque
  10. # On va traîter les infos et les intégrer
  11. # dans les métadatas.
  12. acquire_with_gps() {
  13. DATA=$(cat /ramfs/.out)
  14. NS=$(echo $DATA| tr ' ' '\n' | grep NS | cut -d'=' -f2 | cut -d',' -f1)
  15. EW=$(echo $DATA| tr ' ' '\n' | grep EW | cut -d'=' -f2 | cut -d',' -f1)
  16. LAT=$(echo $DATA| tr ' ' '\n' | grep 'lat=' | cut -d'=' -f2 | cut -d',' -f1)
  17. echo "Latitude $LAT"
  18. LATD=$($CONVERTLL_PATH $LAT | grep "d:" | cut -d':' -f2)
  19. LATM=$($CONVERTLL_PATH $LAT | grep "m:" | cut -d':' -f2)
  20. LATS=$($CONVERTLL_PATH $LAT | grep "s:" | cut -d':' -f2 | sed 's/\.//' )
  21. echo "$LATD $LATM $LATS"
  22. LON=$(echo $DATA| tr ' ' '\n' | grep 'lon=' | cut -d'=' -f2 | cut -d',' -f1)
  23. echo "Longitude : $LON"
  24. LOND=$($CONVERTLL_PATH $LON| grep "d:" | cut -d':' -f2)
  25. LONM=$($CONVERTLL_PATH $LON | grep "m:" | cut -d':' -f2)
  26. LONS=$($CONVERTLL_PATH $LON | grep "s:" | cut -d':' -f2 | sed 's/\.//')
  27. echo "$LOND $LONM $LONS"
  28. ALTITUDE=$(echo $DATA| tr ' ' '\n' | grep 'alt=' | cut -d'=' -f2 | cut -d',' -f1)
  29. echo "$ALTITUDE meters ! Wooo so hiiigh !"
  30. # Creation du script pour ajout des données Exif dans le JPG
  31. cat <<EOF > /ramfs/.conf_exif
  32. # Ajouter aux metadatas les informations de geolocalisation
  33. # 'add' pour ajouter les informations
  34. # 'set' pour remplacer celles déjà exisante
  35. # 'del' pour les supprimer (sans préciser de valeur)
  36. add Exif.GPSInfo.GPSLatitudeRef ${NS}
  37. add Exif.GPSInfo.GPSLatitude ${LATD}/1 ${LATM}/1 ${LATS}/10000
  38. add Exif.GPSInfo.GPSLongitudeRef ${EW}
  39. add Exif.GPSInfo.GPSLongitude ${LOND}/1 ${LONM}/1 ${LONS}/10000
  40. EOF
  41. echo $LAT
  42. if [ "$LAT" == "NO_DATA" ]; then
  43. echo "Don't have GPS datas, continue without these datas"
  44. else
  45. exiv2 -m /ramfs/.conf_exif /ramfs/$DATE.jpg
  46. exiftool -GPSAltitude=$ALTITUDE /ramfs/$DATE.jpg -overwrite_original
  47. fi
  48. cp /ramfs/$DATE.jpg ~/_Pictures
  49. echo "Picz $DATE.jpg saved in RAM and is flagged to .canbevoncerted"
  50. echo "$DATE.jpg" > /ramfs/.canbeconvert
  51. }
  52. ##########################################
  53. # Pas de GPS, pas de métadatas.
  54. acquire_without_gps() {
  55. cp /ramfs/$DATE.jpg ~/_Pictures
  56. echo "$DATE.jpg" > /ramfs/.canbeconvert
  57. echo "Picz $DATE.jpg saved in RAM and is flagged to .canbevoncerted"
  58. }
  59. ##########################################
  60. # Acquisition de l'image
  61. # Boucle principale
  62. raspistill -o /ramfs/$DATE.jpg
  63. if [ $? -eq 0 ]; then
  64. if [[ $HAVEGPS == 1 ]]
  65. then
  66. $READ_NMEA_PATH > /ramfs/.out
  67. cat /ramfs/.out | grep "Pas de signal GPS"
  68. if [[ $? -eq 0 ]]; then
  69. echo "Pas de signal GPS"
  70. acquire_without_gps
  71. else
  72. echo "Signal GPS OK"
  73. acquire_with_gps
  74. fi
  75. else
  76. acquire_without_gps
  77. fi
  78. sleep $DELAY_ACQUISITION
  79. else
  80. echo "Picz failed to be acquired..."
  81. /home/pi/BallonSonde/tx_process/4_tx_file /home/pi/BallonSonde/sound/error_camera.wav
  82. fi