17 agosto 2010

Vigilando la casa cuando no estás

Vacaciones! qué palabra tan maravillosa. Por fin podemos recoger el petate y largarnos fuera de la ciudad en la que hacemos nuestra vida cotidiana, a pegarnos vuelta y vuelta en la playa o disfrutar de lo sano de la montaña.

El problema es que no todo el mundo coge las vacaciones en las mismas fechas. Las bandas organizadas suelen "trabajar" justo cuando nosotros descansamos. Por ello, aparte de tachar de la checklist cortar el agua, el gas y regar las plantas,… deberíamos considerar la protección o vigilancia de nuestra casa para no encontrarnos una desagradable sorpresa al volver.

Una herramienta que permite tener la casa controlada en todo momento es Motion. Simplemente es necesario un ordenador con Linux (Redhat, Debian o cualquiera compilando el tar.gz) o FreeBSD, así como una o varias webcams USB o netcams accesibles vía TCP/IP, ya sean con cable o inalámbricas. Gracias a Motion, al estar activo, por cada cámara configurada, empezará a comparar los fotogramas actuales con los inmediatamente anteriores, de manera que si se detecta que ha habido un número determinado (configurable) de pixels en una de ellas, se considerará como que ha habido movimiento y se grabará a disco.

Fundamentalmente tiene un único fichero de configuración por cada cámara en el que se podrán indicar entre otras cosas:

  • El/los dispositivo/s en sí: Un /dev/videoX en el caso de una cámara V4L (Video 4 Linux) o la URL (con el usuario y la contraseña) del streaming de la netcam que se desea.
  • Por cada cámara, es posible ajustar parámetros del estilo de la saturación, brillo, contraste, etc,…
  • Es necesario también definir el umbral de píxels que queremos permitir por cambio de imagen en cada cámara: lo que definiríamos como "he detectado un movimiento, así que graba a disco!". Esto es imprescindible puesto que las condiciones de luz y calidad de cada cámara no tienen por qué ser las mismas por lo que tiene sentido personalizarlo en cada caso. Igualmente para no tener muchos falsos positivos conviene afinar la configuración de este tipo de parámetros.
  • Importante es también especificamos la ruta dónde queremos guardar los ficheros, ya sean fotogramas sueltos o hacer que grabe en video una secuencia completa de movimiento según sea detectado, así como el formato de los nombres de los ficheros. Es posible configurar una base de datos MySQL o PostgreSQL para guardar todas las imágenes y videos generados.
  • Podemos hacer además que cuando se detecte un movimiento se ejecute un comando determinado. Una buena idea podría ser utilizar Tweetme! para avisarnos vía twitter estemos dónde estemos que algo ha pasado.
  • Si queremos monitorizar de forma continua lo que detecta cada cámara, al levantar el servicio Motion, podremos acceder a un puerto (configurable) que nos muestre por streaming lo que la cámara está viendo en cada momento.
  • Es útil hacer que se guarde un snapshot cada X segundos, que permita acceder a la última imagen disponible de cada cámara vía web. En mi caso dispongo de una aplicación para iPhone llamada "Webcams" que permite en un momento dado conectarse para ver cómo están tus cámaras (y aquellas webcams públicas que configures)
Hay diferentes GUIs para poder acceder a la estructura de directorios y previsualizar qué ha ocurrido en nuestra ausencia. Llevo utilizando Motion desde 2003 con la GUI MotionCGI aunque el proyecto no esté mantenido actualmente, he ido efectuando yo mis propias modificaciones en la instalación para que sea válido.

Felices y tranquilas vacaciones!

2 comments :

fossie dijo...

Me parece muy util este tipo de programas, intente hacer algo parecido en plan "casero" con VB6 hace unos años y una única webcam pero cuando mi "aplicación" llevaba un par de dias en ejecución el ordenador se colgaba jiji. También es cierto que lo intente sobre windows98 ;)

Tengo una duda ¿no se producen demasiados falsos positivos por los cambios climatológicos? Por ejemplo, si estamos enfocando el salon y se hace de noche pues los pixels que van variando son muchos. Supongo que este tipo de situaciones se tienen controladas porque el amanecer o el anochecer es progresivo (lentamente) pero en los dias de tormenta puede oscurecerse bastante rápido. ¿Esto funciona bien con Motion?

Gracias

Luis dijo...

Pues la verdad es que el Motion es muy útil. Hace tiempo leí una entrada muy interesante en un blog de un chico de Bizkaia, que había "pillado" a un ladrón gracias al Motion: http://vueltaabruselas.blogspot.com/2008/04/sistema-de-seguridad-casero-parte-i-el.html

Por mi parte, lo estuve utilizando en la oficina en una época en que se dedicaron a hacerme simpáticas inocentadas, y conseguí cazarlos a todos con las manos en la masa :)

Un saludo.