L'anticamera del cestino

Raccolta differenziata di esperienze di dubbia utilità

Webcam su un server web

with 5 comments

Questa guida descrive 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

Installazione della macchina GNU/Linux

La mia idea iniziale era quella di creare un server LAMP con Debian Lenny. Tuttavia, dopo l’installazione, ho riscontrato alcuni problemi nel riuscire a gestire la webcam. Ho tentato successivamente una installazione di Ubuntu Server 8.04, sempre in configurazione LAMP, ma ancora una volta senza successo. In entrambi i casi, all’avvio del tool webcam, il programma mi andava in segmentation fault. Sicuramente il problema sarebbe stato risolvibile, tuttavia ho preferito  aggirare l’ostacolo cambiando nuovamente installazione.

Mi sono orientato quindi ad una installazione Ubuntu mini 8.10. Ho effettuato una installazione minimale e successivamente attraverso il tasksel ho preparato il server LAMP.

Gestire la webcam

Lo strumento che ho utilizzato per gestire la webcam si chiama: webcam. Una volta lanciato senza opzioni, il programma andrà a leggere il file di configurazione dell’utente ~/.webcamrc

Ecco come ho configurato questo file:

[grab]
device = /dev/video0
text = "geotecnica %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 [grub] 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 inportanza è la voce delay che indica l’intervallo di acquisizione delle immagini espresso in secondi. archive è la posizione dell’archivio storico delle immagini. Nel mio caso alle immagini viene assegnato un nome che corridponde alla data e all’ora di acquisizione (es. 200917021112.jpg). Ho omesso volutamente di indicare nel nome dei files di archivio i secondi. 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/

Automatiziamo 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!

Written by Max-B

17 febbraio 2009 a 11:27

Pubblicato su GNU/Linux, video

Tagged with ,

5 Risposte

Subscribe to comments with RSS.

  1. […] Licenza Webcam su un server web […]

  2. Ciao, ormai è passato un anno dal ost, quindi non so se avrò risposta… anche perchè magari non ricordi più l’argomento😀
    Ad ogni modo… ma se volessi una pagina html con la foto più aggiornata disponibile come farei? nel codice html come faccio a indicare il nome della foto (che sarà di volta in volta diversa)?

    Lorenzo Baldi

    20 luglio 2010 at 20:22

  3. Mi ero scordato di ringraziarti per il post e per l’attenzione!

    Lorenzo Baldi

    20 luglio 2010 at 20:22

  4. Ciao Lorenzo, grazie a te per l’interessamento!
    Caricare l’ultima immagine aggiornata è molto semplice, perchè con la configurazione riportata sopra sava nella cartella /var/www il file webcam.jpeg che viene aggiornato costantemente.

    Se vuoi dare un’occhiata al server descritto in questo post puoi collegarti a http://geotecnica.terra.unimo.it/webcam.php e curiosare nel codice xhtml. Il server viene acceso al bisogno, quindi se lo trovi off-line ricollegati in un’altro momento.
    ciao,
    Max

    Max-B

    21 luglio 2010 at 13:39

  5. Grazie per la guida, mi e’ stata molto utile, sopratutto per il software “webcam”, avevo provato altri pacchetti ma nessuno aveva funzionato prima.
    Questo pero’ non funziona con una altro tipo di webcam che viene riconosciuta da linux. E’ una etoms q cam vga.. Tu sapresti darmi una dritta?
    La webcam:

    $ lsusb
    Bus 002 Device 003: ID 102c:6251 Etoms Electronics Corp. Q-Cam VGA

    avviando webcam:
    $ webcam
    v4l2: open /dev/video0: No space left on device
    v4l2: open /dev/video0: No space left on device
    v4l: open /dev/video0: No space left on device
    no grabber device available

    Output dmesg
    $ dmesg

    usb 2-1.6: usb_submit_urb() failed, error -28

    Scusami ma non riesco a risolverlo… per ora😀

    Ciao

    Enrico Macchiavelli

    14 settembre 2011 at 13:04


Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: