Videovigilancia en el hogar. Implementación con Zoneminder y Debian 8

Introduccion


Buen dia

Al tener un NAS doméstico que ejecuta Debian 8 (solía usar Ubuntu Server 12.04 y 14.04), surgió la idea de asignarle, entre otras cosas, la función de un servidor de vigilancia. Zoneminder fue seleccionado como la parte del servidor . El algoritmo de videovigilancia debe ser el siguiente: no es necesaria la grabación las 24 horas del día, pero si es necesario, se requiere la capacidad de permitir la grabación cuando se produce un evento: desencadenar un movimiento, seguido de enviar una notificación por correo electrónico con capturas de pantalla del evento. Esto es necesario para garantizar el control del apartamento cuando alguien está ausente. Bueno, por supuesto, necesita la capacidad de conectarse de forma remota y verificar si todo está en orden.

En el sitio del desarrollador encontré el más detalladoUn wiki específicamente para instalar en Debian 8 de 64 bits. En consecuencia, tomaré las instrucciones de instalación desde allí, explicando algunos puntos con mis comentarios.

Instalar Zoneminder


Entonces, tenemos un servidor con Debian 8 de 64 bits instalado en la configuración mínima (usé netinstall). Primero necesitas editar sources.list, agregando backports de Jessie:

sudo nano /etc/apt/sources.list

Al final del archivo, agregue:

deb http://http.debian.net/debian jessie-backports main

O descomente esta línea, si ya está allí, es decir, elimine # al comienzo de la línea. Actualización del índice del paquete:

sudo apt-get update

Ahora todo está listo para instalar Zoneminder, que haremos:

sudo apt-get install zoneminder

Durante la instalación, Apache, MySQL, PHP también se instalarán automáticamente.
Una vez completada la instalación, cree la base de datos MySQL:

sudo mysql -uroot -p < /usr/share/zoneminder/db/zm_create.sql

En el proceso de creación de la base de datos, se le pedirá que seleccione la contraseña de root. Luego, ejecute los siguientes comandos secuencialmente (a través de sudo), ingresando la contraseña en caso de una solicitud:

mysql -uroot -p -e "grant all on zm.* to 'zmuser'@localhost identified by 'zmpass';"

mysqladmin -uroot -p reload

chmod 740 /etc/zm/zm.conf

chown root:www-data /etc/zm/zm.conf

Activa la ejecución automática de Zoneminder:
systemctl enable zoneminder.service

Agregamos el usuario www-data al grupo sudo, esto es necesario para acceder a las cámaras locales:

adduser www-data sudo

Iniciar Zoneminder:
systemctl start zoneminder.service

Comprueba que Zoneminder se está ejecutando:
systemctl status zoneminder.service

Si todo está en orden, la salida del comando debería ser algo como esto:

● zoneminder.service - ZoneMinder CCTV recording and surveillance system
   Loaded: loaded (/lib/systemd/system/zoneminder.service; enabled)
   Active: active (running) since  2016-07-10 18:48:30 IRKT; 5h 31min ago
  Process: 6413 ExecStop=/usr/bin/zmpkg.pl stop (code=exited, status=0/SUCCESS)
  Process: 6455 ExecStart=/usr/bin/zmpkg.pl start (code=exited, status=0/SUCCESS)
 Main PID: 6474 (zmdc.pl)
   CGroup: /system.slice/zoneminder.service
           ├─6474 /usr/bin/perl -wT /usr/bin/zmdc.pl startup
           ├─6507 /usr/bin/perl -wT /usr/bin/zmfilter.pl
           ├─6514 /usr/bin/perl -wT /usr/bin/zmaudit.pl -c
           └─6521 /usr/bin/perl -wT /usr/bin/zmwatch.pl

Configurar Apache:
a2enmod cgi

a2enmod rewrite

a2enconf zoneminder

Agregue su zona horaria en PHP:
sudo nano /etc/php5/apache2/php.ini

Estamos buscando la sección [Fecha] y cambiando date.timezone a la deseada:
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Irkutsk

Guardar - Ctrl + O, salir - Ctrl + X.
Reiniciar Apache:
service apache2 restart

Para poder controlar Zoneminder a través de Internet Explorer, debe instalar Cambozola:

cd /usr/src && wget http://www.andywilcock.com/code/cambozola/cambozola-latest.tar.gz

tar -xzvf cambozola-latest.tar.gz

replace 936 with cambozola version downloaded

cp cambozola-0.936/dist/cambozola.jar /usr/share/zoneminder

Esto completa la instalación de Zoneminder. Ahora debe configurar el transporte de correo para que Zoneminder pueda notificarle los eventos por correo electrónico.

Configurar el transporte de correo


Para enviar notificaciones, Zoneminder puede usar ssmtp e instalarlo:

sudo apt-get update

sudo apt-get install ssmtp

Instale mailutils al mismo tiempo si este paquete aún no está instalado:
sudo apt-get install mailutils

Ahora configure los ajustes de correo en nombre de qué notificaciones se enviarán. Supongamos que el buzón se encuentra en gmail.com. Abra ssmtp.conf:
sudo nano /etc/ssmtp/ssmtp.conf

y traiga a este formulario, indicando, en consecuencia, sus datos:
root=mymail@gmail.com
mailhub=smtp.gmail.com:587
hostname=localhost
RewriteDomain=gmail.com
UseSTARTTLS=YES
UseTLS=YES
AuthUser=mymail@gmail.com
AuthPass=myverystrongpassword

Revalias derechas:
sudo nano /etc/ssmtp/revaliases

traemos a esta forma:
root:pp@gmail.com:smtp.gmail.com:587
www-data:pp@gmail.com:smtp.gmail.com:587

Y verificamos la corrección de la configuración enviando una carta de prueba:
echo "Hello, World" | mail -s "My email check" mne@napochtu.ru

Si la prueba es exitosa, continúe con el siguiente paso: instalar MIME :: Lite y Net :: SMTP. Compruebe si estos componentes están instalados:
perl -MMIME::Lite -e "print \"Module installed.\\n\";"

perl -MNet::SMTP -e "print \"Module installed.\\n\";"

Instale yendo al shell perl:
sudo perl -MCPAN -e shell

install MIME::Lite
install Net::SMTP


Ahora tenemos que hacer algunos cambios muy importantes, sin los cuales el transporte de correo desde Zoneminder no funcionará. Tenga en cuenta que estos cambios solo deben realizarse si la versión del Zoneminder instalado es 1.29 o inferior. A partir de la versión 1.30, estas acciones no son necesarias.

Abra el archivo zmfilter.pl en el editor:

sudo nano /usr/bin/zmfilter.pl

Yendo a la línea 1179, vemos lo siguiente:
### Send the Message
MIME::Lite->send( "smtp", $Config{ZM_EMAIL_HOST}, Timeout=>60 );
$mail->send();

Comenta las líneas
MIME::Lite->send( "sendmail", $Config{ZM_EMAIL_HOST}, Timeout=>60 );
y
$mail->send();

y agregue una línea debajo de ellos
$mail->send('sendmail','/usr/sbin/ssmtp',$Config{ZM_EMAIL_ADDRESS});

Como resultado, a partir de la línea 1179 (en mi caso, pero no exactamente este número de línea), el código debería verse así:
### Send the Message
#MIME::Lite->send( "sendmail", $Config{ZM_EMAIL_HOST}, Timeout=>60 );
#$mail->send();
$mail->send('sendmail','/usr/sbin/ssmtp',$Config{ZM_EMAIL_ADDRESS});

Guardar, salir Esto completa el trabajo con el terminal.

Interfaz web de Zoneminder


La administración está disponible en ip.adress.servera / zm , vaya. Lo primero que debe hacer es ir a Opciones -> Usuarios, y establecer la contraseña para administrador:



luego vaya a Opciones -> Sistema y marque la casilla OPT_USE_AUTH:



Si esto no se hace, Zoneminder le permite ir a la interfaz web o conectarse a través de una aplicación cliente sin solicitar un nombre de usuario / contraseña, que, por supuesto, no es seguro. Es extraño que esta marca de verificación tan necesaria no esté marcada por defecto.

Ahora configure el envío de correo electrónico. Vaya a Optons -> Correo electrónico y configure por analogía:



En el campo EMAIL_BODY, puede configurar el formato de notificaciones según lo necesite. Por ejemplo, si agrega% EI1% al campo, la primera captura de pantalla desde el momento en que se activa el sensor de movimiento se adjuntará al mensaje. Una lista completa de opciones para notificaciones está disponible aquí .

Agregar cámaras


Zoneminder puede funcionar con cámaras usb e IP. Por el momento, mis cámaras todavía están en camino, así que como una versión temporal de prueba de ajuste de la cámara, utilizo mi viejo teléfono inteligente Alcatel Pop C2 Android, que tiene instalada la aplicación de cámara web IP , que convierte el teléfono inteligente en una cámara IP Wi-Fi. Después de instalar y ejecutar la aplicación (primero recomiendo configurar la resolución de la transmisión de video en la configuración de la aplicación, configuro 800x480), la pantalla del teléfono inteligente muestra la IP y el puerto a través del cual puede ir a la interfaz web y ver qué es interesante aquí:



En general, hay muchas configuraciones, pero estamos interesados ​​en la dirección a la que se proporciona la transmisión de video. Y vemos que hay información para configurar Zoneminder, lo cual es una buena noticia. Es decir, se especifica la ruta del host remoto, la ruta que deberá ingresarse en la configuración de Zoneminder: después de la cámara IP debe agregar / video:



Vuelva a la interfaz web de Zoneminder para agregar la cámara, seleccione Agregar nuevo monitor:



en el campo Nombre, escriba el nombre deseado, Fuente escriba -> Remoto:



en la pestaña Fuente, complete los campos: Nombre de host remoto -> IP del teléfono inteligente, Puerto de host remoto -> puerto en el que se ejecuta la cámara web IP, Ruta del host remoto -> la ruta que vimos en la configuración de la cámara web IP, y también indique resolución de transmisión de video, que debe coincidir con la que seleccionamos anteriormente en la configuración de la cámara web IP:



Guardamos la configuración -> Guardar, y en el menú principal de Zoneminder vemos la cámara que agregamos:



Al hacer clic en el nombre del que vemos la imagen: las



cámaras pueden funcionar en varios modos, que está determinado por el parámetro Función en el menú principal:



el modo en el que solo se realiza la grabación movimiento en el cuadro, llamado Modect, y selecciónelo. Ahora el sistema no grabará la transmisión de video continuamente, pero solo si hay buenas razones. Pero aún necesitamos una notificación de movimiento en el marco. Para esto necesita configurar el filtro. Abra los filtros en el menú principal de Zoneminder, configúrelos según la captura de pantalla, guárdelos con cualquier nombre:



y no olvide marcar la casilla junto a Ejecutar filtro en segundo plano:



Por lo tanto, si se detecta movimiento en el cuadro, el sistema grabará el video y enviará una notificación al correo.

Aplicaciones de cliente


Si hay una IP permanente, nada le impide reenviar los puertos en el enrutador y conectarse desde el teléfono inteligente desde el exterior a través de la interfaz web, especialmente porque puede seleccionar la versión móvil de la interfaz en la configuración de Zoneminder, pero, además, decidí buscar alguna aplicación móvil para esto objetivos Después de buscar en Google Play la palabra clave "zoneminder", me decidí por zmNinja , porque La calificación es bastante alta y me gustaron las capturas de pantalla. La aplicación es de pago, versión de prueba para evaluación preliminar, por desgracia, no. La funcionalidad es más que suficiente: ver la transmisión de video en tiempo real, ver el archivo, eventos grabados, cambiar de modo de cámara, etc.











También hay versiones de escritoriozmNinja para Linux, Windows, Mac OS X: se distribuyen de forma gratuita. Así es como se ve la versión de Linux que se ejecuta en mi Mint 18:



en general, la interfaz es la misma para todos los sistemas.

Eso es todo, gracias por su atención.

Source: https://habr.com/ru/post/es396099/


All Articles