Timelapse
Da Lecco.
Ideato da: Gigiv Licenza: GPL Download:
Indice
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'
capture-start.sh
#/bin/bash # case "$1" in start) # Avvia Capture capture start # Setta la risoluzione dello scatto a 640x480 capture 'size small' # Setta lo zoom al massimo dell'ottica capture 'zoom 6' ;; stop) # Ferma Capture capture quit ;; *) echo "Usage: $0 {start|stop}" >&2 exit 1 ;; esac
mycapture.sh
#!/bin/bash # case "$1" in start) # Avvia il ciclo perenne di cattura while true do # Controlla che Capture sia attivo ps aux | grep capture > /dev/null if [ $? ]; then # Cattura l'immagine capture 'capture /tmp/imagetemp.jpg' # Ricava data e ora di sistema assegnandoli a una variabile date = $(/bin/date '+%d/%m/%Y %H:%M:%S') # Aggiunge data e ora all'immagine convert /tmp/imagetemp.jpg -gravity southeast -pointsize 20 -stroke black -strokewidth 4 \ -annotate 0 "${text}" -stroke white -strokewidth 1 -fill white -annotate 0 "${text}" \ /tmp/imageconv.jpg # Carica l'immagine sul server remoto ncftpput -u user -p password -C ftp /tmp/imageconv.jpg /dest/remota # Attesa tra uno scatto e l'altro sleep 240 else # Se capture non è attivo lo lancia utilizzando lo script personalizzato capture-start.sh start fi done ;; stop) # Termina qualunque istanza avviata in precedenza killall mycapture.sh ;; *) echo "Usage: $0 {start|stop}" >&2 exit 1 ;; esac