VoIP and Hacking | Consulenza Documentazione

Introduzione alla videosorveglianza con Motion

by admin on Apr.30, 2010, under Linux, Sicurezza

Non è proprio possibile ignorare una delle più macroscopiche emanazioni del fenomeno “convergenza”, ovvero la moderna videosorveglianza, un settore nel quale la tecnologia IP offre ottime garanzie di affidabilità e un’infinita gamma di soluzioni personalizzabili e utilizzabili, virtualmente, da qualsiasi punto del globo, utilizzando, un Pc, un palmare o un telefonino.

In realtà non offre solo questo, (in termini di implicazioni varie), considerando ad esempio che è stata da poche ore oggetto di una nuova disciplina disposta dall’Autorità Garante per la protezione dei dati personali.
La cosa dovrebbe comunque riguardare la protezione della privacy nei luoghi pubblici, e la durata di conservazione dei dati relativi.

Nel settore della videosorveglianza privata, del genere antifurto ed antiintrusione, qualora non connessa direttamente alle forze dell’ordine, oppure del genere teleassistenza, non dovrebbero esservi adeguamenti particolari.

L’opensource, che in tema di convergenza non teme confronti, mette a disposizione soluzioni interessanti ed in costante evoluzione. Tra le altre spiccano Motion e ZoneMinder.

Cercherò in questo post di realizzare una semplice introduzione a Motion (per Linux Ubuntu).

Questo software permette di gestire differenti webcam e di scattare delle foto o girare dei video appena viene rilevato un movimento. Una volta rilevato quest’ultimo, motion può reagire negli infiniti modi resi possibili dalla convergenza.

Provo ad illustrare uno scenario reale, dato che mi è capitato proprio di realizzare a suo tempo una soluzione del genere:

Nel caso in cui il sistema rilevi una qualsiasi attività nel campo visivo delle telecamere controllate, potrebbe avviare una serie di operazioni:
Il flusso video delle telecamere interessate inizia ad essere immediatamente registrato, compresi i fotogrammi immediatamente precedenti l’evento; potrebbe inoltre venire immediatamente attivata la registrazione del sonoro ambientale, e contemporaneamente si attiverebbero anche i vari meccanismi di allarmistica, nelle varie forme previste.

Un modulo PBX (come potrebbe essere una istanza Asterisk minimale) potrebbe avviare una chiamata vocale verso i numeri di destinazione preimpostati, seguendo una logica nota come “follow-me”, per assicurarsi che la comunicazione raggiunga la destinazione desiderata.
Indipendentemente da ciò, un SMS informativo potrebbe venire inviato alla/e stessa/e, oppure differente/i destinazione/i.

Ogni filmato video verrebbe registrato ed inviato come allegato di posta elettronica, e lo stesso potrebbe avvenire per il file audio che ha raccolto il sonoro ambientale.

La ricezione dei messaggi di posta elettronica avviene normalmente in un brevissimo arco di tempo, tuttavia tale operazione potrebbe comportare tempi anche lunghi in situazione di particolare carico a carico di qualche server coinvolto, sopratutto utilizzando servizi postali di larga diffusione (anche se a ciò si potrebbe ovviare utilizzando un MX di origine proprio).

In ogni caso, le stesse informazioni audio e video potrebbero verrebbero immediatamente rese disponibili in formati più specifici ed adatti ad un apparecchio mobile.
Ritornando alla chiamata vocale, potrebbe non limitarsi ad essere informativa, ma potrebbe offrire la possibilità di un immediato contatto diretto (ovviamente attraverso il pbx) con le mumerazioni di pronto intervento (11X), cosa ad esempio normalmente impossibile, quando semplicemente ci si trovi all’estero.

Motion su Ubuntu Linux

Per prima cosa bisogna installarlo (cosa che in ambiente di produzione andrebbe fatta compilando da sorgente, ma a titolo di test qui verrà adottata la tecnica più sbrigativa, utilizzando il package predefinito di Ubuntu, che corrisponde comunque come versione, ad una 3.2.11.1.

Quindi da terminale:

# sudo apt-get install motion

Completata l’installazione del package è comunque necessario intervenire sul file motion.conf, dove è possibile configurare tutte le opzioni del programma.
Di conseguenza il file dovrà essere editato e personalizzato:

# sudo gedit /etc/motion/motion.conf

Nella cartella /etc/motion sono presenti anche altri file con nome threadX.conf (dove X sta per 1, 2, 3, 4): sono i file che gestiscono le varie webcam.
Motion può infatti utilizzare più di una videocamera utilizzando un corrispondente thread config file.
Motion genererà un thread extra  di sè stesso per ciascuna videocamera.

Motion legge i propri parametri di configurazione in sequenza, procedendo dall’inizio del file riga per riga. Se pertanto lo stesso parametro si trovasse presente in più posti, l’ultima istanza sarebbe quella destinata a prevalere.

Se una opzione “thread” si trovasse definita in motion.conf, il relativo thread configuration file verrebbe esaminato.
Motion continua quindi a leggere il resto del file motion.conf. Qualunque opzione prevarrebbe sulla stessa opzione precedentemente definita in un thread configuration file.
Per tale motivo i vari thread configuration files vengono invocati alla fine del file motion.conf.

Utilizzando una sola videocamera è sufficiente un unico file motion.conf.

All’interno del file motion.conf possiamo modificare una delle prime righe, facendo in modo che motion venga avviato come daemon:

daemon on

mentre con:

process_id_file /var/run/motion/motion.pid

definiamo la cartella dove andrà salvato il file motion.pid

videodevice /dev/video1

definisce il device video di interesse (sempre nella ipotesi che si utilizzi una sola telecamera).
Nell’esempio il device-file si riferishe ad una videocamera USB Logitech QuickCam Orbit/Sphere.

# lsusb -d 046d:0994
Bus 001 Device 002: ID 046d:0994 Logitech, Inc. QuickCam Orbit/Sphere AF

Date le caratteristiche della videocamera, va bene utilizzare l’opzione:

v4l2_palette 2

L’opzione:

input 8

è difatti specifica per le telecamere USB

Le tre opzioni successive riguardano rispettivamente: la rotazione dell’immagine: 90, 180 o 270 gradi (utile per montaggi diversificati), la larghezza e l’altezza dell’immagine (dipendente dalle caratteristiche della videocamera):

rotate 0
width 640 (valore di default: 352)
height 480 (valore di default: 288)

Con l’opzione:

framerate 3

si imposta invece il numero di frame catturati ogni secondo (range consentito: 2-100).

Le successive opzioni:

netcam_url (nei formati http:// ftp:// r file:///)
netcam_userpass (nel formato user:password)
netcam_http (1.0, keep_alive oppure 1.1)
netcam_proxy
netcam_tolerant_check

si riferiscono evidentemente ad una videocamera di rete, e quindi per ora non ci riguarda.

L’opzione:

auto_brightness (default off)

serve a regolare automaticamente la luminosità

Le successive opzioni servono ad impostare invece luminosità, contrasto, saturazione e tonalità.

brightness 0 (valori possibili nel range 0-255)
contrast 0 (valori possibili nel range 0-255)
saturation 0 (valori possibili nel range 0-255)
hue 0 (valori possibili nel range 0-255)

La sezione successiva, “Round Robin” si riferisce a video devices con inputs multipli.

Nella sezione “Motion Detection Settings” si definiscono le impostazioni che riguardano il rilevamento dei movimenti o motion-detection.

In questo articolo, che vorrei mantenere su un piano introduttivo, possono tranquillamente decidere di lasciarle invariate.

Possiamo citare comunque l’opzione

pre_capture 2 (0 per default)

che quantifica il numeri di immagini precatturate (in un buffer, e prima che si verifichi la “motion detection”) che verranno comprese nell’output registrato.

L’opzione:

gap 60

indica l’intervallo in secondi che fa scattare il termine dell’evento di motion detection, una volta cessata la stessa.

output_all off

è invece una opzione che permette (se impostata ad on) di salvare le immagini anche in assenza di movimento.

Una inevitabile conseguenza è quella di fare in modo che la cartella di salvataggio si riempia di foto.

Un effetto analogo, ma quantitativamente più contenuto, riguarda anche l’opzione seguente, che se impostata ad on fa in modo che motion inizi a scattare una serie di foto non appena viene rilevato un movimento.
Per non scattare alcuna foto si imposta su “off”. Possibili alternative sono “first”, con cui solamente il primo fotogramma di un evento viene salvato, “best”, per cui viene salvata l’immagine con la maggiore quantità di movimento rilevato, e “center”, che riguarda il movimento più vicino al centro dell’immagine.

output_normal best

L’opzione:

output_motion on (default off)

consente di salvare le immagini dei soli pixel “movimentati” (ghost images).

L’opzione:

quality 75 (valore predefinito)

indica la qualità (espressa in percentuale) relativa alla compressione jpeg delle immagini.

La sezione di opzioni seguente (”FFMPEG related options”) sono anch’esse al di là di un livello introduttivo, ma è utile ricordare che la opzione:

ffmpeg_cap_new on

genera un video appena viene rilevato un movimento.

mentre l’opzione:

ffmpeg_video_codec swf

genera un video in tale formato. Sono possibili altre alternative: mpeg1 (genera un file con estensione .mpg), mpeg4 oppure msmpeg4, adatta a Windows Media Player (estensione .avi), flv (estensione .flv), ffv1 (sperimentale), mov (QuickTime).

La successiva sezione di opzioni, “Text Display”, riguarda i formati ed i tipi di informazioni visualizzabili ai margini delle immagini.

Mentre quella seguente “Target Directories and filenames For Images And Films” imposta le varie directory da utilizzare per archiviare immagini e filmati, e formalizzare i filenames, tramite l’ utilizzo di particolari specificatori di conversione, ad esempio %H per l’ora, %M il minuto corrente, %t per il numero del thread (camera), ecc.

Le due successive sezioni, “Live Webcam Server”, e “HTTP Based Control” riguardano rispettivamente le impostazioni del mini-http server, cui è possibile collegarsi via browser per visionare i vari streaming video, e quelle relative all’interfaccia di controllo (sempre HTTP) della applicazione, e le eventuali restrizioni di accesso.

La sezione successiva, “Tracking (Pan/Tilt)” comprende le impostazioni relative appunto a rotazione e basculamento delle videocamere (che li supportino).

La sezione seguente, “External Commands”, è il posto in cui si possono implementare i meccanismi di interazione con i software più disparati, ed è qui che il system integrator può dare sfogo alla propria creatività, programmando le azioni desiderate in una ottica “event driven”:

on_event_start <comando>
on_event_end <comando>
on_picture_save <comando>
on_motion_detected <comando>
on_area_detected <comando>
on_movie_start <comando>
on_movie_end <comando>
on_camera_lost <comando>

Le due sezioni successive del file di configurazione riguardano l’eventuale integrazione, ed i parametri che la regolano, con database relazionali MySQL e PostgreSQL

Da ultimo, come accennato, si trova la sezione relativa ai “Thread config files”, che nel nostro caso, che prevede una unica videocamera, sono tutti commentati.

; thread /usr/local/etc/thread1.conf
; thread /usr/local/etc/thread2.conf
; thread /usr/local/etc/thread3.conf
; thread /usr/local/etc/thread4.conf

Una volta soddisfatti dei parametri impostati, possiamo finalmente avviare motion digitando semplicemente:

# motion

e collegarci ad esempio al server della webcam impostando sul browser:

http://localhost:8081

Avrò, spero, ancora occasione di trattare l’argomento Motion, ma intanto indirizzo coloro che fossero immediatamente interessati a qualsiasi approfondimento all’indirizzo http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome

Send post as PDF to PDF | PDF Creator | PDF Converter
:, , , ,

Comments are closed.

Cerchi qualcosa in particolare?

Usa il form qui sotto per cercare nel sito:

Blogroll!

Alcuni links...

Archives

Tutte le entries, in ordine cronologio...