Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
+
Di Antonio Mori moore2@inwind.it in collaborazione con lug-acros www.lug-acros.org
la videosorveglianza e linux
L'avvicinamento dell'informatica alla videosorveglianza ( o viceversa ), ha portato alla necessit di avere un sistema operativo che come caratteristica principale,per ovvie ragioni, doveva essere la stabilit e l'affidabilit quindi Linux. Ci sono impianti di videosorveglianza, che utilizzano la teconologia TCP !P ( protocolli di trasmissione dati ). "uesti sono dotati di telecamere che alla fine sono dei veri e propri computer con tanto di sistema operativo Linux em#edded ($$$.mo#oti%.com) che rivoluzionano un p& il concetto di videosorveglianza, in quanto la telecamera viene ad essere il cervello (meglio... i cervelli) dell'impianto con tanto di gestione degli allarmi, dei calendari ecc.
Hardware utilizzato
Per realizzare un sistema di videosorveglianza con ' schede tv e ' telecamere( ) sufficiente un qualunque PC con frequenza di processore superiore a *++ ,hz. -' pro#a#ile che non usando un interfaccia grafica sia sufficiente un Pentium . a .// ,hz (trash$are).
Le schede TV
Schede video ne esitono numerose in commercio con costi che variano da 30 ai 200 euro circa oltre a queste ve ne sono altre esterne che si collegano al pc via usb utili per i portatili (web cam . !rima di acquistarne una controllate che siano compatibili con il modulo bttv. "el modulo bttv scaricabile dal sito http#$$b%tese&.org ' presente tutta la documentazione (lista sulle schede tv supportate.
Le telecamere
(sistono in commercio numerosi modelli di minitelecamere che misurano circa )&*&2 a costi che vanni dai *+ ai 2++ euro a seconda della risoluzione o della presenza di un micro,ono.
Software utilizzato
!er realizzare questo sistema di videosorveglianza ho utilizzato come sistema operativo linu& (suse -../opensuse 0+/mandriva 2++)/,edora */1noppi& *.+.2/ubuntu 2.+.* . !er rilevare i movimenti ho utilizzato il programma motion (3!4 .
Caratteristiche di Motion
Programma scritto da Kenneth Jahn Lavrsen Motion un programma scritto in C Motion rilasciato sotto GPL (General Pubblic License) Si puo' liberamente scaricare dal sito http !!motion"sourgece#orce"org Motion un programma a linea di comando La configurazione di motion avviene modi#icando il #ile motion.conf con un editor di testo es" vi o $ate
0ispositivi 1tandard Video4linux (es. /dev/video0). ,otion non ha driver per telecamere. 2et$or3 camera ( camere che sono direttamente connesse a una rete ).videocamera lan.
Video Linux
!rima di installare motion hai bisogno di installare una telecamera (networ1 cam/ web cam/ scheda acquisizione video con i driver (moduli giusti per il suo ,unzionamento. !s" camera richiedono molta banda al sistema. Si avr5 un sistema con una bassa risoluzione. Schede ac#uisizione video sono normalmente distribuite con un chip chiamato 67898 (nelle vecchie schede 678*8 . Tutte #uelle che usano il driver linux chiamato "ttv.
$l modulo "ttv
:os;' un modulo in linu&< =l modulo bttv ' un driver linu& per le schede 7> basate sul chip bt8*8 e bt898 Si puo; liberamente scaricare da http#$$linu&.b%tese&.org 4a maggior parte delle distro linu& moderne ha questo modulo installato di serie es# ?edora/Suse/ Mandriva/ @noppi& ecc. :ome si ,a a vedere se bttv ' nella nostra distro< A modprobe bttv
Cosa fa Motion?
Le caratteristiche pi importanti
Scatta una foto (snapshot) ogni qualvolta una o piu' telecamere rilevano un movimento. Puo' vedere contemporaneamente piu' telecamere. Possibilit di creare un filmato ogni volta che le telecamere rilevano un movimento ( ffmpeg ). Scattare foto a intervalli regolari Scattare foto a intervalli di tempo non-regolari usando cron Eseguire un comando esterno quando avviene un movimento Esegue un comando esterno (programma) all'inizio di un evento (movimento). Esegue un comando esterno alla fine di un evento. Esegue un comando esterno quando viene salvata l'immagine scattata. Esegue un comando esterno quando un filmato mpeg viene registrato (all'inizio della registarzione ). Esegue un comando esterno quando finisce la registarzione del filmato.
xawtv
Bawtv programma per vedere programmi televisivi su linu& >err5 da noi utilizzato per settare le telecamere luminosit5/ contrasto colori ecc. (sistono programmi analoghi (1de7> su alcune distro tipo Suse/ mandriva.
Motion principalmente distribuito su #ile sorgenti "tar"g% ma lo si puo' trovare anche come pacchetto "deb per Debian e "rpm per Fedora. Motion necesseita di alcune librerie ( dipenden%e ) per essere installato" Librerie Necessarie per la sua installa%ione sono libm& libresolv& libdl& libpthread& libc& ld'linu(& libcr)pt& and libnsl ( che sono presenti in tutte le principali distribu%ioni ) e la libreria libjpeg (necessaria) che di solito deve essere installata" Per generare filmati *uando le telecamere rilevano movimenti necessaria la libreria ffmpeg. Per inserire le immagini in un database sono necessarie *ueste librerie libmysqlclient e il database m)s*l #un%iona anche con postgreS+L"
nstallazione di !otion
Per iniziare l'installzione di ,otion #isogna portarsi all'interno della director4 contenente la versione scaricata di ,otion e digitare da shell "/configure .5configure 6help da la possi#ilit di visualizzare le diverse opzioni per l'installazione. !l comando ma#e va dato su#ito dopo .5configure una volta digitato da shell questo comando il programma motion scritto in c verr compilato sulla nostra macchina. !a#e install semplicemente copier nell'$ard dis# tutti i file generati durante la compilazione con ma3e.
Run Motion
%ption
(n (s (c ($
&escription
7ira in modo non demone 7ira in maniera set up 1crivi il percorso del file mtion.conf 1ho$ help screen
'ditors comments
,otion gira nella finestra del terminale 8orza in maniera non demone 5usr5local5etc
Programma demone
1e si invoca da shell motion con motion ) c percorso9file9motion.conf che si trova in /usr/local/etc 0urante l'installazione di motion questo file viene chiamato motion(dist"conf e va rinominato in motion"conf , questo per evitare che il file venga cancellato accidentalmente se si reinstalla motion. 1e si usano piu' telecamere contemporaneamente, ) necessario mettere piu' t$read nel file motion"conf es. Se si usano due telecamere bisogna avere un file motion.conf e due file thread per un totale di tre file.
auto brig!tness" de#ault off raccomandato per telecamere che non hanno l'auto regola%ione della luminosit, #rig!tness" values -'.// de#ault - (disabilitato)" 0l grado di luminosit, della telecamera" $ontrast" values -%.// (- disabilitato) 0l livello di contrasto 1ramerate valori .'2-- il numero massimo di scatti per secondo che la telecamera puo' #are" Gap" valori 3-'.245467345 8appresenta il numero di secondi in cui la telecamera rimane sen%a rilevare movimenti" &eig!t" valore dipendente dalla telecamera valore di height per ogni #rame (scatto)" 'nput" valori (2'5) de#ault 6 disabilitato" 2 per l'ingresso della scheda tv e 6 per usb 9eb'cam" ( io settato su .) snaps!ot inter(al" valori -'.245467345" Scatta un #otogramma in automatico ogni tot secondi stabiliti"
*ualit+: valori ; ;++. 0efault <=. La qualit delle immagini >peg in percentuale. *uiet: valori off on. 0efault off. 2on emette il #eep quando rileva il movimento. Switc$filter: valori on,off. default off. !l filtro puo' distingure tra falsi movimenti e movimenti veri. Cio) rileva movimenti foglie, pioggia ecc. target,dir: default non definita. 0efinisce la director4 dove verranno salvate le immagini o i film. text,double: valori on off. 0isegna i caratteri il doppio piu' grandi del normale per ogni immagine. -$read: default non definito: definisce il percorso del thread config file. -$res$old: default ;=++. La soglia di modifica dei pi%el che fa rilevare il movimento. .idt$: il $idth in pi%el per ogni scatto.
4anciamo motion da linea di comando con motion -s Gsserviamo lo stream della telecamera con ?ire,o& all;indirizzo http#$$localhost#8+80 ?ire,o& ha bisogno di ,are il reload della pagina per ,unzionare. Apri una nuova scheda (tab con ,ire,o& e guarda l;indirizzo http#$$localhost#8+8+ puoi controllare e cambiare tutti i settaggi mentre motion ' in ,unzione
!otion 0 cron
Se vuoi puoi usare cron per cambiare lo stato ( run/ pause/ restart di Motion mentre ' in ,unzione e un programma che raggiunge le pagine web (wget o lwp-request . 6asta aggiungere queste due linee a $etc$crontab. + - H H H root $usr$bin$lwp-request http#$$localhost#8+8+$+$detection$start I $ dev$null + 08 H H H root $usr$bin$lwp-request http#$$localhost#8+8+$+$detection$pause I $ dev$null
Comandi esterni
on,event,end1 ?alori ,a% '+@= caratteri default disa#ilitato. !l comando che verr eseguito alla fine della rilevazione del movimento (evento) dopo un periodo di assenza di rilevazione di movimenti. !l periodo ) definito da gap. on,event,start1 ?alori ,a% '+@= caratteri. !l comando verr eseguito all'inizio dell'evento (del movimento) dopo un periodo di assenza di rilevazione di movimenti.!l periodo di tempo ) definito dal parametro gap" on,motion,detect:?alori ,a% '+@= caratteri. !l comando sar eseguito appena il movimento sar rilevato (in contemporanea ). on,picture,save:?alori ,a% '+@= caratteri.!l comando sar eseguito appena il fotogramma verr salvato.
2 o &iu' telecamere
Come &osso far funzionare 2 o &iu' telecamere contem&oraneamente( :on,ig ,iles Se si ha solo una telecamera ' necessario solo un con,ig ,ile/ se invece le telecamere sono 2/ allora hai bisogno di un thread ,ile per ogni telecamera oltre il ,ile con,ig.
Videocontrollo Vloo&"ac0
1controllo con &i2 telecamere3
!er visualizzare immagini provenienti da piu; telecamere ci sono . modi# :omprare un monitor per ciascuna telecamera. :omprare un monitor con lo splitter per dividere il monitor in * parti. Gppure scaricare il modulo vloopbac1 http#$$motion.technolust.c&$vloopbac1$inde&.html
Legge &rivac/
Dal sito del 3arante www.garanteprivac%.it anno 2++*
Stabilire la liceit5 del ricorso alla videosorveglianza 3arantire che le ,inalit5 della videosorveglianza siano speci,iche e lecite. Assicurarsi della legittimit5 del trattamento >eri,icare che il ricorso alla videosorveglianza sia proporzionato. =n,ormare adeguatamente gli interessati/ utilizzando indicazioni ben visibili. 3arantire agli interessati lTesercizio dei diritti di accesso.
4$56
intervento su Motion e la videosorvegliaza con Linux di 7ntonio Mori moore28inwind*it in colla"orazione con lug,acros www*lug,acros*org 29 5ovem"re 200:
Le li"rerie in linux
4a libreria ' un ,ile contenete codice com&ilato che puo; essere incorporato in un programma in ,ase di lin1ing ($usr$lib$ . 4;utilizzo di librerie ci permette di avere programmi piu; ,acili da compilare e da mantenere. RR6A:@
!ac1age built ,or debian Sarge. =t requires libm%sqlclient0+-dev/ libav,ormatdev/ libavcodec-dev/ libQpeg)2-dev. =t is built without !ostgreSF4. =nstall with dp1g -i motionS..2..-0Si.8).deb.
5etwor0 Camera
4a networ1 camera ' una telecamera digitale basata sulla tecnologia W%lug H IatchW con possibilit5 di allacciamento diretto alla reteJ 4a telecamera ,unziona indipendentemente dalla presenza di un !: ' su,,iciente che sia presente una connessione 4A" o un modem (ADS4 . RR 6A:@
4ramerate
?ramerate
(; la quantit5 che indica il numero massimo di ,otogrammi elaborabili da un chip gra,ico o da una telecamera nell;unit5 di tempo (generalmente un secondo . >iene misurato in ,ps (,otogrammi al secondo # piX ' grande e piX le scene visualizzate risulteranno ,luide. RR6A:@
mo"otix
www.moboti&.com =l concetto di MG6G7=B ... ... con il sistema operativo linu& integrato/presenta vantaggi rispetto a tecnologie video analogiche e web cam convenzionali. RR 6A:@
demoni
demoni o servizi: la loro caratteristica fondamentale, a differenza dei normali programmi, che i demoni sono normalmente in esecuzione per tutta una sessione di lavoro (che, per un server, potrebbe essere anche di qualche mese!), dallavvio allo shutdown !l motivo semplice: questi programmi, infatti, devono sempre essere in ascolto per soddisfare eventuali richieste provenienti dallutente o dallesterno, nel caso la macchina sia in rete Prendiamo ad esempio il server "#P, proftpd, suppondendo che la macchina sia collegata in rete: se esso non fosse in esecuzione, ogni connessione alla nostra macchina sarebbe categoricamente rifiutata, e lamministratore dovrebbe agire manualmente per avviarlo$ ma se installiamo un servizio, probabilmente lo facciamo perch intendiamo utilizzarlo, quindi perch lasciarlo inattivo %% &ac'
$ moduli in linux
$ moduli del 0ernel sono porzioni di questo che possono essere caricate in memoria quando se ne presenta la necessit5 e scaricate subito dopo. $ moduli del 0ernel Linux sono quello che in altri sistemi viene de,inito driver. RR 6A:@