Differenze tra le versioni di "Timelapse"
Riga 48: | Riga 48: | ||
## Questa variabile indica lo zoom da impostare alla macchina all'avvio del demone | ## Questa variabile indica lo zoom da impostare alla macchina all'avvio del demone | ||
− | ZOOM= | + | ZOOM=6 |
## 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='ftp.psycotic.it' |
− | USER='' | + | USER='psycotic.it' |
− | PASS='' | + | PASS='psy16095' |
## Cartella di destinazione sul server FTP remoto | ## Cartella di destinazione sul server FTP remoto | ||
− | DEST='' | + | DEST='/htdocs/capture-img.jpg' |
## Tempo di attesa tra uno scatto e l'altro | ## Tempo di attesa tra uno scatto e l'altro | ||
− | WAIT= | + | WAIT=2 |
Riga 76: | Riga 76: | ||
pidof capture > /var/run/capture.pid | pidof capture > /var/run/capture.pid | ||
− | ## Imposta lo zoom della macchina e imposta il demone per la cattura a risoluzione ridotta | + | ## Imposta lo zoom della macchina e imposta il demone per la cattura a risoluzione |
+ | ## ridotta | ||
capture "zoom $ZOOM" | capture "zoom $ZOOM" | ||
capture 'size small' | capture 'size small' | ||
Riga 106: | Riga 107: | ||
;; | ;; | ||
− | start- | + | start-cicle) |
while true | while true | ||
do | do | ||
Riga 114: | Riga 115: | ||
fi | fi | ||
− | ## Ricava il pid del demone e controlla che sia stato avviato | + | ## Ricava il pid del processo demone e controlla che sia stato avviato |
PID=`cat /var/run/capture.pid` | PID=`cat /var/run/capture.pid` | ||
ps -p $PID > /dev/null | ps -p $PID > /dev/null | ||
Riga 128: | Riga 129: | ||
## Ricava la data e l'ora attuali e li inserisce nell'immagine | ## Ricava la data e l'ora attuali e li inserisce nell'immagine | ||
DATE=$(/bin/date '+%d/%m/%Y %H:%M:%S') | DATE=$(/bin/date '+%d/%m/%Y %H:%M:%S') | ||
− | convert /tmp/capture-image.jpg -gravity southeast -pointsize 20 | + | 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 | ## Invia l'immagine al server FTP remoto | ||
Riga 149: | Riga 150: | ||
Per lanciare questo comando si necessitano dei privilegi di scrittura sulla directory /var/run. | Per lanciare questo comando si necessitano dei privilegi di scrittura sulla directory /var/run. | ||
− | <code>~$ ./timelapse start- | + | <code>~$ ./timelapse start-cicle</code> |
Avvia la cattura ciclica degli scatti e relativo upload. Questo comando può essere lanciato anche da utente semplice. | Avvia la cattura ciclica degli scatti e relativo upload. Questo comando può essere lanciato anche da utente semplice. |
Versione delle 17:49, 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='ftp.psycotic.it' USER='psycotic.it' PASS='psy16095' ## Cartella di destinazione sul server FTP remoto DEST='/htdocs/capture-img.jpg' ## Tempo di attesa tra uno scatto e l'altro WAIT=2 ## 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.