Sistema de vigilancia (con detección de movimiento)
Publicado el 12/4/2016Podemos usar nuestra Orange Pi para montar un sistema de vigilancia que grabará un vídeo cuando detecte algún movimiento. Por supuesto, tendremos acceso remoto a la cámara para saber en todo momento qué está pasando.
Que necesitas:
Para configurar (si no lo haces por remoto) necesitarás teclado-ratón y cable de vídeo, pero para la instalación final no será necesario. Doy por hecho que ya tenemos una Orange Pi con un sistema operativo instalado y funcionando. También doy por hecho que ese sistema es Linux (para este desarrollo yo tengo instalado Armbian Jessie desktop).
En mi caso voy a usar una cámara web HP HD 2300, que se puede encontrar por 20 €uros (he probado con una Webcam china de 4$ y también funciona, aunque la calidad, como es normal, deja muuuucho que desear).
Primero vamos a comprobar que la cámara está instalada, reconocida y funcionando:
pi@orangepi ~ $ lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 1.1 root hub Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 2.0 root hub Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 003: ID 0ac8:3420 Hewlett Packard Bus 001 Device 002: ID 1a40:0101 Terminus Technology Inc. 4-Port HUB pi@orangepi ~ $ ls /dev/video* /dev/video0
Este paso no es necesario, pero así comprobamos que todo funciona correctamente. Seguramente (en mi caso es así) tengas mplayer instalado, pero si no, instálalo:
sudo apt-get install mplayer
Ejecuta mplayer para usar la Webcam para capturar vídeo:
sudo mplayer tv://
Deberá abrirse una ventana con la captura de vídeo en directo.
Detección de movimiento.
Ya hemos comprobado que la cámara funciona y es capaz de capturar vídeo. Vamos a por la detección de movimiento. Necesitamos instalar un software llamado Motion desarrollado por Kenneth Lavrsen. Más información pulsando aquí.
sudo apt-get install motion
Cuando termine, hay que hacer algúnos cambios. Abre el fichero motion.conf con tu editor preferido:
sudo nano /etc/motion/motion.conf
Busca las siguientes lineas y cambia:
"Daemon = off" por "on"
y el directorio donde se grabarán las imágenes:
target_dir /home/orangepi/motion
Este directorio debe estar creado y tener todos los derechos de escritura, así que créalo si no existe y dale permisos totales. Desde el directorio /home/orangepi/ :
sudo mkdir motion sudo chmod 777 motion
Para tener acceso desde el exterior tenemos que cambiar varias líneas. La primera es para acceder desde fuera de localhost y las siguientes para establecer un usuario y contraseña por seguridad:
stream_localhost off stream_auth_method 1 # cambia usuario:password por los de tu elección stream_authentication usuario:password
Desde el puerto 8080 se puede ver y editar la configuración del programa, pero sólo se podrá editar desde local. En este archivo están casi todos los parámetros de configuración del programa. Por ahora es suficiente, luego podrás cambiar más cosas. Guarda y sal del editor.
Para asegurarnos que el servicio de detección arranca como un servicio de Linux, necesitamos hacer otro cambio de configuración:
sudo nano /etc/default/motion
y cambiamos:
"start_motion_daemon=no" por "yes"
Guarda y sal del editor. Para terminar, lanzamos el programa:
sudo service motion start
y comprobamos que podemos ver la imagen accediendo al servidor local:
http://localhost:8081 o http://127.0.0.1:8081
Si todo ha ido bien, veremos la imagen de la webcam en el navegador y al detectar un movimiento, se grabarán los fotogramas con el cambio de estado en el directorio que antes hemos configurado.
Este programa es increible y ofrece muchas posibilidades muy interesantes. Puedes lanzar un evento cuando se detecta algún movimiento (enviar email o un SMS por ejemplo), grabar datos en una base de datos, seguir el movimiento manjando motores o servos. Puedes controlar varias cámaras... en fin, un programa muy completo, con el que controlar un sistema muy complejo.
Por supuesto, todo este proceso necesita ser "afinado". El siguiente paso integrarlo todo en una caja, poder acceder desde cualquier punto fuera de la propia red, para lo que habría que dar acceso al exterior y, en el router, redirigir las llamadas al puerto 8081 a la Orange Pi, pero esto queda para un segundo artículo.
Espero que te haya sido de utilidad, no dudes en escribir un comentario si ves algún error o si puedo ayudarte.
* Actualización 18/05/2016:
Gracias por tu mensaje José Luis. Puedes ver como acceder de forma remota redirigiendo los puertos del router en este otro artículo.
* Actualización 1/06/2016:
Gracias por tu mensaje Carmen. Puedes ver como obtener un servicio gratuito de IP fija en este otro artículo.
Utiliza este espacio si quieres añadir algún comentario adicional o si tienes alguna duda.
No olvides añadir tu distribución y tu placa.
Todos los comentarios serán validados antes de su publicación.
JoseLuis
Muy interesante pero podrias explicar la forma de accceder de forma remota. Todo me ha funcionado a la primera, pero no soy capaz de conectar desde otro punto fuera de la red. Gracias de antemano
Administrador OrangePiWeb.es
Subiré una guía para acceder de forma remota lo antes posible. Gracias por tu comentario JoseLuis.
Carmen
Buen artículo, todo muy bien explicado. ¿Pero como podemos resolver el problema de la ip cambiante?. Mi ip no siempre es la misma y a veces tengo problemas para acceder desde la oficina. muchas gracias por estos tutos, a mi me ha venido de perlas
Administrador OrangePiWeb.es
Gracias Carmen. Puedes leer como mantener la ip fija pulsando en el siguiente enlace: IP fija
David Beltran
Gracias, buena guía en el artículo. Solo una duda, ¿Cómo configurar motion para usar mas de una cámara web a la vez?
Administrador OrangePiWeb.es
Hola David.
Yo no lo he usado ni lo he probado, pero para 2 cámaras necesitas 3 archivos de configuración: 1 motion.conf y 2 ficheros de thread (hilos) uno para cada cámara. Todas las opciones comunes a las 2 cámaras irán en el fichero motion.conf. La primera cámara se define en el primer hilo llamado desde motion.conf. La segunda cámara se define en el segundo archivo de hilo llamado desde motion.conf, etc...
Crea los archivos thread0.conf y thread1.conf. Al final de motion.conf, quita los comments (#) a las líneas que se refieren a ellas. El contenido completo de los archivos de subproceso puede ser así:
thread0.conf:
videodevice /dev/video0
stream_port 8081
thread1.conf:
videodevice /dev/video1
stream_port 8082
Casi todas las opciones de configuración pueden ser únicas para una cámara específica y se colocan en el archivo de configuración thread. Pero hay algunas opciones que debe estar en motion.conf y no puede estar en los archivo de configuración thread: control_authentication, control_html_output, control_localhost, control_port, daemon, y thread.
Cuéntanos como te ha ido.
Pepe
Hola. Gracias por el aporte. Una cuestión, imagino que esté montaje será posible con cualquier modelo de OPi... Me estoy planteando hacerlo con una Opi Zero, entiendo que no habría problema... ¿No?
Administrador OrangePiWeb.es
Pues supongo que si que se podrá, pero sólo hay una forma de saberlo... Ten en cuenta que sólo tiene 1 puerto USB. Existe una expansión de 2 puertos USB por 2€ que quizás te interese.
Por favor, cuéntanos como te ha ido y si mandas alguna fotografía del montaje la publicaremos por aquí.
John
Hola amigo, gracias por los aportes me han servido. compre por ali la 2eplus y la ONE, tengo el modulo de camara de 2MPX original de orange, pero no logro usarlo, la idea es poder acceder a una IP y ver esa camara en streaming, no se si me puedas ayudar ando un poco liado. Saludos.
Este es el combo que compre https://goo.gl/KmnuKQ Gracias
Administrador OrangePiWeb.es
Hola John. Para poder usar la cámara de 2Mpx original de Orange Pi, necesitarás cargar los siguientes módulos:
sudo modprobe gc2035
sudo modprobe vfe_v4l2
Luego, sigue los pasos de este mismo tutorial para instalar motion y tendrás acceso a la cámara. Al final del tutorial, encontrarás información para acceder desde fuera de tu propia red, así como la forma de conseguir una IP fija. Cuéntanos como te ha ido.
Saludos.
Celestino
Hola.
Se podría completar tratando no solo las cámaras USB sino también las que se conectan al puerto CSI como por ejemplo esta que debe ser un clon de la genuina de orange :
https://www.ebay.es/itm/2MP-Camera-Module-Board-with-Cable-Webcam-Video-For-Orange-Pi-PC-Lite-Zero-Plus2/132475606050?hash=item1ed8295422:g:KnUAAOSwoBlaYXm0
Además me viene la duda de que sucede cuando se llena la memoria SD con vídeos, ¿como se podría hacer que se limitara a un determinado tamaño la carpeta motion y que se fuera eliminando cíclicamente el o los vídeos mas antiguos para hacer sitio para el vídeo mas reciente.
Un saludo.
Administrador OrangePiWeb.es
Hola Celestino. Tengo una cámara como esa que compré con mi primera placa. La probé y funcionó correctamente, solo hay que cargar un par de librerías. Pero al dar una salida de 2MB nunca me ha parecido interesante. Suelo usar webcams porque dan bastante más calidad y ocupan poco más espacio. Ten en cuenta que además tendrás que fabricar algún tipo de soporte para la cámara CSI y eso me ha quitado aún más interés.
Sobre lo del llenado de la tarjeta, es más un tema de Linux que de Orange Pi. En algunos de mis proyectos lo he solucionado subiendo las imágenes a la nube, tipo Dropbox. Pero me parece un tema interesante y a tener en cuenta para futuros proyectos. Gracias por tu aporte.
Nacho
Hola amigo, exelente expicacion, de verdad, gracias, mi pregunta, como monto un HDD en mi Orange pi one para asi tener suficiente espacio para guardar las imagenes de las camaras, de antemano, muchas gracias,
Nacho
Administrador OrangePiWeb.es
Hola Nacho. Aquí tienes una guía:
https://orangepiweb.es/nube-personal-nextcloud.php
Saludos
Copyright © 2024 desde 2016. Todos los derechos reservados | Diseño JaviPSantos