Vidéo surveillance à domicile. Implémentation avec Zoneminder et Debian 8

Présentation


Bonjour.

Ayant un NAS domestique qui exécute Debian 8 (j'avais l'habitude d'utiliser Ubuntu Server 12.04 et 14.04), l'idée est venue de lui assigner, entre autres, le rôle de serveur de surveillance. Zoneminder a été sélectionné comme partie serveur . L'algorithme de vidéosurveillance doit être le suivant: l'enregistrement 24h / 24 n'est pas nécessaire, mais si nécessaire, la possibilité d'activer l'enregistrement sur la survenance d'un événement est requise - déclencher un mouvement, puis envoyer une notification par e-mail avec des captures d'écran de l'événement. Cela est nécessaire pour assurer le contrôle de l'appartement lorsque quelqu'un est absent. Bien sûr, vous devez pouvoir vous connecter à distance et vérifier si tout est en ordre.

Sur le site du développeur j'ai trouvé le plus détailléUn wiki spécialement conçu pour l'installation sur Debian 8 64 bits. En conséquence, je prendrai les instructions d'installation à partir de là, expliquant certains points avec mes commentaires.

Installer Zoneminder


Nous avons donc un serveur avec Debian 8 64 bits installé dans la configuration minimale (j'ai utilisé netinstall). Vous devez d'abord éditer sources.list, en y ajoutant des backports Jessie:

sudo nano /etc/apt/sources.list

À la fin du fichier, ajoutez:

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

Ou décommentez cette ligne, si elle est déjà là, c'est-à-dire, supprimez # au début de la ligne. Mise à jour de l'index du package:

sudo apt-get update

Maintenant, tout est prêt pour installer Zoneminder, ce que nous allons faire:

sudo apt-get install zoneminder

Lors de l'installation, Apache, MySQL, PHP seront également installés automatiquement.
Une fois l'installation terminée, créez la base de données MySQL:

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

Lors de la création de la base de données, vous serez invité à sélectionner le mot de passe root. Ensuite, exécutez les commandes suivantes séquentiellement (via sudo), en entrant le mot de passe en cas de demande:

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

Activez l'exécution automatique de Zoneminder:
systemctl enable zoneminder.service

Nous ajoutons l'utilisateur www-data au groupe sudo, cela est nécessaire pour accéder aux caméras locales:

adduser www-data sudo

Lancez Zoneminder:
systemctl start zoneminder.service

Vérifiez que Zoneminder fonctionne:
systemctl status zoneminder.service

Si tout est en ordre, la sortie de la commande devrait ressembler à ceci:

● 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

Configurer Apache:
a2enmod cgi

a2enmod rewrite

a2enconf zoneminder

Ajoutez votre fuseau horaire en PHP:
sudo nano /etc/php5/apache2/php.ini

Nous recherchons la section [Date] et modifions date.timezone à celle souhaitée:
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Irkutsk

Enregistrer - Ctrl + O, quitter - Ctrl + X.
Redémarrez Apache:
service apache2 restart

Pour pouvoir contrôler Zoneminder via Internet Explorer, vous devez installer 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

Ceci termine l'installation de Zoneminder. Vous devez maintenant configurer le transport du courrier afin que Zoneminder puisse vous informer des événements par e-mail.

Configuration du transport du courrier


Pour envoyer des notifications, Zoneminder peut utiliser ssmtp et l'installer:

sudo apt-get update

sudo apt-get install ssmtp

Installez mailutils en même temps si ce paquet n'est pas déjà installé:
sudo apt-get install mailutils

Configurez maintenant les paramètres de messagerie au nom desquels les notifications seront envoyées. Supposons que la boîte aux lettres se trouve sur gmail.com. Ouvrez ssmtp.conf:
sudo nano /etc/ssmtp/ssmtp.conf

et apporter à ce formulaire, en indiquant, en conséquence, vos données:
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 droit:
sudo nano /etc/ssmtp/revaliases

nous apportons à ce formulaire:
root:pp@gmail.com:smtp.gmail.com:587
www-data:pp@gmail.com:smtp.gmail.com:587

Et nous vérifions l'exactitude des paramètres en envoyant une lettre de test:
echo "Hello, World" | mail -s "My email check" mne@napochtu.ru

Si le test réussit, passez à l'étape suivante - installation de MIME :: Lite et Net :: SMTP. Vérifiez si ces composants sont installés:
perl -MMIME::Lite -e "print \"Module installed.\\n\";"

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

Installez en allant dans le shell perl:
sudo perl -MCPAN -e shell

install MIME::Lite
install Net::SMTP


Nous devons maintenant apporter des modifications très importantes, sans lesquelles le transport du courrier de Zoneminder ne fonctionnera pas. Veuillez noter que ces modifications ne doivent être effectuées que si la version du Zoneminder installé est de 1,29 ou inférieure. À partir de la version 1.30, ces actions ne sont pas nécessaires.

Ouvrez le fichier zmfilter.pl dans l'éditeur:

sudo nano /usr/bin/zmfilter.pl

En allant à la ligne 1179, nous voyons ce qui suit:
### Send the Message
MIME::Lite->send( "smtp", $Config{ZM_EMAIL_HOST}, Timeout=>60 );
$mail->send();

Commentez les lignes
MIME::Lite->send( "sendmail", $Config{ZM_EMAIL_HOST}, Timeout=>60 );
et
$mail->send();

et ajoutez une ligne en dessous d'eux
$mail->send('sendmail','/usr/sbin/ssmtp',$Config{ZM_EMAIL_ADDRESS});

Par conséquent, à partir de la ligne 1179 (dans mon cas, mais pas exactement ce numéro de ligne), le code devrait ressembler à ceci:
### 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});

Enregistrez, quittez. Ceci termine le travail avec le terminal.

Interface Web Zoneminder


La gestion est disponible sur ip.adress.servera / zm , allez. La première chose à faire est d'aller dans Options -> Utilisateurs, et de définir le mot de passe pour l'administrateur:



Ensuite, allez dans Options -> Système et cochez la case OPT_USE_AUTH:



Si cela n'est pas fait, Zoneminder vous permet d'aller sur l'interface Web ou de vous connecter via une application client sans demander de login / mot de passe, ce qui, bien sûr, n'est pas sûr. Il est étrange que cette coche très nécessaire ne soit pas cochée par défaut.

Configurez maintenant l'envoi d'e-mails Allez dans Optons -> Email et configurez par analogie:



Dans le champ EMAIL_BODY, vous pouvez configurer le format des notifications selon vos besoins. Par exemple, si vous ajoutez% EI1% au champ, la première capture d'écran à partir du moment où le détecteur de mouvement est déclenché sera jointe au message. Une liste complète des options de notifications est disponible ici .

Ajout de caméras


Zoneminder peut fonctionner avec des caméras USB et IP. Pour le moment, mes caméras sont toujours en route, donc en tant que version temporaire de configuration de test de la caméra, j'utilise mon ancien smartphone Android Alcatel Pop C2, sur lequel l'application IP Webcam est installée , qui transforme le smartphone en caméra IP Wi-Fi. Après avoir installé et exécuté l'application (je recommande d'abord de définir la résolution du flux vidéo dans les paramètres de l'application, j'ai défini 800x480), le smartphone affiche l'IP et le port via lesquels vous pouvez accéder à l'interface Web et voir ce qui est intéressant ici:



En général, il y a beaucoup de paramètres, mais nous sommes intéressés par l'adresse à laquelle le flux vidéo est donné. Et nous voyons qu'il existe des informations pour configurer Zoneminder, ce qui est une bonne nouvelle. À savoir, le chemin de l'hôte distant est indiqué, le chemin qui devra être entré dans les paramètres de Zoneminder - après la caméra IP que vous devez ajouter / vidéo:



Revenez à l'interface Web de Zoneminder pour ajouter la caméra, sélectionnez Ajouter un nouveau moniteur:



dans le champ Nom, écrivez le nom souhaité, Source tapez -> À distance:



dans l'onglet Source, remplissez les champs: Nom d'hôte distant -> IP du smartphone, Port d'hôte distant -> port sur lequel la webcam IP s'exécute, Chemin d'hôte distant -> le chemin que nous avons vu dans les paramètres de la webcam IP, et indiquez également résolution du flux vidéo, qui doit correspondre à celle que nous avons sélectionnée précédemment dans les paramètres de la webcam IP:



Nous enregistrons les paramètres -> Enregistrer, et dans le menu principal de Zoneminder, nous voyons la caméra que nous avons ajoutée:



En cliquant sur le nom dont nous voyons l'image: Les



caméras peuvent fonctionner dans plusieurs modes, qui est déterminé par le paramètre Fonction dans le menu principal:



Le mode dans lequel l'enregistrement n'est effectué que mouvement dans le cadre, appelé Modect, et sélectionnez-le. Désormais, le système n'enregistrera pas le flux vidéo en continu, mais uniquement s'il y a de bonnes raisons. Mais nous avons encore besoin d'une notification de mouvement dans le cadre. Pour cela, vous devez configurer le filtre. Ouvrez Filtres dans le menu principal de Zoneminder, configurez selon la capture d'écran, enregistrez-le sous n'importe quel nom:



Et n'oubliez pas de cocher la case à côté de Exécuter le filtre en arrière-plan:



Ainsi, si un mouvement est détecté dans l'image, le système enregistrera la vidéo et enverra une notification au courrier.

Applications client


S'il y a une IP permanente, rien ne vous empêche de rediriger les ports du routeur et de vous connecter depuis le smartphone de l'extérieur via l'interface web, d'autant plus que vous pouvez sélectionner la version mobile de l'interface dans les paramètres de Zoneminder, mais, en plus, j'ai décidé de chercher une application mobile pour cela objectifs. Après avoir recherché sur Google Play le mot clé "zoneminder", je me suis installé sur zmNinja , car La note est assez élevée et j'ai aimé les captures d'écran. La demande est payée, version d'essai pour évaluation préliminaire, hélas, non. La fonctionnalité est plus que suffisante - visualisation du flux vidéo en temps réel, visualisation des archives, événements enregistrés, changement de mode de caméra, etc.











Il existe également des versions de bureauzmNinja pour Linux, Windows, Mac OS X - ils sont distribués gratuitement. Voici à quoi ressemble la version Linux exécutée sur mon Mint 18:



En général, l'interface est la même pour tous les systèmes.

C’est tout, merci de votre attention.

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


All Articles