Security Cam ovvero, Esperienze con Raspberry Pi, Motion e Linux.
Motion
è un programma che gira su Linux, l'ho scoperto qualche giorno fa per
caso, parlando con un amico che stava cercando di monitorare una
istallazione promozionale -un maxischermo promozionale per la
precisione- attraverso una chiamata ad un utente Skype costruito per
l'occasione. Gia' di per se era una esperienza interessante, che prima o
poi recensiro' con un articolo ad hoc. | |
|
Parlando
di come poter concludere quel progetto, mentre stavamo in hangup su
Skype, glooggavo qua e la sull'argomento. Mi sono interessato da subito a
Motion dopo aver letto questa guida trovata durante il mio zapping.
Ho
subito pensato che si potesse realizzare anche con la Rasperry Pi, la
nota scheda di prototipazione che da qualche mese ho qui a disposizione
per i miei esperimenti.
Quindi ho iniziato seguendo la guida
l'istallazione e la configurazione del programma. Funziona! Ho ottenuto,
dopo un paio di giorni di prove, un server di video sorveglianza
facilmente configurabile e piuttosto completo.
Adesso quindi passo alla descrizione del progetto: |
Componenti:
1)
Raspberry Pi mod B rev 2 (appena ricevuta da RsComponents) - La
Raspberry in questione ha la porta ethernet, molto utile per poter
trasmettere i filmati e le foto ricavate da Motion su un file server
privato e su un sito internet esterno.
2) Webcam usb - io ho utilizzato una Trust HD cam che
ha una qualita' dell'immagine dignitosa (1920 x 1080),viene
riconosciuta subito dal sistema operativo ed è piuttosto economica (39
euro circa) | |
- Ho fatto comunque anche delle prove con un'altra webcam usb la
Hercules Classic che
ha una qualita' inferiore (max 640x 480 pixels) ma ha il buon requisito
di economicita' ( si trova a circa 9 - 14 euro al supermercato), anche
questa telecamera non e' stata un problema, appena attaccata alla presa
usb e' stata riconosciuta ed ha iniziato a funzionare, senza necessita'
di driver aggiuntivi
3) accesso ad internet per l'istallazione
dei programmi necessarie per la condivisione su server remoto dei file
video e jpg registrati dal sistema di video sicurity.
4) una scheda SD con istallata l'ultima versione del sistema
operativo di Raspberry Pi .
non
sono indispensabilil monitor, mouse, tastiera e hub usb, in quanto la
raspberry puo' essere approntata anche con una connessione da remoto via
ssh, questa infatti e' la strada che ho percorso io. L'hub usb potrebbe
essere necessario se l'assorbimento della webcam dovesse superare i
valori erogati dalla nostra scheda che dipendono dalla scheda ma anche
dall'alimentatore che stiamo utilizzando per alimentare tutto il
sistema.
A questo punto, direi che e' venuto il momento di
collegare l'alimentazione alla Raspberry Pi e far partire il sistema
operativo opportunamente prelevato dal sito ufficiale della Rasp.
Seguire a questo punto le istruzioni della guida all'istallazione di Motion
da qui
A questo punto configurare il programma come descritto nella giuda tenendo conto che:
Dalle
esperienze che ho potuto fare in questi giorni di porve, il programma
fa tante cose, alcune delle quali possono essere inibite.Vediamo come:
Intanto va stoppato il programma che dopo l'istallazione parte in automatico con il comando
# /etc/init.d/motion stop
poi bisogna modificare i seguenti files
/etc/motion/motion.conf
/etc/motion/threadXY.conf
Il
primo e' il motore del programma, mentre il secondo serve per
configurare le eventuali altre webcam collegate al sistema - se il
sitema ha solo una webcam, non c'e' bisogno di modificare il secondo
file.
Per modificare il file diconfigurazione si possono
utilizzare diverse strade, io preferisco quella della modifica diretta
attraverso il classico editor di test di Linux vi, ma si puo' agire su
ogni elemento della configurazione anche attraverso il browser web che
si attiva alla partenza del programma motion. ( quindi chi volesse fare
cosi' deve far partire il programma con il comando " sudo motion "
digitato dall'interno della cartella costruita ad hoc nella nostra home -
nel mio caso " $HOME/motion " - e chiamare il configuratore online
all'indirizzo http://localhost:8080 attraverso il browser interno di
Raspberry, oppure, se e' stato gia' definito il parametro "
webcam_localhost off " , anche da un browser residente su un qualsiasi
altro computer della rete -cioe' in rete interna con una numerazione ip
sulla stessa classe della raspberry - ).
Ma come dicevo sopra, io
preferiso entrare nella configurazione del Motion attraverso il semplice
programma di editor testuale " vi ", con il comando
" sudo vi /etc/motion/motion.conf "
A
questo punto come detto sopra, si puo' rendere disponibile il server a
tutti i pc della rete interna con la modifica del parametro "
webcam_localhost off "
Facendo questo si rende disponibile, oltre
all'accesso alla configurazione, anche la pagina di controllo della
telecamera, che viene aggiornata in continuazione con cio' che inquadra
la cam. Questa pagina la si raggiunge all'indirizzo
" http://localhost:8081 " .
Se
l'indirizzo non fosse disponibile, magari perche' sul server gira già
un altro servizio proprio su questa porta, si può modificare ad esempio
sulla porta 7071 soltanto variando questa riga del file di
configurazione " webcam_port 8081 "
Il file di configurazione è
molto ben commentato - in inglese - ma e' chiaro ed essenziale, diviso
per capitoli, quindi potranno essere modificati tutti i parametri propri
del server, i controlli di base HTTP, la gestione dei comandi esterni
in shell, tutta la gestione delle immagini e dei video e la loro
collocazione nelle cartelle di sistema, la gestione del movimento e del
sistema di Capture Device, le istruzioni per il debug e per lo start del
programma come demone Linux.
Ci sono anche molti parametri per la
regolazione di un eventuale sistema motorizzato con stepper o motori in
continua che gestisce lo spostamento della telecamera in funzione del
eventuale movimento individuato, cioe' se la cam individua in movimento
si attiva, registra un filmato, scatta delle foto, puo' attivare un
allarme o inviare una mail o trasferire il filmato e le foto scattate su
un server ftp esterno, ed e' stato implementato anche un sistema di
motion tracking Pan e Tilt che dovrebbe seguire il soggetto in movimento
spostando fisicamente la cam attraverso l'attivazione di due motori -
appunto uno per il movimento di Pan ed uno per il movimento di Tilt -
Questa parte del programma no ho avuto modo ancora di testrarla, ma
leggendo il manuale s
embra che sia ancora in fase di sviluppo , comunque non appena avro' effettuato dei test su questa parte del programma, scrivero' una guida con unpost apposito.
Ho
provato ad aumentare la qualita' delle immagini, auentando la grandezza
delle immagini registrate attraverso la webcam. Come detto sopra, ho
fatto dei test con due webcam, la meno definita ha al massimo una
definizione di 640 x 480, mentre la Trust HD puo registrare immagini con
una definizione di 1920 x 1080. A questo grado di definizione pero' ci
sono dei problemi di "reazione" del sistema, che, probabilmente a causa
dei limiti dei velocita' del microprocessore, non garantisce
costantemente una ottima fluidita' delle immagini, vengono registrate
delle immagini corrotte o con dei disturbi come la perdita di righe di
pixe. quindi direi che non sia il caso di spingersi a questa
definizione. Gli stessi problemi, ma naturalmente con una intensita'
inferiore, si verificano alla velocita' di 1024 x 768, mentre a 640 x
480 non ho incontrato nessun genere di problema riguardo alla qualita'
delle immagini prodotte.
Una delle opzioni che ho modificato e'
" ffmpeg_timelapse_mode hourly "
che
crea un file di Time Lapse con le immagini che riceve la telecamera e
lo chiude ogni ora, invece che ogni giorno come risulta essere settato
di default. In questo modo nella cartella che abbiamo scelto per
contenere i file creati di TimeLapse, ci troveremo tanti file video
creati dal programma ffmpeg uno per ogni ora di attivita' del nostro
sistema. Per far in modo che i file non si sovrascivano l'uno
sull'altro, cosa che accade con la configurazione di default, ho settato
nell'apposita sezione dedicata ai nomi dei file creati, il nome dei
file che contenga anche la data e l'ora di sistema, aggiungendo
all'istruzione
" timelapse_filename tlapse/%Y%m%d-timelapse "
il
comando per inserire l'ora i minuti ed i secondi di sistema alla
creazione del file %H%M%S- , cosi nella mia configurazione adesso il
settaggio e' questo
" timelapse_filename tlapse/%Y%m%d-%H%M%S-timelapse "
Ho
potuto effettuare anche dei test con i settaggi dei valori di contrasto
luminosita' e brillantezza delle immagini percepite dalla cam, ma devo
essere sincero, secondo me la soluzione migliore rimane quella di
default. ( un po' come gli hamburger di MacDonald, hanno un sapore
standard, ma, alla fine, restano i migliori!)
L'ho fatta lunga, se
qualcuno ha necessita' informazioni piu' dettagliate sul'argomento mi
contatti pure attraverso il sito e saro' felice di condividere quello
che ho imparato durante i miei test.
Tecnogeppetto