#!/bin/bash

# Eine Serie von Fotos mit Zeitstempel als Name aufnehmen und auf dem Raspi speichern
# Parameter 1 - Wartezeit
# Parameter 2 - Anzahl Fotos
# Parameter 3 - FTP bei FTP_YES wird übertragen
# Parameter 4 - VIDEO bei VIDEO_YES Teitraffer erstellt
# Parameter 5 - neue Belichtungszeit in Sekunden (muss möglicher Einstellung entsprechen)
# Parameter 6 - neue Blende Blendenwert oder Auswahl
# Parameter 7 - ISO Wert 
 
# Aufrufbeispiel:   /home/pi/allsky/getSerie.sh 2 1 FTP_NO VIDEO_NO 1/1600 0 1600
 
# Parameter 1 Wartezeit aus Aufruf übernehmen
if [ "$1" != '' ]
  then
    wartezeit=$1
  else
    wartezeit=0
fi

# Parameter 2 Anzahl Fotos aus Aufruf übernehmen
if [ "$2" != '' ]
  then
    anzahl=$2
  else
    anzahl=1
fi

# Parameter 3 FTP Übertragung
if [ "$3" != '' ]
  then
    FTP=$3
  else
    FTP="FTP_NO"
fi

# Parameter 4 Zeitraffer Video 
if [ "$4" != '' ]
  then
    VIDEO=$4
  else
    VIDEO="VIDEO_NO"
fi

# Parameter 5 neue Belichtungszeit in Sekunden
if [ "$5" != '' ]
  then
    BELI=$5
	gphoto2 --set-config shutterspeed=$BELI 
  else
    BELI="wie Kamera eingestellt"
fi

# Parameter 6 neue Blende Blendenwert oder Auswahl
if [ "$6" != '' ]
  then
    BLENDE=$6
	gphoto2 --set-config aperture=$BLENDE 
  else
    BLENDE="wie Kamera eingestellt"
fi

# Parameter 7 neuer ISO Wert 
# steht in Kamera auf 3000 das geht nicht per Befehl einzustellen, da Firmware Hack
if [ "$7" != '' ]
  then
    ISOWERT=$7
	gphoto2 --set-config iso=$ISOWERT 
  else
    ISOWERT="wie Kamera eingestellt"
fi


# Bildschirm putzen
clear 

# Ausgabeverzeichnis anlegen
ordner=$(date +%Y%m%d)
mkdir /home/pi/allsky/$ordner
cd /home/pi/allsky/$ordner

# Parameter der Aufnahmeserie in Textdatei merken
textdatei=$(date +%Y%m%d_%H%M%S)_PARAMETER.txt
echo >>$textdatei
echo "Parameteruebersicht Programmaufruf _____________________________________________________" >>$textdatei
echo >>$textdatei
echo "Wartezeit zwischen zwei Aufnahmen  : " $wartezeit "Sekunden"      >> $textdatei
echo "Anzahl Fotos                       : " $anzahl   				    >> $textdatei
echo "FTP Uebertragung starten           : " $FTP					    >> $textdatei
echo "Zeitraffervideo                    : " $VIDEO					    >> $textdatei
echo "Belichtungszeit pro Bild in Sek.   : " $BELI					    >> $textdatei
echo "Blendenwert                        : " $BLENDE				    >> $textdatei
echo "ISO Wert                           : " $ISOWERT 				    >> $textdatei
echo "Ausgabeordner fuer Dateien         :  /home/pi/allsky/$ordner"	>> $textdatei
echo >>$textdatei
echo "aktuelle Kameraeinstellungen fuer Serie_________________________________________________" >>$textdatei
echo >>$textdatei
gphoto2 --get-config cameramodel --get-config datetime --get-config iso --get-config aperture --get-config shutterspeed --get-config imageformat >> $textdatei

# Startparameter ausgeben

echo 
echo -e "\033[47m\033[34m\033[1m-----------------------------------------------------------------------------\033[0m"
echo -e "\033[47m\033[34m\033[1mProgramm gestartet mit folgenden Parametern:                                 \033[0m"
echo -e "\033[33m\033[1m"
echo "Wartezeit zwischen zwei Aufnahmen  : " $wartezeit "Sekunden"
echo "Anzahl Fotos                       : " $anzahl
echo "FTP Übertragung starten            : " $FTP
echo "Zeitraffervideo                    : " $VIDEO
echo "Belichtungszeit pro Bild in Sek.   : " $BELI
echo "Blendenwert                        : " $BLENDE	
echo "ISO Wert                           : " $ISOWERT 	
echo "Ausgabeordner für Dateien          :  /home/pi/allsky/$ordner"

for ((i=1;i<=$anzahl;i++))
do
echo 
datei=$(date +%Y%m%d_%H%M%S).jpg
echo -e "\033[33m\033[1mEs folgt Aufnahme von Datei "$i/$anzahl" : "$datei
echo
gphoto2 --capture-image-and-download --filename $datei
echo
echo "Datei aufgenommen und kopiert: " $datei 
# FTP Übertragung
if [ "$FTP" == 'FTP_YES' ]
  then
    hostname="my.server.com"
    ftp $hostname  <<EOF
    binary
	mkdir $ordner
	cd $ordner
    put $datei
    quit
EOF
    echo "Datei per FTP Übertragen: " $datei 
  else
  echo "FTP disabled"
fi
echo
echo "verbleibende Aufnahmen: "$(($anzahl-$i))" von " $anzahl
echo -e "\033[47m\033[34m-----------------------------------------------------------------------------\033[0m"
echo

# Warten bis zum nächsten Foto
# sleep .5 # Waits 0.5 second.
# sleep 5  # Waits 5 seconds.
# sleep 5s # Waits 5 seconds.
# sleep 5m # Waits 5 minutes.
# sleep 5h # Waits 5 hours.
# sleep 5d # Waits 5 days.

if [ "$i" != "$anzahl" ]
  then
  echo "Ich warte $wartezeit Sekunden bis zur nächste Aufnahme"
  sleep $wartezeit
  else
  sleep 1s
fi

done

# Zeiraffer erstellen
echo
if [ "$VIDEO" == 'VIDEO_YES' ]
  then
    filmdatei=$(date +%Y%m%d_%H%M%S).mp4
    mencoder "mf://*.jpg" -mf fps=10:type=jpg -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:autoaspect:vbitrate=7000 -o $filmdatei
    echo -e "\033[47m\033[34mZeitraffer erstellt: $ordner.mp4\033[0m" 
	hostname="my.server.com"
    ftp $hostname  <<EOF
    binary
	mkdir $ordner
	cd $ordner
    put $filmdatei
    quit
EOF
    echo -e "\033[47m\033[34mZeitraffer per FTP übertragen: $ordner.mp4\033[0m" 
  else
    echo -e "\033[47m\033[34mZeitraffer disabled - keine Aktion\033[0m"
fi

echo >>$textdatei
echo "________________________________________________________________________________________" >>$textdatei
echo "Dateien im Verzeichnis: $ordner" >>$textdatei
echo "________________________________________________________________________________________" >>$textdatei
echo >>$textdatei
ls -la >> $textdatei

# FTP Übertragung Textdatei
if [ "$FTP" == 'FTP_YES' ]
  then
    hostname="my.server.com"
    ftp $hostname  <<EOF
    binary
	mkdir $ordner
	cd $ordner
    put $textdatei
    quit
EOF
    echo -e "\033[47m\033[34mDatei per FTP Übertragen: $textdatei \033[0m"
  else
  echo -e "\033[47m\033[34mFTP disabled - keine Aktion \033[0m"
fi


