giovedì 30 giugno 2011

Videosorveglianza a basso costo con Linux

Tra i mille usi che il mio muletto può assolvere c'è anche la videosorveglianza. Effettivamente a me serve a poco (non vivo di certo in una mega villa), però.. volete mettere la goduria di poter controllare da remoto cosa fa il mio cane durante il giorno (salirà mica sul letto quando non ci sono?) ;)

L'hardware
A livello hardware le scelte sono 2: una o più webcam usb (si trovano su ebay o in qualsiasi centro commerciale dagli 8 euro in su) oppure una o più ip cam wifi, magari motorizzate (su ebay dai 60 euro in su).
Le prime, saranno collegate alle porte USB del nostro computer e controlleranno solo la zona dove è fisicamente installato il nostro PC, mentre le seconde, per un uso più professionale, hanno il vantaggio di poter esser  piazzate ovunque nel nostro perimetro (coperto dal wifi), a patto di poter essere alimentate elettricamente con  classica presa della corrente.
Non avendo necessità reali di videosorveglianza, ho preso le 2 webcam usb che avevo in casa e le ho piazzate sul mio muletto.

Lato software
Per il mondo Windows esistono tanti programmi che fanno questo lavoro, ma poichè il mio muletto monta Linux, la scelta doveva ricadere tra due software: ZoneMinder o Motion. Il primo, che testerò appena avrò un pò di tempo, è una soluzione molto professionale e completa per la videosorveglianza. Esiste anche in versione Live (scarichi la ISO, la masterizzi o la carichi su USB.. ed hai ZoneMinder pronto per l'uso), permette di controllare N sorgenti video ed ha una nutrita sezione gestionale. Poichè volevo qualcosa di più leggero (da configurare), ho optato per Motion.

La configurazione di Motion
Una volta installato con sudo apt-get install motion bisogna configurare il file /etc/motion/motion.conf con un editor di testo (niente interfaccia grafica, nel puro stile *nix). I parametri sono tanti e sono ben commentati (in inglese), qui ne cito solo alcuni, quelli più rilevanti:

daemon on/off se on il programma, una volta lanciato va in background
videodevice /dev/video0 il device della nostra webcam (0 sarà la prima, 1 la seconda e così via, ma, per ogni webcam, sono da specificare in file diversi).
width ed height settiamo qui la risoluzione dell'immagine che vogliamo catturare. A seconda della webcam di cui disponiamo, potremo settare 640 x 480 o più.
framerate è il max numero di frame catturabili al secondo (valore da 2 a 100)

v4l2_palette (da 0 a 8) specificare il tipo di palette che la webcam può riprodurre
output_motion on/off specifica se si vuole che vengano salvate immagini e video quando viene rilevato del movimento. Attenzione: se si specifica ON ci si deve preparare al fatto che poco a poco il nostro hard disk diventerà saturo di immagini e video ! Quindi sarà necessario prepararsi un qualche script che ogni X giorni cancella il contenuto della directory!
snapshot_interval possiamo specificare ogni quanti secondi salvare uno snapshot dalla nostra webcam
target_dir qui specificheremo il percorso assoluto di salvataggio delle nostre immagini e video
webcam_port specificare qui il numero della porta dove la nostra webcam andrà in streaming: sarà visibile via browser all'indirizzo http://localhost:nporta
webcam_localhost on/off se on la webcam sarà visibile solo dall'host locale. Se off chiunque potrà vedere la webcam in streaming (sempre se il nostro server sia visibile da internet!)



Nota: se si vogliono collegare più webcam sullo stesso server bisogna considerare due cose:  
1) Attivare (decommentare) i file thread.conf, uno per ogni webcam, specificando in ognuno di essi il parametro videodevice (che sarà video0, video1, video2 ...videoN)
2) Potete collegare solo una webcam per controller USB 1.1, poichè ogni web cam occupa più della metà degli 11mb messi a disposizione dall'USB 1.1 ! Così è specificato nelle FAQ di motion

Rimane un unico problema.. anzi un grosso problema: motion sembra non permettere la protezione dell'accesso alla pagina di streaming. Ergo: chiunque potrebbe guardare casa nostra !

Cosa non accettabile ovviamente; allora ho spulciato il sito di supporto ed ho trovato la risposta a questo link, in cui si rimanda all'installazione di questa patch!

I nuovi parametri da impostare sono:

# Set the authentication method (default: 0)
# 0 = disabled
# 1 = Basic authentication
# 2 = MD5 digest (the safer authentication)
stream_auth_method 0

# Authentication for the http based control. Syntax username:password
# Default: not defined (Disabled)
; stream_authentication username:password


E la nostra pagina diventa ad accesso protetto.

Nessun commento:

Posta un commento