Motion miniHowTo

Powered by linuxvar 2.png

Autore: Pipex

Se anche la tua WebCam si è stufata di trasmettere sempre e solo un unico soggetto, probabilmente non degno di essere ammirato come una statua greca, immobile con sguardo fisso al monitor, potresti farla rinascere e trasformarla in un utile occhio elettronico per la video-sorveglianza.

Ma sarebbe noisissimo farle scattare centinaia foto al giorno con distanza di qualche minuto o secondo; meglio sarebbe utilizzare un software in grado di riconoscere i movimenti e registrare solo e soltanto questi su file.
Ancor più comodo sarebbe ricevere tramite mail i fotogrammi che mostrano l'eventuale ospite che si aggira intorno al nostro pc :-)

Motion è proprio quello che fa per te!

Contenuti

Scatola degli Attrezzi - Tools

E così armiamoci del necessario:

Installazione

Per installarlo fate le solite cose che la vostra distro richiede. Per Debian fate

apt-get install motion heirloom-mailx 

Configurazione

Il pacchetto Debian crea il file di configurazione /etc/motion/motion.conf
Evidenzio solo quello che ho modificato per il mio scopo

daemon on
quiet on

Il parametro daemon non lo impostate subito a on, ma lascatelo a off finché tutta la configurazione non sarà stata fatta e testata.

framerate 10
quality 85
auto_brightness off

ho portato a 10 i framerate in quanto nel caso di invio di mail, verrebbero inviate 10 mail ogni secondo nel quale viene "percepito" un movimento tramite webcam.

ffmpeg_cap_new on

Così avremo anche un bel video dei movimenti sospetti

on_picture_save /home/gianluca/bin/motion_send_picture.sh %H-%M-%S %f
on_movie_end /home/gianluca/bin/motion_send_video.sh %H-%M-%S %f
#SOLO x DEBUG/TEST output_all on

Queste sono le righe più importanti, che permettono l'invio dei file jpeg che vengono creati da Motion alla nostra casella di posta.
L'ultima riga è da attivare solo per testare, in quanto dice a Motion di registrare di continuo qualsiasi cosa, indipendentemente se questa si muova o meno.

Script

L'unico vero motivo per cui scrivo questo miniHowTo è che ho modificato lo script trovato qui.

Vogliamo inviare ad un nostro account di posta le immagini che la webcam cattura?
ecco, lo script che viene richiamato ogni volta che si salva una immagine su disco.

#!/bin/sh

# on_picture_save send_mail "%H-%M-%S %f"

#change to suit your needs:
#location of 'mail' binary
MAIL="/usr/bin/mailx"
#Destination e-mail address
TO="pipez@pipes.org"
#Subject of the e-mail
SUBJECT="Motion detected"

echo -e "This is an automated message generated by motion.\n\nMotion detected: $
1\n\n" | $MAIL -a $2 -s "$SUBJECT" $TO

commentiamo il semplice script; impostiamo mailx come programma di posta per spedire il messaggio: preferisco questo a mail in quanto permette di allegare file semplicemente.

Modifichiamo il TO e SUBJECT a piacimento.

L'ultima riga invia la mail, con un breve testo, indicando l'ora dell'effettiva cattura dell'immagine tramite $1 che è il primo parametro passato allo script; nel file di configurazione passiamo infatti i caratteri speciali %H-%M-%S che indicano ora, minuti e secondi.

L'allegato è rappresentato dal secondo parametro $2 il cui valore è fornito da Motion tramite la variabile %f

Anche lo script relativo al video è identico.

finito...
ora lanciate motion e andate a vedere nella directory indicata da "target_dir" del file di configurazione i file jpeg e i filmati creati.

fate qualche prova e se tutto va bene impostate "daemon" a "on".

Supporto Mysql

Be' se il posto e' affollato e in una giornata motion fa molti "scatti", è bene non perdersi.
Motion supporta pienamente mysql, anche se all'installazione non viene installato nessun DB.
Innanzitutto va creato un nuovo database con:

CREATE DATABASE motion

e poi va creata una bella tabella dove verranno memorizzate un po' di cosucce:

CREATE TABLE security (camera int, filename char(60) not null, frame int, file_type int, text_left char(30), time_stamp timestamp(14));

Fatto questo, basterà creare un nuovo utente in mysql e concedergli i privilegi.
La sintassi e' la seguente:

CREATE USER user [IDENTIFIED BY [PASSWORD] 'password']
    [, user [IDENTIFIED BY [PASSWORD] 'password']] ...

FLUSH privileges;
GRANT all on motion.* to motion;

Fatto questo bisogna solo dire a motion le credenziali di accesso al DB.
Nel file di configurazione basta aggiungere:

mysql_db motion
mysql_host localhost
mysql_user motion
mysql_password LA_PASSWORD_SCELTA

Ok. Ora riavviando motion ogni rilevamento produrrà l'aggiunta di un record nella tabella security.
L'unica pecca è che le immagini continuano a risiedere nel filesystem, poichè non esiste alcun campo apposito per memorizzare le immagini.

Webcam Live! mini http server

Impostando un semplice parametro nel file di configurazione è possibile abilitare un mini server web dove poter vedere in "presa diretta" le immagini della propria webcam. Il valore di default è 0 cioè disabilitata. Lo imposto a 1234 - non ho molta fantasia ;)

# Define a port number (e.g. 8000) to enable the mini-http server
# 0 = disabled
webcam_port 1234

Il web server è però abilitato solo su localhost. Per poter collegarsi alla pagina del server è necessario modificare come segue il file di configurazione

# Set to 'off' to allow anybody (not just localhost) to view the
# webcam via the mini-http server (http://hostname:port)
webcam_localhost off

Riavvia/esegui motion e ora collegandoti al IP della tua macchina o a
http://localhost:1234
sarà possibile vedere l'immagine della propria webcam in diretta.
buon divertimento