Videosorveglianza con webcam : motion

Sono sempre stato incuriosito dalla possibilità di uso non convenzionale della mia webcam. Onestamente da quando l’ho acquistata quasi un anno fa l’avrò usata al massimo in 3 o 4 occasioni. Così, mi sono detto che forse era il caso di usare la webcam per un uso diverso dalle videochiamate e visto che mi trovo spesso a stare lontano dal mio desktop che resta acceso anche in mia assenza, non è del tutto sbagliata l’idea di videosorvegliarlo. Ovviamente con Linux si può fare TUTTO, anche l’inimmaginabile… basta un po’ di tempo ed un po’ di esperienza ed il gioco è fatto. Oggi si parla di Motion, software capace di rilevare movimenti in una fonte video (quale una webcam) e registarli in file video ed immagini.

Lo so, siete in molti a conoscere Motion. Ma, da quanto ho visto in giro per la rete, non esistono guide in italiano che ne spieghino in maniera esaustiva l’uso e la configurazione. Ecco perchè ho deciso di scrivere qualche parola in tal proposito.

Chi ha già avuto modo di leggere i miei articoli sa che farò riferimento all’installazione di Motion su Debian e Ubuntu, ma come al solito è possibile riprodurre quanto scrivo anche su altre distribuzioni. Inoltre, considererò che abbiate una webcam già installata e funzionante. Se così non fosse, cercate la guida per far funzionare la vostra webcam su Linux… qui una lista di periferiche compatibili o meno con Linux.

Inziamo l’installazione come sempre con terminale di root:

# apt-get install motion

Verrà installato il necessario per usare Motion. Infatti, sin da subito, se la vostra webcam è funzionante, Motion inizerà a captare le immagini e vi ritroverete nella cartella /tmp/motion una miriade di immagini Jpg. Proprio per questo motivo è opportuno configurare per bene il software in modo da renderlo adatto alle nostre esigenze.

Procediamo, in primis, con lo spegnimento del software. Da un terminale di root digitate il seguente comando:

# /etc/init.d/motion stop

Adesso siamo pronti a ritoccare il file “/etc/motion/motion.conf” ed eventualmente i file “/etc/motion/thread1.conf” e seguenti. Il primo file menzionato contiene tutte le direttive necessarie al funzionamento di Motion e necessarie al funzionamento di una sola webcam. I files “threadX.conf” (dove al posto di X c’è un numero progressivo) devono essere editati solo ed esclusiva,ente nel caso in cui abbiate più di una webcam da collegare alla vostra station di videosorveglianza :D Badate bene… il team di sviluppo di motion sconsiglia di usare tutte telecamere USB, a meno che non abbiate apposite schede PCI capaci di gestire singolarmente le singole “prese” usb. Infatti, una webcam su USB è molto facile che saturi il canale su cui è attaccata! Ma andiamo avanti.

Editiamo il file “motion.conf” con il nostro editor di testi preferito. Io userò vim, ma se volete potete usare il più comodo Gedit o Kedit sostituendo al comando che segue la parola “vim” con l’editor che più vi aggrada:

# vim /etc/motion/motion.conf

Verrà aperto un file molto lungo e ricco di opzioni. Alcune di esse è preferibile lasciarle come sono, a meno di non sapere esattamente cosa si sta per fare. Io vi mostrerò come ritoccare alcune opzioni in modo da far salvare le immagini in una directory più comoda da consultare, come configurare alcuni parametri della registrazione ed, infine, in che modo usare l’interfaccia web proteggendola con username e password (non abilitate di default!).

Iniziamo con il configurare Motion come demone. Quindi editiamo una delle prime righe come segue:

# Start in daemon (background) mode and release terminal (default: off)
daemon on

Proseguiamo modificando la directory dove Motion creera il suo pid. Questo ci sarà utile quando avvieremo il software da utente semplice e non all’avvio del computer come avviene normalmente:

# File to store the process ID, also called pid file. (default: not defined)
process_id_file /VOSTRA/HOME/motion.pid

Recatevi nella sezione del file di configurazione definita “Capture device options” ed editate le righe relative alla definizione della vostra webcam:

# Image width (pixels). Valid range: Camera dependent, default: 352
width 640

# Image height (pixels). Valid range: Camera dependent, default: 288
height 480

Io ho inserito un valore pari a 640×480 perchè la mia webcam supporta immagini ad 1 Megapixel. Ovviamente voi dovrete inserire i valori relativi alla vostra webcam. Potete trovarli sul sito del produttore oppure sui manuali di istruzione :) Qualora non li troviate, lasciate tutto come lo trovate!

Poco più sotto c’è lariga relativa al numero di fotogrammi al secondo che devono essere catturati. Il valore che troveretre di default è “2″. Personalmente ho preferito alzarlo a 5 :)

# Maximum number of frames to be captured per second.
# Valid range: 2-100. Default: 100 (almost no limit).
framerate 5

Se avete una webcam di rete e non una cam USB, Motion permette di rilevare il suo flusso dei dati indicando l’indirizzo dove si trova il flusso stesso o le immagini catturate. Per renderla funzionante dovete editare queste righe:

# URL to use if you are using a network camera, size will be autodetected (incl http:// ftp:// or file:///)
# Must be a URL that returns single jpeg pictures or a raw mjpeg stream. Default: Not defined
; netcam_url value

# Username and password for network camera (only if required). Default: not defined
# Syntax is user:password
; netcam_userpass value

Ovviamente dovrete rimuovere il simbolo del “punto e virgola” ed inserire i valori corretti! Subito dopo avremo la possibilità di regolare la luminosità, il contrasto e la saturazione che dovranno essere usati nell’acquisizione delle immagini. Queste opzioni hanno ragione di esistere solo se la webcam non ha il rilevamento automatico, come accade con le webcam più economiche (come nel mio caso!). Io ho scelto i valori dopo un po’ di prove, ecco perchè vi consiglio di testare quelli a voi più congeniali:

auto_brightness off

# Valid range 0-255, default 0 = disabled
brightness 24

# Valid range 0-255, default 0 = disabled
contrast 25

# Valid range 0-255, default 0 = disabled
saturation 5

Il resto delle opzioni, per il momento, lasciamole ai valori di default. Spostiamoci adesso nella sezione definita “FFMPEG related options“. Se avete un computer non troppo vecchio abilitiamo la compressione al volo dei fotogrammi tramite l’uso di ffmpeg:

# Use ffmpeg to encode mpeg movies in realtime (default: off)
ffmpeg_cap_new on

Successivamente proseguiamo nello scorrimento del file di configurazione fino ad arrivare alle righe dove si stabilisce la codifica dausare per la creazione del filmato da realizzare nel caso la cam capti movimento davanti a sè. Di default il filmato creato sarà swf. Io preferisco usare qualcosa di diverso ed infatti ho chiesto a Motion di creare un filmato avi :)

# Codec to used by ffmpeg for the video compression.

ffmpeg_video_codec mpeg1

Nelle sezioni successive di motion.conf possiamo configurare in che modo devono essere salvati i file delle immagini ed i file video. Personalmente ho lasciato tutto di default, riservandomi di stabilire in un momento successivo se modifcare qualcosa. L’unico parametro modificato è stato quello relativo alla directory dove salvare i files. Di default questa viene settata su “/tmp/motion”. Tuttavia non mi piaceva molto e mi sono creato una cartella nella mia home:

$ mkdir ~/motion

Quest’ultima l’ho, poi, inserita nel file di configurazione di Motion modificando quella di default:

# Target base directory for pictures and films
# Recommended to use absolute path. (Default: current working directory)
target_dir /home/zeno/motion

Adesso passiamo alla configurazione di username e password per l’interfaccia web. Infatti, come detto poco fa, possiamo controllare Motion tramite una minimale e semplicissima interfaccia web. Questa, però, sarebbe accessibile a chiunque acceda al nostro computer perchè non è protetta da alcuna password. Siccome a noi non piace ciò, inseriamo i parametri delle password. Rechiamoci nella sezione del file di configurazione di Motion chiamata “HTTP Based Control” e modifichiamo la riga che ci interessa come segue:

# Authentication for the http based control. Syntax username:password
# Default: not defined (Disabled)
control_authentication VOSTRO_USERNAME:VOSTRA_PASSWORD

Continuando nella configurazione, scopriamo qualcosa di interessantissimo: è possibile configurare Motion in modo che quando rileva movimento dica al nostro computer di compiere un’azione. Immaginate quale azione potremmo far compiere? Che ne dite di una bella e-mail? O magari un SMS? Potete farlo modificando queste righe:

# Command to be executed when an event starts. (default: none)
# An event starts at first motion detected after a period of no motion defined by gap
; on_event_start value

# Command to be executed when an event ends after a period of no motion
# (default: none). The period of no motion is defined by option gap.
; on_event_end value

aggiungendo un comando da lanciare su “on_event_start <comando>”, verrà, ad esempio, inviata una mail quando viene rilevato l’inizio di movimento su webcam ed una successiva e-mail potremmo farla inviare quando il movimento ha termine! Il limite di ciò che potrete fare è dettato solo dalla vostra fantasia!

La parte finale del file di configurazione riguarda l’eventuale uso di un database per memorizzare le immagini, molto utile se volesimo effettuare un vero e proprio sistema di videosorveglianza professionale, dove devono essere memorizzate una gran quantità di immagini ed in maniera molto veloce. Ancora, le ultimissime righe di motion.conf servono a stabilire le configurazioni di eventuali ulteriori webcam oltre alla prima. In quest’ultimo caso è indispensabile editare il file threadX.conf, uno per ogni webcam. Il suo editing è semplicissimo ed intuitivo. Sappiate che in Debian ed Ubuntu i file di esempio sono già presenti nella directory “/etc/motion/threadX.conf” e vi sarà sufficiente editare quelli!

Adesso siamo pronti ad effettuare gli ultimi ritocchi per lanciare manualmente l’avvio di motion ed evitare che si avvii in automatico ad ogni avvio del computer. Iniziamo con l’inserire il nostro utente nel gruppo di Motion in modo da permettere all’utente stesso di usare motion, i suoi comandi ed il suo file di configurazione originale e che abbiamo appena modificato. Apriamo un terminale di root (se non lo avete già aperto) e digitiamo il seguente comando:

# adduser VOSTRO_USER motion

Tenete presente che affinchè quest’ultima modifica abbia effetto sarà necessario riavviare il server X. Lo potete fare sin da subito oppure finire prima di seguire la guida e poi riavviare il server grafico. Scegliete voi!

A questo punto eliminiamo l’avvio automatico di motion quando si accende il computer:

# update-rc.d -f motion remove

Da questo momento in poi saremo noi a stabilire quando far avviare Motion e videosorvegliare, ad esempio, il nostro PC :D Il tutto con un semplice comando da terminale e da utente semplice:

$ motion

Quando sarà avviato il demone, la gestione di motion può avvenire tramite interfaccia web. Aprite il vostro browser e puntate questo indirizzo:

http://localhost:8080

Avrete accesso ad un’interfaccia minimalissima di Motion con la quale potrete modificare il file di configurazione, rilevarne le attuali impostazioni e soprattutto avviare o mettere in pausa il motion detection. Inoltre, potrete monitorare in tempo reale cosa sta captando la webcam sempre tramite interfaccia web. Sarà sufficiente puntare il browser a quest’altro indirizzo:

http://localhost:8081

E con questo abbiamo terminato. Divertitevi a videosorvegliare il vostro computer quando voi non ci siete!

fonte : http://www.stefanolaguardia.eu

Leave a comment

0 Comments.

Leave a Reply


[ Ctrl + Enter ]