VoIP and Hacking | Consulenza Documentazione

Costruire una applicazione convergente per la sorveglianza domestica (parte 3)

by admin on May.11, 2010, under Hacking, Linux, Sicurezza

Ho già affermato nel recente post introduttivo a Motion (che per inciso dovrebbe essere inteso come la prima reale puntata della serie “Costruire una applicazione convergente per la sorveglianza domestica”), che la sezione “External Commands” costituisce il cuore della programmazione applicativa, dove appunto si possono implementare i meccanismi reattivi, sia interni che di interazione con altre applicazioni software, programmando qualsiasi operazione opportuna in una ottica “event driven”, ovvero guidata dal verificarsi di particolari eventi:

Gli eventi previsti, riassumendoli, sono i seguenti

  • on_event_start
  • on_event_end
  • on_picture_save
  • on_motion_detected
  • on_area_detected
  • on_movie_start
  • on_movie_end
  • on_camera_lost

Motion può di conseguenza mandare in esecuzione comandi esterni in base a tali eventi (tutti relazionabili al rilevamento del movimento da parte delle video camere gestite). Cercherò di descriverli.

Vediamoli di seguito insieme alle relative opzioni

on_event_start

  • Tipo di argomento: Stringa
  • Range / Valori validi: Max 4095 caratteri
  • Default: Non definito

Significato dell’ argomento:
Riguarda il comando che deve venire eseguito quando si verifica un evento. L’ evento si riferisce al rilevamento di movimento che si verificasse dopo il periodo definito dal parametro “gap” (già visto in precedenza) .

Consiste nel pathname completo di un programma/script.
Può consistere appunto in un qualsiasi tipo di programma o script eseguibile. Se si tratta di uno script (tipo perl o bash) occorre ricordarsi di inserire la relativa linea shebang (ad es. #!/user/bin/perl o #!/bin/bash) in testa allo script.

Il comando viene mandato in esecuzione quando l’ evento si verifica. In pratica quando il primo movimento viene rilevato dopo il gap programmato rispetto al termine dell’evento precedente.

on_event_end

  • Tipo di argomento: Stringa
  • Range / Valori validi: Max 4095 caratteri
  • Default: Non definito

Significato dell’ argomento:
Comando che deve venire eseguito quando un evento termina dopo un periodo di assenza di movimento (definito da gap).

on_picture_save

  • Tipo di argomento: Stringa
  • Range / Valori validi: Max 4095 caratteri
  • Default: Non definito

Significato dell’ argomento:
Comando che deve venire eseguito quando una immagine viene salvata.

on_motion_detected

  • Tipo di argomento: Stringa
  • Range / Valori validi: Max 4095 caratteri
  • Default: Non definito

Significato dell’ argomento:
Comando che deve venire eseguito quando viene rilevato un frame con movimento.

Non bisogna indicare “none” nel caso in cui non si voglia eseguire alcun comando. In tal caso occorre escludere l’opzione dal file oppure semplicemente commentarla ponendo un cattere “#” oppure “;” in testa alla linea.

on_area_detected

  • Tipo di argomento: Stringa
  • Range / Valori validi: Max 4095 caratteri
  • Default: Non definito

Significato dell’ argomento:
Comando che deve venire eseguito quando viene rilevato del movimento all’interno di un’ area predefinta. Si veda l’opzione area_detect nel file /etc/motion/motion.conf, dove le aree in cui è suddiviso il campo visivo della videocamera sono così mumerate:

1 2 3
4 5 6
7 8 9

Uno script/comando viene immediatamente, ma solo una volta nel corso di un evento.
Con questa opzione possono venire specificate una o più aree.

on_movie_start

  • Tipo di argomento: Stringa
  • Range / Valori validi: Max 4095 caratteri
  • Default: Non definito

Significato dell’ argomento:
Comando che deve venire eseguito quando inizia la registrazione di un filmato mpeg (infatti tale opzione si chiamava in precedenza onmpeg.

Quando si utilizza ffmpeg il filmato viene generato “on the fly” e on_movie_start pertanto viene eseguito immediatamente alla creazione del file.

Più spesso si preferisce usare l’opzione on_movie_end option che invece viene eseguita allorché il file mpeg viene chiuso e l’evento considerato terminato.

on_movie_end

  • Tipo di argomento: Stringa
  • Range / Valori validi: Max 4095 caratteri
  • Default: Non definito

Significato dell’ argomento:
Comando che deve venire eseguito appunto quando un file-filmato ffmpeg movie viene chiuso al termine di un evento, essendo trascorso il numero di secondi definito dalla opzione temporale “gap”.
Tale opzione si chiamava in precedenza onffmpegclose.

on_camera_lost

  • Tipo di argomento: Stringa
  • Range / Valori validi: Max 4095 caratteri
  • Default: Non definito

Significato dell’ argomento:
Comando che deve venire eseguito quando il programma non riesce ad accedere ad una videocamera.

Vi sono putroppo situazioni in cui motion non riesce a rilevare correttamente la perdita di una videocamera!
Ciò dipende dal driver, in quanto alcuni dreiver non riesono a rilevare tale circostanza.
Alcuni bloccano il thread di motion. Alcuni l’intero PC!

In tutte le opzioni esaminate si possono utilizzare degli speciali speficicatori (ad esempio %f per passare il filename, compresa l’intera path, al comando da eseguire).

I più comuni specificatori di conversione sono:

  • %Y = anno, %m = mese, %d = data
  • %H = ora, %M = minuti, %S = secondi
  • %v = evento
  • %q = frame number
  • %t = thread (camera) number
  • %D = pixels modificati
  • %N = livello di disturbo
  • %i e %J = larghezza ed altezza della motion area
  • %K e %L = coordinate X ed Y del centro del movimento
  • %C = valore definito come text_event
  • %f = filename con path completa
  • %n = numero indicante il filetype

Un esempio di una tipica azione effettuabile all’inizio di un evento: l’invio di una EMail di notifica.

on_event_start /usr/local/bin/motion_alarm_mail.sh

dove /usr/local/bin/motion_alarm_mail.sh corrisponde a qualcosa di simile:

#!/bin/bash
#
# nome: motion_alarm_mail.sh - Notifica via EMail di una possibile
# intrusione rilevata da Motion
# author: Domenico Raffaele
#
MITTENTE='Sistema di videosorveglianza'
DESTINATARIO='pinco.pallino@mycompany.com'
OGGETTO='Rilevata possibile intrusione'


echo >/tmp/motion_message.txt
echo Nota informativa automatica>>/tmp/motion_message.txt
echo >>/tmp/motion_message.txt
echo Ho rilevato una possibile intrusione >>/tmp/motion_message.txt
echo >>/tmp/motion_message.txt
echo >>/tmp/motion_message.txt
echo Il sistema di videosorveglianza >>/motion_message.txt


/usr/local/bin/sendEmail
-f "$MITTENTE" -t $DESTINATARIO -u "$OGGETTO" -o "message-file=motion_message.txt"

Incontreremo ancora, nel corso di questa miniserie dedicata alla creazione di un prototipo di soluzione per la videosorveglianza domestica, altre utili azioni conseguenti il “triggering” di un evento rilevato da Motion.

Send post as PDF to PDF | PDF Creator | PDF Converter
:, , , , , ,

Comments are closed.

Cerchi qualcosa in particolare?

Usa il form qui sotto per cercare nel sito:

Blogroll!

Alcuni links...

Archives

Tutte le entries, in ordine cronologio...