In questa guida sono descritti i passaggi necessari per configurare una webcam collegata ad un webserver GNU/Linux in grado di acquisire immagini ad una cadenza definita. Successivamente viene descritto come autamatizzare la gestione di un archivio storico delle immagini. Per la presente guida è stata utilizzata una webcam Logitech QuickCam S5500 la quale funziona out of the box su Ubuntu 8.10. Nello specifico è stata effettuata una installazione di Ubuntu mini 8.10 e successivamente, attraverso lo strumento tasksel, è stato installato un server LAMP.
Indice
Gestire la webcam
Un utile strumento per gestire la webcam si chiama: webcam. Una volta lanciato il comando, senza opzioni, il programma andrà a leggere il file di configurazione dell’utente ~/.webcamrc
Ecco una configurazione possibile del file:
[grab] device = /dev/video0 text = “La mia webcam %Y-%m-%d %H:%M:%S” archive = /var/www/archivio/%Y%m%d%H%M.jpg fg_red = 255 fg_green = 255 fg_blue = 255 width = 640 height = 480 delay = 2 wait = 0 rotate = 0 top = 0 left = 0 bottom = -1 right = -1 quality = 85 trigger = 0 once = 0 level_day = 50 diff_trig_day = 3.0 diff_trig_night = 2.0 [ftp] dir = /var/www file = webcam.jpeg tmp = uploading.jpeg passive = 1 debug = 0 auto = 0 local = 1 ssh = 0
La sezione [grab] del file di configurazione definisce le modalità di produzione ed elaborazione delle immagini acquisite con al webcam. La maggior parte delle opzioni sono autoesplicative. Di particolare importanza è la voce delay che indica l’intervallo di acquisizione delle immagini espresso in secondi. archive è la posizione dell’archivio storico delle immagini. Nell’esempio alle immagini viene assegnato un nome che corridponde alla data e all’ora di acquisizione (es. 200917021112.jpg). Con il file .webcamrc così configurato viene effettuata una acquisizione ogni due secondi, ma nell’archivio viene conservata una immagine al minuto.
La sezione [ftp] indica le politiche di upload dei file al server. Nel mio caso, con l’opzione local=1 non viene fatta alcuna connesione remota è i file vengono depositati sull’host locale.
E’ possibile a questo punto avviare webcam in background e iniziare il lavoro di acquisizione
$ webcam &
Automatizziamo la gestione dell’archivio
Prepariamo uno scrip bash (nel mio caso “gestionearchivio”) al quale faremo creare ogni notte una cartella nella quale raccogliere le immaigni del giorno precedente. Lo script si occuperà anche di eliminare le cartelle del mese precedente.
#!/bin/bash IERI=$(date -d “yesterday” +”20%y%m%d”) mkdir /var/www/archivio/_$IERI mv /var/www/archivio/$IERI* /var/www/archivio/_$IERI MESESCORSO=$(date -d “1 month ago” +”20%y%m%d”) rm -rf /var/www/archivio/_$MESESCORSO
Rendiamo lo script eseguibile per l’utente root e copiamolo in /usr/local/sbin
$ sudo chmod 700 gestionearchivio $ sudo cp gestionearchivio /usr/local/sbin/
Automatizziamo il processo con cron editando il file /etc/cronttab aggiungendo la seguente riga che manderà in esecuzione il comando ogni notte alle 01:01.
01 1 * * * root /usr/local/sbin/archiviowebcam
Può essere importante accertarsi dell’esattezza dell’ora della nostra macchina quindi, sempre in /etc/cronttab possiamo aggiungere la riga seguente per fare sincronizzare l’orologio ogni ora con quello di time.ien.it
12 * * * * root ntpdate time.ien.it
Avvio del programma allo startup
Per fare avviare il programma allo startup del pc è necessario editare il file /etc/init.d/bootmisc.sh. All’interno della funzione do_start(), delimitata dalle parentesi graffe aggiungiamo la riga seguente. Il posto più indicato all’interno della funzione è alla fine, cioè appena prima della chiusura delle parentesi graffe:
# Aggiungo la webcam specificando il file di configurazione webcam /root/.webcamrc &
Riavviamo il PC e tutto dovrebbe funzionare a dovere!