Differenze tra le versioni di "Timelapse"

Da Lecco.
 
 
(18 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
=== TimeLapse ===
 
 
 
  Ideato da: Gigiv
 
  Ideato da: Gigiv
 
  Licenza: GPL
 
  Licenza: GPL
  Download:
+
  Download: [http://www.2shared.com/file/5198891/d2fe53dc/timelapsetar.html tar.gz]
 +
 
 +
== Introduzione ==
 +
Questo script serve ad utilizzare una semplice fotocamera digitale per l'acquisizione ciclica di scatti, applicare data e ora allo scatto acquisito ed inviarlo ad un server remoto tramite FTP
 +
 
 +
== Requisiti ==
 +
Per la realizzazione del tutto è stato usato:
 +
 
 +
=== Hardware ===
 +
* PC dotato di porta USB equipaggiato con Ubuntu 7.04 Server (la potenza della macchina è ininfluente. Se riesce a girare Ubuntu, riuscirà a girare anche lo script)
 +
* Fotocamera Canon Powershot A400/A520 (potete vedere le fotocamere supportate sul sito del software di cattura citato più avanti)
 +
 
 +
=== Software ===
 +
* [http://capture.sourceforge.net/ Capture]<br>
 +
:Software di cattura degli scatti da fotocamere Canon. In alternativa potete usare [http://www.gphoto.org/ gPhoto2] che supporta anche Nikon e Olympus.
 +
* [http://imagemagick.org ImageMagik]<br>
 +
:Tools di modifica dinamica delle immagini. Utilizzato per l'aggiunta di data e ora all'immagine.
 +
* [http://www.ncftpd.com/ NcFTP]<br>
 +
:Client FTP per l'uppload della foto sul server remoto.
 +
* [http://sourceforge.net/projects/libptp/ libptp]<br>
 +
:Librerie di comunicazione con la fotocamera. Necessarie per il funzionamento di Capture.
 +
* [http://libusb.wiki.sourceforge.net/ libusb]<br>
 +
:Librerie per l'accesso agli USB Device. Necessarie per il funzionamento di Capture.
 +
 
 +
== Capture ==
 +
 
 +
Capture è un ottimo software di controllo di fotocamere Canon.<br>
 +
Il funzionamento è gestito tramite linea di comando con un ampia gamma di opzioni.<br>
 +
Per il lancio e lo stop del demone si utilizza rispettivamente
 +
<code>
 +
~$ capture start
 +
~$ capture quit
 +
</code>
 +
Per il passaggio delle opzioni al demone si devono includere le opzioni con i rispettivi valori tra apici singoli.<br>
 +
Ad esempio per zommare si dovrà usare
 +
<code>
 +
~$ capture 'zoom 5'
 +
</code>
 +
 
 +
== Codice ==
 +
 
 +
<pre><nowiki>
 +
 
 +
#!/bin/bash
 +
#
 +
 
 +
## Questa variabile indica lo zoom da impostare alla macchina all'avvio del demone
 +
ZOOM=6
 +
 
 +
## Credenziali di accesso al server FTP remoto per l'upload dell'immagine scattata
 +
HOST=''
 +
USER=''
 +
PASS=''
 +
 
 +
## Cartella di destinazione sul server FTP remoto
 +
DEST=''
 +
 
 +
## Tempo di attesa tra uno scatto e l'altro
 +
WAIT=240
 +
 
 +
 
 +
## Funzione di avvio del demone capture
 +
function start_capture() {
 +
## Viene controllato che si abbiano i permessi di scrittura nella cartella /var/run/
 +
        ## altrimenti lo script termina
 +
if [ ! -w '/var/run' ]; then
 +
echo -n `basename $0`
 +
echo -e ": Non si hanno abbastanza privilegi per avviare il demone\n";
 +
exit 1;
 +
fi
 +
 +
## Viene avviato il demone e viene salvato il pid in un file
 +
capture start
 +
pidof capture > /var/run/capture.pid
 +
 +
## Imposta lo zoom della macchina e imposta il demone per la cattura a risoluzione
 +
        ## ridotta
 +
capture "zoom $ZOOM"
 +
capture 'size small'
 +
}
 +
 
 +
function stop_capture() {
 +
## Viene controllato che si abbiano i permessi di scrittura nella cartella /var/run/
 +
        ## altrimenti lo script termina
 +
if [ ! -w '/var/run' ]; then
 +
echo -n `basename $0`
 +
echo -e ": Non si hanno abbastanza privilegi per avviare il demone\n";
 +
exit 1;
 +
fi
 +
 +
## Viene terminato il demone e viene rimosso il file contenente il pid
 +
capture quit
 +
rm /var/run/capture.pid
 +
}
 +
 
 +
 
 +
case "$1" in
 +
 
 +
start)
 +
start_capture
 +
;;
 +
 +
stop)
 +
stop_capture
 +
;;
 +
 +
start-cicle)
 +
while true
 +
do
 +
## Se non esiste il file del pid lancia il demone
 +
if [ ! -e '/var/run/capture.pid' ]; then
 +
start_capture
 +
fi
 +
 +
## Ricava il pid del processo demone e controlla che sia stato avviato
 +
PID=`cat /var/run/capture.pid`
 +
ps -p $PID > /dev/null
 +
 +
## Se il processo del demone non esiste, lo avvia
 +
if [ $? -eq 1 ]; then
 +
start_capture
 +
fi
 +
 +
## Cattura l'immagine
 +
capture 'capture /tmp/capture-image.jpg'
 +
 +
## Ricava la data e l'ora attuali e li inserisce nell'immagine
 +
DATE=$(/bin/date '+%d/%m/%Y %H:%M:%S')
 +
convert /tmp/capture-image.jpg -gravity southeast -pointsize 20 -stroke black -strokewidth 4 \
 +
-annotate 0 "$DATE" -stroke white -strokewidth 1 -fill white -annotate 0 "$DATE" \
 +
/tmp/capture-image-date.jpg
 +
 +
## Invia l'immagine al server FTP remoto
 +
ncftpput -u $USER -p $PASS -C $HOST /tmp/capture-image-date.jpg $DEST
 +
 +
## Attende fino al successivo scatto
 +
sleep $WAIT
 +
done
 +
;;
 +
esac
 +
 
 +
</nowiki></pre>
 +
 
 +
== Sintassi ==
 +
<code>~$ ./timelapse start</code>
 +
 
 +
Avvia il demone capture.<br>
 +
Per lanciare questo comando si necessitano dei privilegi di scrittura sulla directory /var/run.
 +
 
 +
<code>~$ ./timelapse start-cicle</code>
 +
 
 +
Avvia la cattura ciclica degli scatti e relativo upload. Questo comando può essere lanciato anche da utente semplice.
 +
 
 +
<code>~$ ./timelapse stop</code>
  
prova
+
Ferma il demone capture.<br>
 +
Anche questo comando necessita dei privilegi di scrittura sulla directory /var/run.

Versione attuale delle 16:53, 28 mar 2009

Ideato da: Gigiv
Licenza: GPL
Download: tar.gz

Introduzione

Questo script serve ad utilizzare una semplice fotocamera digitale per l'acquisizione ciclica di scatti, applicare data e ora allo scatto acquisito ed inviarlo ad un server remoto tramite FTP

Requisiti

Per la realizzazione del tutto è stato usato:

Hardware

  • PC dotato di porta USB equipaggiato con Ubuntu 7.04 Server (la potenza della macchina è ininfluente. Se riesce a girare Ubuntu, riuscirà a girare anche lo script)
  • Fotocamera Canon Powershot A400/A520 (potete vedere le fotocamere supportate sul sito del software di cattura citato più avanti)

Software

Software di cattura degli scatti da fotocamere Canon. In alternativa potete usare gPhoto2 che supporta anche Nikon e Olympus.
Tools di modifica dinamica delle immagini. Utilizzato per l'aggiunta di data e ora all'immagine.
Client FTP per l'uppload della foto sul server remoto.
Librerie di comunicazione con la fotocamera. Necessarie per il funzionamento di Capture.
Librerie per l'accesso agli USB Device. Necessarie per il funzionamento di Capture.

Capture

Capture è un ottimo software di controllo di fotocamere Canon.
Il funzionamento è gestito tramite linea di comando con un ampia gamma di opzioni.
Per il lancio e lo stop del demone si utilizza rispettivamente

~$ capture start
~$ capture quit

Per il passaggio delle opzioni al demone si devono includere le opzioni con i rispettivi valori tra apici singoli.
Ad esempio per zommare si dovrà usare

~$ capture 'zoom 5'

Codice


#!/bin/bash
#

## Questa variabile indica lo zoom da impostare alla macchina all'avvio del demone
ZOOM=6

## Credenziali di accesso al server FTP remoto per l'upload dell'immagine scattata
HOST=''
USER=''
PASS=''

## Cartella di destinazione sul server FTP remoto
DEST=''

## Tempo di attesa tra uno scatto e l'altro
WAIT=240


## Funzione di avvio del demone capture
function start_capture() {
	## Viene controllato che si abbiano i permessi di scrittura nella cartella /var/run/
        ## altrimenti lo script termina
	if [ ! -w '/var/run' ]; then
		echo -n `basename $0`
		echo -e ": Non si hanno abbastanza privilegi per avviare il demone\n";
		exit 1;
	fi
	
	## Viene avviato il demone e viene salvato il pid in un file
	capture start
	pidof capture > /var/run/capture.pid
	
	## Imposta lo zoom della macchina e imposta il demone per la cattura a risoluzione
        ## ridotta
	capture "zoom $ZOOM"
	capture 'size small'
}

function stop_capture() {
	## Viene controllato che si abbiano i permessi di scrittura nella cartella /var/run/
        ## altrimenti lo script termina
	if [ ! -w '/var/run' ]; then
		echo -n `basename $0`
		echo -e ": Non si hanno abbastanza privilegi per avviare il demone\n";
		exit 1;
	fi
	
	## Viene terminato il demone e viene rimosso il file contenente il pid
	capture quit
	rm /var/run/capture.pid
}


case "$1" in

	start)
		start_capture
		;;
		
	stop)
		stop_capture
		;;
		
	start-cicle)
		while true
		do
			## Se non esiste il file del pid lancia il demone
			if [ ! -e '/var/run/capture.pid' ]; then
				start_capture
			fi
			
			## Ricava il pid del processo demone e controlla che sia stato avviato			
			PID=`cat /var/run/capture.pid`
			ps -p $PID > /dev/null
			
			## Se il processo del demone non esiste, lo avvia
			if [ $? -eq 1 ]; then	
				start_capture
			fi	
			
			## Cattura l'immagine
			capture 'capture /tmp/capture-image.jpg'
			
			## Ricava la data e l'ora attuali e li inserisce nell'immagine
			DATE=$(/bin/date '+%d/%m/%Y %H:%M:%S')
			convert /tmp/capture-image.jpg -gravity southeast -pointsize 20 -stroke black -strokewidth 4 \
			-annotate 0 "$DATE" -stroke white -strokewidth 1 -fill white -annotate 0 "$DATE" \
			/tmp/capture-image-date.jpg
			
			## Invia l'immagine al server FTP remoto
			ncftpput -u $USER -p $PASS -C $HOST /tmp/capture-image-date.jpg $DEST
			
			## Attende fino al successivo scatto
			sleep $WAIT		
		done
		;;
esac

Sintassi

~$ ./timelapse start

Avvia il demone capture.
Per lanciare questo comando si necessitano dei privilegi di scrittura sulla directory /var/run.

~$ ./timelapse start-cicle

Avvia la cattura ciclica degli scatti e relativo upload. Questo comando può essere lanciato anche da utente semplice.

~$ ./timelapse stop

Ferma il demone capture.
Anche questo comando necessita dei privilegi di scrittura sulla directory /var/run.