I comandi in Gphoto2
Comandi Principali
Vediamo i comandi principali in gphoto2 e come utilizzarli per creare un file bash che faccia eseguire lo scatto alla macchina fotografica ogni 5 minuti.
La pagina per vedere il l'elenco completo dei comandi è www.gphoto.org/doc/manual/ref-gphoto2-cli.html
--auto-detect |
Visualizza le fotocamere collegate |
-v o --version |
Visualizza la versione installata di gphoto2 e di libgphoto |
--list-cameras |
Visualizza l'elenco delle fotocamere supportate |
--camera MODEL |
Specifica, nel caso in cui siano collegate 2 o più fotocamere, quale fotocamera usare. (es. gphoto2 --camera "Canon Powershot A520 (PTP Mode) Se viene usata questa opzione è obbligatorio usare l'opzione --port PATH) |
--port PATH |
Specifica la porta USB alla quale è collegata la fotocamera (obbligatorio nel caso in cui venga usata l'opzione --camera MODEL) |
--filename FILENAME |
Quando si fà il download della foto dalla macchina fotografica al PC specifica il nome con il quale il file verrà memorizzato (es. --filename webcam.jpg) |
--force-overwrite |
Sovrascrive il file senza chiedere conferma |
-F COUNT, --frames COUNT |
Numero di scatti da eseguire durante una sessione (default infinito) |
-I SECONDS, --interval SECONDS |
Intervallo di tempo in secondi tra due scatti multipli eseguiti con l'opzione -F |
--capture-image |
Scatta una foto e la lascia memoizzata sulla fotocamera |
--capture-image-and-download |
Scatta una foto ed esegue il download sul PC |
--list-config |
Elenca le impostazioni supportate dalla fotocamera |
--summary |
Elenca il sommario delle impostazioni della fotocamera |
Creare uno script bash
Vediamo ora come creare uno script che esegua uno scatto specificando le impostazioni che preferiamo (useremo per l'esempio una Canon A520, i comandi andranno poi adattati in base alla fotocamera usata in base all'output del comando --list-config e -summary)
Digitando gphoto2 --list-config otteniamo le varie impostazioni possibili con la fotocamera collegata:
Ecco l'outpup di una Canon A520:
/main/settings/owner /main/settings/model
/main/settings/firmwareversion
/main/settings/time
/main/settings/synctime
/main/settings/output
/main/settings/orientation
/main/settings/capturetarget
/main/settings/capture
/main/imgsettings/canonimgquality
/main/imgsettings/canonimgformat
/main/imgsettings/canonimgsize
/main/imgsettings/iso
/main/imgsettings/whitebalance
/main/imgsettings/photoeffect
/main/capturesettings/zoom
/main/capturesettings/assistlight
/main/capturesettings/autorotation
/main/capturesettings/exposurecompensation
/main/capturesettings/canonflashmode
/main/capturesettings/shootingmode
/main/capturesettings/aperture
/main/capturesettings/focusingpoint
/main/capturesettings/shutterspeed
/main/capturesettings/meteringmode
/main/capturesettings/afdistance
/main/capturesettings/focuslock
Creiamo ora uno script utilizzando parte dei comandi disponibili nella cartella /va/www/
Digitamo da terminale
cd /var/www
vi scatto.sh
e incolliamo le righe in corsivo:
#!/bin/bash
gphoto2 --set-config canonimgsize=2 --set-config canonimgquality=1 --set-config iso=0 --set-config whitebalance=0 --set-config photoeffect=1 --set-config shootingmode=0 --capture-image-and-download --force-overwrite --filename webcam.jpg
Se vogliamo aggiungere anche il trasferimento del file in remoto via ftp aggiungiamo una riga che mandi in esecuzione ncftpput.
Per maggiori informazioni vedere Installazione_Gphoto2
Registriamo lo script e usciamo dall'editor i con :wq oppure con ZZ
Rendiamo lo script eseguibile con il comando
chmod 777 scatto.sh
Analizziamo in dettaglio le opzioni usate:
canonimgsize specigica la grandezza dell'immagine
canonimgquality specifica la qualità dell'immagine
iso specifica gli iso da usare
whitebalance specifica il bilanciamento del bianco
photoeffect specifica gli effetti (vivid neutral ecc.)
shootingmode specifica la modalità di scatto (auto, manual ecc)
--capture-image-and-download scatta una foto e fà il download sul PC
--force-overwrite sovrascrive il file se presente sul PC
--filename specifica il nome con il quale il file deve essere memorizzato sul PC
I valori da inserire vicino ad ogni opzione possiamo ricavarli analizzando l'output del comando gphoto2 --get-config "nome comando" (ad esempio gphoto2 --get-config aperture) ed avremo l'output di tutti i possibili valori da inserire.
Per mandare in esecuzione lo script digitiamo
./scatto.sh
e avremo la foto scattata dalla nostra fotocamera rinominata in webcam.jpg nella cartella dove si trova lo script scatto.sh
Per far eseguire lo script ad intervalli regolari sarà sufficiente richiamarlo dalla crontab.
Se usiamo Debian avremo diverse directory per gestire le nostre crontab. Noi useremo la cron.hourly che si trova in /etc
Spostaimoci nella directory digitando
cd /etc/cron.hourly
e andiamo a editare se già presente, oppure a creare il file root digitando il comando
vi root
ora copiamo ed incolliamo la seguente riga, ricordandoci di premerei per passare alla modalità inserimento
01,06,11,16,21,26,31,36,41,46,51,56 * * * * /var/www/./scatto.sh
Usciamo dall'editor con :wq o con ZZ e digitiamo
crontab root root
Ora se digitiamo il comando crontab -l dovremmo vedere visualizzate le operazioni che il demone Cron esegue, tra cui lo script che abbiamo appena inserito.
Il testo seguente su crontab per chi volesse approfondire l'argomento è tratto dalla pagina di Wikipedia visibile a questo indirizzo:[ http://it.wikipedia.org/wiki/Crontab]
I file crontab
I file crontab contengono la lista dei job e altre istruzioni per il demone di cron. Gli utenti possono avere dei file crontab individuali e spesso ci sono dei file crontab a livello di sistema (solitamente in /etc
o in una sottodirectory di /etc
) che possono essere utilizzati, ma modificati solo dagli amministratori di sistema.
Ogni linea di un file crontab segue un formato particolare, composta da una serie di campi separati da spazi o tabulazioni. I campi possono avere un solo valore o una serie di valori.
Operatori
Esistono diversi modi per specificare valori multipli in un campo:
- L'operatore virgola («,») specifica una lista di valori, ad esempio: «1,3,4,7,8».
- L'operatore trattino («-») specifica un intervallo di valori, ad esempio: «1-6», che equivale a «1,2,3,4,5,6».
- L'operatore asterisco («*») specifica tutti i possibili valori di un campo. Ad esempio, un asterisco nel campo dell'ora è equivalente a «ogni ora».
Esiste anche un operatore supportato da alcune versioni estese del cron
, l'operatore sbarra («/»), che può essere usato per saltare un certo numero di valori. Ad esempio, «*/3» nel campo dell'ora equivale a «0,3,6,9,12,15,18,21»; l'operatore «*» specifica «ogni ora», ma il «/3» indica che solo il primo, quarto, settimo e così via dei valori restituiti da «*» vengano usati.
Campi
I primi cinque campi su ogni riga specificano con che frequenza e quando eseguire un comando.
.---------------- [m]inute: minuto (0 - 59) | .------------- [h]our: ora (0 - 23) | | .---------- [d]ay [o]f [m]onth: giorno del mese (1 - 31) | | | .------- [mon]th: mese (1 - 12) OPPURE jan,feb,mar,apr... | | | | .---- [d]ay [o]f [w]eek: giorno della settimana (0 - 6) (domenica=0 or 7) OPPURE sun,mon,tue,wed,thu,fri,sat | | | | | * * * * * comando da eseguire
Note:
- Per «giorno della settimana» (5° campo), sia 0 che 7 sono considerati il valore domenica.
- Se sia «giorno del mese» (3° campo) che «giorno della settimana» (5° campo) sono presenti sulla stessa linea, il comando viene eseguito quando almeno uno dei due è vero.
Il sesto campo e i successivi (ossia, il resto della linea) specificano il comando da eseguire.