Sei sulla pagina 1di 39

Realizzare un sistema di videosorveglianza con Linux e Motion

+
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

Supporto Hardware di motion

,otion supporta ingressi video da due tipi di sorgenti

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.

%re&arativi &er l'installazione di Motion (

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.

)&zioni del *+configure


,,with,ffm&eg-.$R Speci,% the path ,or the director% pre,i& in which the librar% are installed. =, not speci,ied con,igure will search in $usr$ and $usr$local$ ??mpeg is a pac1age that enables streamed video mpeg signal ,rom %our web camera to a browser. ,,without,ffm&eg Do not compile with ,,mpeg Cse this i, %ou do not want to compile with ,,mpeg. =, ,,mpeg is not installed %ou do not need to speci,% that Motion must build without ,,mpeg. ,,with,m/s#l-.$R normall%/ con,igure will scan all possible de,ault installation paths ,or m%sql. Dhen its ,ail/ use this command to tell con,igure where m%sql installation root director% is. D=E is the installation director% o, m%sql. (.g. $usr$local$m%sql ,,without,m/s#l Do not compile with M%SF4 support ,,with,&gs#l-.$R =nclude !ostgreSF4 support. D=E is the !ostgreSF4 base install director%/ de,aults to $usr$local$pgsql. ,,without,&gs#l Do not compile with !ostgreSF4 support ,,without,v l (&clude using v*l (video*linu& subs%stem. Ma1es Motion so it onl% supports networ1 cameras. :an be used i, %ou do not need >*4 support and ma%be lac1 some o, the libraries ,or it. ,,without,o&timizec&u

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

$l file di configurazione motion*conf

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.

Le o&tzioni del file motion*conf parte 1


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"

Le %pzioni del file motion"conf parte 2


*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.

Set/p !otion via $ttp

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.

Scri&t da shell &er mandare le mail


AJ$bin$sh Ascrip per mandare un e-mail MA=4KL$usr$bin$mail$L Adestinazione della mail 7GKLmoore@localhostL Asoggetto della mail SC6M(:7KLmotion detectL echo -e N questo ' un messaggio generato da motion .OnOn Motion detect#P0OnOnL PMA=4 -s NPSC6M(:7L P7G

Scri&t da shell &er eliminare file

AJ $bin$sh cd $home$moore$cam0 rm H.Qpg

Scri&t da shell &er inviare file su un sito


AJ$bin$bash Ascript di Matteo NSwi,tL Ameglio piazzarsi nella cartella dove risiedono i ,ile cd $home$moore$,otovarie ,tp -in ,tp.tuosito.it RR(G? user tuoSuser tuaSpasswd passive binar% put ,ungo.Qpg b%e (G?

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:

Shell linea di comando


!na shell ( conchiglia si presenta come un &rom&t che ci permette di comunicare direttamente con il 0ernel ( cuore del s.o. del sistema operativo. Cna shell ci &ermette di# Csare i comandi interni della shell. 4anciare qualsiasi tipo di programma. ;uoni motivi per utilizzare la shell# La shell < &iu' veloce delle inter,accie gra,iche. La flessi"ilit=. !otete ,are quello che volete o quello che piu; vi ' utile/ non quello che un programma pensa che vi sia piu; utile. Gperazioni complesse possono essere realizzate e,,icientemente. > m0dir immagini > mv ?*gif ?*@&g immagini 4a shell vi permette di usare un computer remoto cio' che si trova anche dall;altra parte del mondo nello stesso modo in cui usate il computer che avete davanti agli occhi. Csare la shell vi aiuta a ca&ire meglio come funziona il sistema o&eratvo*

Come si &resenta la shell


4a shell si presenta come un prompt che invita l;utente a scrivere un comando/ ad esempio moore@dar1star#$home$immagini$P "el prompt vengono scritte delle in,ormazioni utili. 7ipicamente vengono scritti il nome dell'utenteA la director/ corrente e a volte il nome del com&uter su cui si opera. "ell;esempio si vede che l;utente moore ' sul computer dar1star nella director% $immagini (percorso . Ggni utente ha una sua home director/. Appena ,atto il login per ogni utente viene aperta una shell e la director% corrente ' la sua home. RR6A:@

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:@

Licenza B%L e software li"ero


=l concetto di so,tware libero discende naturalmente da quello di li"ert= di scam"io di idee e di informazioni. "egli ambienti scienti,ici/ quest;ultimo principio ' tenuto in alta considerazione per la ,econdit5 che ha dimostratoU ad esso in,atti ' generalmente attribuita molta parte dell;eccezionale ed imprevedibile crescita del sa&ere negli ultimi tre secoli. ?u Richard M* Stallman/ nei primi anni Gttanta/ a ,ormalizzare per la prima volta il concetto di so,tware libero. Li"ert= 0/ o libert5 ,ondamentale# 4a libert5 di eseguire il &rogramma &er #ualun#ue sco&o/ senza vincoli sul suo utilizzo. Li"ert= C# 4a libert5 di studiare il funzionamento del &rogramma/ e di adattarlo alle &ro&rie esigenze. Li"ert= 2# 4a li"ert= di redistri"uire co&ie del &rogramma. Li"ert= 3# 4a li"ert= di migliorare il &rogrammaA e di distri"uirne i miglioramenti* DD;7CE

%agina .ownload Motion


Current version is 3*2*3 Source 4iles , motion,3*2*3*tar*gz R%M 14edora Core +i3F93 - motion-..2..-2.i.8).rpm
7his pac1age should also install on ?edora :ore . and most newer EedVat versions as long as the ,,mpeg pac1ages compatible. :urrent Motion rpms are built with ,,mpeg-+.*.--+.lvn.+.08.2++2+8+0.*.i.8).rpm and ,,mpeg-devel-+.*.--+.lvn.+.08.2++2+8+0.*.i.8).rpm ,rom 4ivna =nstall with rpm -i motion-..2..-2.i.8).rpm. Griginall% Motion ..2.. was released with an older E!M motion-..2..-0.i.8).rpm built with ,,mpeg-+.*.--+.lvn.+.02.2++2+*29.*.i.8).rpm and ,,mpeg-devel-+.*.-+.lvn.+.02.2++2+*29.*.i.8).rpm.

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

de" 1.e"ian Sarge+i3F93 - motionS..2..-0Si.8).deb

de" 1!"untu Goar/+i3F93 - motionS..2..-0.ubuntu.hoar%Si.8).deb


RR6A:@

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:@

Potrebbero piacerti anche