Differenze tra le versioni di "Timelapse"
(15 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 1: | Riga 1: | ||
Ideato da: Gigiv | Ideato da: Gigiv | ||
Licenza: GPL | Licenza: GPL | ||
− | Download: | + | Download: [http://www.2shared.com/file/5198891/d2fe53dc/timelapsetar.html tar.gz] |
== Introduzione == | == 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 == | == Requisiti == | ||
Riga 40: | Riga 40: | ||
</code> | </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> | ||
+ | |||
+ | Ferma il demone capture.<br> | ||
+ | Anche questo comando necessita dei privilegi di scrittura sulla directory /var/run. |
Versione attuale delle 17: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.