Cómo convertir una Raspberry en una cámara de seguridad
Fecha: 29 mayo, 2020
Hace unos meses comencé un proyecto que trataba de convertir mi Raspberry Pi en un sistema de seguridad con cámara de vigilancia. Este sistema cuenta con detección de movimiento que al activarse envía una alarma a nuestro Telegram y además cuenta con streaming 24 horas a la cámara de seguridad.
Es decir, puedo ver mi cámara de seguridad desde cualquier lugar y además me envía a mi Telegram un vídeo de lo que ve cuando detecta movimiento.
Para montar todo esto vamos a instalar un software llamado motion, tiene muchísimas opciones y me ha funcionado bien durante meses por lo cual lo recomiendo.
Para partir en este proyecto necesitas tener previamente:
-Un bot en Telegram (haz clic aquí para aprender a crear uno en menos de 5 minutos).
-Un DNS Dinámico (haz clic aquí para aprender a configurarlo en tu Raspberry fácilmente).
-Una cámara.(Yo compré en Aliexpress esta cámara, es económica y cumple su función, aunque no descarto comprar la oficial algún día para obtener una mayor calidad).
Una vez tengas estas 3 cosas vamos a empezar!
Índice de contenidos
Configurar cámara en Raspberry.
Después de haber conectado la cámara a nuestra Raspberry, lo primero que debemos hacer es habilitarla.
Para ello vamos a ejecutar el siguiente comando en nuestra terminal:
sudo raspi-config
Bajamos con las flechas de nuestro teclado a la opción llamada Interfacing Options y pulsamos la tecla Intro.
Ahora pulsamos en la primera opción llamada Camera:
Nos preguntará si queremos habilitar nuestra cámara, le damos a Sí.
Nos aparecerá un mensaje informando que la cámara ha sido habilitada, le damos a Aceptar y le pulsamos en Finish.
Después de todo esto, nos aparecerá la siguiente ventana solicitando un reinicio, le damos a Sí.
Después de reiniciar nuestra Raspberry debemos comprobar que nuestra cámara funciona, para ello tomaremos una imagen ejecutando el siguiente comando en nuestra terminal:
raspistill -v -o test.jpg
Ahora si nos dirigimos a nuestro directorio principal, podemos ver como se ha tomado la foto:
Descarga de scripts que utilizará Motion.
El siguiente paso es descargar el directorio que contendrá los scripts que nos notificarán vía Telegram y almacenarán las imágenes que tome Motion.
Para ellos debemos contar con un directorio para nuestros scripts en nuestro directorio principal. Si no lo tenemos lo creamos mediante el siguiente comando:
mkdir scripts
Nos movemos al directorio scripts y descargamos el directorio que contiene todo con los siguientes comandos:
cd scripts git clone https://github.com/CarlosPCL98/camara_seguridad.git
Entramos al directorio que acabamos de descargar:
cd camara_seguridad
Una vez dentro encontraremos dos scripts y un directorio llamado fotos_y_videos.
IMPORTANTE!! Necesitamos cambiar los permisos del directorio fotos_y_videos, esto lo hacemos para que Motion tenga los permisos necesarios que le permitirán guarda las fotos y vídeos que tomará cuando detecte movimiento. Le aplicamos los permisos con este comando:
sudo chmod 777 fotos_y_videos
Ahora vamos a modificar el script que nos avisará cada vez que Motion detecte movimiento, este scrips se llama alerta_movimiento.sh:
nano alerta_movimiento.sh
Simplemente añadimos nuestro TOKEN e ID de Telegram y guardamos mediante Ctrl+O.
Ahora debemos modificar el script que nos enviará el vídeo que Motion ha tomado al detectar movimiento. Este script además contendrá unas líneas que nos limpiará el directorio fotos_y_videos, ya que Motion crea muchas fotos y con los vídeos que tome será suficiente.
Este archivo se llama enviar_video.sh y lo abrimos mediante:
nano enviar_video.sh
Simplemente añadimos nuestro TOKEN e ID de Telegram y guardamos mediante Ctrl+O.
Estos scripts deberían verse más o menos como este:
Con este último paso ya tendremos todos los scripts preparados y sólo nos quedará instalar Motion.
Instalación y configuración de Motion en Raspberry Pi.
En este punto del manual, llegamos a lo realmente importante. Ahora vamos a instalar Motion y un editor de texto amigable que nos permita localizar los parámetros que necesitaremos modificar de una forma rápida y sencilla.
Lo primero que vamos a realizar es actualizar los repositorios de nuestro sistema operativo:
sudo apt-get update
Seguido de esto instalamos Motion mediante el siguiente comando:
sudo apt-get install motion -y
Una vez termine la descarga, instalaremos el editor de texto Gedit(no es realmente necesario, pero es interesante ya que este editor permite mediante la combinación de teclas Ctrl+F buscar lo que queramos fácilmente en un documento de texto):
sudo apt-get install gedit -y
Después de haber instalado todo, lo primero que vamos a hacer es modificar el fichero que permite el daemon de Motion, para ello lo abriremos mediante el siguiente comando:
sudo nano /etc/default/motion
Lo único que debemos cambiar en este fichero es donde pone no por un yes, tal y como se muestra en la siguiente imagen:
Una vez hayamos modificado esto, guardamos con Ctrl+O y reiniciaremos nuestra Raspberry mediante:
sudo reboot
Las configuraciones de Motion se realizan en el fichero /etc/motion/motion.conf, por motivos de seguridad vamos a realizar un back up de este fichero mediante:
Antes de empezar con lo realmente interesante quiero decirte que Motion tiene muchísimas más opciones para configurar que las que voy ha explicar aquí, todas ellas las tienen en su documentación oficial, tiene configuraciones de seguridad muy interesantes.
Ahora por fin vamos a realizar las configuraciones necesarias para que nuestro sistema funcione. Abrimos el archivo motion.conf mediante el siguiente comando:
sudo gedit /etc/motion/motion.conf
Te recomiendo que busques los parámetros que iré modificando pulsando Ctrl+F.
Para activar el Daemon modificamos donde pone daemon off por un on, como se ve en la siguiente captura:
El siguiente campo no es realmente necesario que lo modifiques, esto simplemente gira la imagen de tu cámara. Yo por ejemplo la quiero a 270º porque la tengo en una posición especial, por eso la dejo tal que así:
Estos campos sí es realmente importante que los tengamos en cuenta (width,height y framerate), los siguientes valores hacen referencia a la resolución que queremos que use en nuestra cámara y cuantos fps utilizará. Yo por ejemplo prefiero utilizar 640×480 a 90 fps.
Ahora vamos a indicarle a Motion la cantidad de píxeles que deben cambiar para considerar que ha ocurrido un movimiento ante la cámara. Una forma de calcularlo sería pensando el porcentaje de pantalla que debe haber cambiado para considerarse movimiento (Por ejemplo el 10% de los píxeles).
Entonces si calculamos el 10% de 307200px(640×480) obtendríamos 24576 y este sería la cantidad que deberíamos indicar.
Yo voy a poner 8000 porque es la configuración que mejor me ha funcionado en los meses que lo he estado usando, pero te recomiendo que partas de una cifra y vayas probando la sensibilidad y lo ajustes poco a poco, ya que esto puede variar al entorno que estés enfocando.
Esto lo configuraremos en el campo que llamado threshold.
Ahora activaremos la opción que permite a Motion guardar las fotos y vídeos que toma cuando detecta movimiento.
Buscaremos la opción llamada output_pictures e indicaremos on.
Lo siguiente es indicarle a Motion el directorio donde debe guardar las imágenes que toma, nos dirigimos a la opción llamada target_dir e indicamos el directorio que hemos descargado anteriormente llamado fotos_y_videos.
Ahora vamos a habilitar la opción que permite acceder al streaming desde cualquier lugar (si por motivos de seguridad decidimos no activarla, Motion seguirá enviando alarmas a Telegram), esto lo haremos modificando la opción llamada stream_local con un off.
Dejando esta opción en off, Motion entiende que queremos acceder desde cualquier dispositivo.
Si hemos activado la opción anterior, sería muy recomendable añadir un login. Ya que si no lo hacemos cualquiera podría acceder a la imagen de nuestra cámara.
En stream_auth_method yo he elegido la opción 2, ya que tratará nuestro usuario y contraseña mediante el hash criptografico MD5.
En stream_authentication añadiremos el usuario y la contraseña que queremos utilizar separado con dos puntos, te recomiendo que utilices una contraseña larga y que contenga algún carácter especial. Ya que si no, podrían acceder a nuestra cámara a través de ataques de fuerza bruta.
No olvides quitar el ;que hay delante de stream_authentication:
La última configuración que debemos realizar es la que permite a Motion ejecutar los scripts que hemos descargado antes. Esto lo realizaremos mediante las opciones on_movie_start y on_movie_end, estas dos opciones permiten a Motion ejecutar un script cuando inicia y termina un movimiento.
Retiramos los ; que hay antes de estas opciones y escribimos la ejecución a los scripts tal y como se muestra en la imagen:
Después de esto ya tendríamos todas las configuraciones preparadas, solo tendríamos que guardar el archivo. Aun así os dejo una comparativa a modo de resumen de las líneas que he modificado en este archivo:
Para finalizar reiniciaremos el servicio de Motion mediante el siguiente comando, y todas las configuraciones serán aplicadas:
sudo service motion restart
Comprobaciones.
Lo primero que debemos hacer es provocar un movimiento delante de la cámara para ver si, nos envía nuestras notificaciones a Telegram, estas deberían verse tal que así:
Ahora para poder acceder al streaming de nuestra cámara, simplemente abriremos el navegador e introduciremos la IP de nuestra Raspberry y el puerto de que utiliza Motion, que es el 8081.
Una vez entremos a la página nos aparecerá un login similar a este:
Introducimos el usuario y contraseña que hemos creado en el archivo motion.conf, y tendremos acceso a la imagen de nuestra cámara:
Para poder acceder desde cualquier parte del mundo, como dije al principio del artículo vamos a necesitar un DDNS (puedes aprender a crear uno haciendo clic aquí). Una vez lo tengas, simplemente deberás habilitar el tráfico por el puerto 8081 del cortafuegos de tu router hacia la IP de tu Raspberry y ya podrás acceder a través de tu dirección de no-ip, por ejemplo: http://ejemplo.ddns.net:8081
Introducimos nuestro usuario y contraseña y tendremos acceso a nuestra cámara de seguridad:
Llegados a este punto sería recomendable crear un acceso a esta página en nuestra pantalla de inicio, hacemos clic en las opciones del navegador y pulsamos donde dice Añadir en la ventana deinicio.
De esta forma ya tendremos acceso a nuestra cámara de seguridad con un simple icono en la pantalla de nuestro teléfono.
Recomendación de seguridad.
Sería recomendable que cambiaras el puerto 8081 por otro, ya que siendo el que trae por defecto sería más fácil de encontrar y vulnerar, esto lo realizarías en el archivo motion.conf modificando el valor a la opción llamada stream_port.
Por último quiero darte las gracias por haber llegado hasta aquí y espero que hayas configurado tu cámara de seguridad sin ningún tipo de problemas, no dudes en hacerme saber cualquier duda o sugerencia. Un saludo!
Un gran Proyecto Carlos¡¡ Esta muy bien explicado y mu bien detallado indicando todos los pasos a seguir . Me ha servido mucho de ayuda a la hora de planificar mi proyecto.
Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.
Cookies estrictamente necesarias
Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies.
Si desactivas esta cookie no podremos guardar tus preferencias. Esto significa que cada vez que visites esta web tendrás que activar o desactivar las cookies de nuevo.
Deja una respuesta