Differenze tra le versioni di "Timelapse"
(→Codice) |
|||
Riga 51: | Riga 51: | ||
## Credenziali di accesso al server FTP remoto per l'upload dell'immagine scattata | ## Credenziali di accesso al server FTP remoto per l'upload dell'immagine scattata | ||
− | HOST=' | + | HOST='' |
− | USER=' | + | USER='' |
− | PASS=' | + | PASS='' |
## Cartella di destinazione sul server FTP remoto | ## Cartella di destinazione sul server FTP remoto | ||
− | DEST=' | + | DEST='' |
## Tempo di attesa tra uno scatto e l'altro | ## Tempo di attesa tra uno scatto e l'altro | ||
− | WAIT= | + | WAIT=240 |
Versione delle 17:51, 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.