Dans la première partie de notre tutoriel, nous avons monté et installé une caméra. Si ce n’est pas déjà fait, je vous invite à la lire avant de continuer. Dans cette deuxième partie, notre objectif est de créer un système de vidéo-surveillance avec deux caméras et plus.

Une caméra c’est bien, plusieurs c’est mieux !

Pour chaque Raspberry utilisé comme caméra, il est normalement nécessaire de répéter l’opération d’installation du système d’exploitation… tâche longue et fastidieuse ! Pour vous éviter cette peine, nous allons effectuer une duplication du système via un processus de backup.

Backup

Réinserez dans votre ordinateur la carte SD utilisée dans le premier tutoriel. Puis, tapez la commande suivante :
sudo dd bs=4m if=/dev/sdb | gzip > raspicam.img.gz

Cette commande sauvegarde sur le disque de l’ordinateur l’intégralité du système d’exploitation dans une archive gzip « raspicam.img.gz ». Si l’exécution prend du temps, c’est tout à fait normal car il s’agit d’opérations lourdes de lecture et d’écriture sur disque.

Nouvelle caméra

Retirez la carte SD et insérez une nouvelle carte SD qui servira de disque dur à une autre caméra. Puis, tapez la commande suivante :
sudo gunzip --stdout raspicam.img.gz | dd bs=4m of=/dev/sdb

Cette commande recopie à l’identique le système d’exploitation sur notre nouveau disque dur (une carte SD). Réiterez cette opération sur autant de cartes SD que de caméras.

Nous allons tout de même modifier deux fichiers sur chaque carte afin d’identifier de manière unique chaque caméra :

  • /etc/hostname : remplacer raspberrypi par piX
  • /etc/hosts : changer la ligne 127.0.0.1 raspberrypy par 127.0.0.1 piX

Avec X un chiffre entre 1 et 100.

Depuis votre réseau local, vous pouvez maintenant accéder au flux vidéo d’une caméra en tapant http://piX/ dans votre navigateur, au lieu d’utiliser son adresse IP.

N’oubliez pas de modifier également les paramètres de votre routeur pour être capable d’accéder aux flux vidéos depuis un réseau extérieur. Pour résumer, il faut faire un mapping entre votre adresse IP publique et chaque caméra avec son adresse IP locale.

img_7442

Moniteur des caméras

Notre système est maintenant composé de plusieurs caméras. Il faut créer un moniteur permettant de visualiser les flux vidéos des caméras de manière simultanée. Pour atteindre ce but, j’ai créé une application web en Python que vous pouvez installer de deux façons.

Installation sur une des caméras

Une première solution, la plus simple, consiste à installer le moniteur sur une des caméras de notre système :

cd /var/www/html/
sudo git clone https://AnthonySigogne@bitbucket.org/AnthonySigogne/multicam.git
cd multicam
sudo pip install -r requirements.txt
python index.py&

Modifiez ensuite le fichier conf/cameras.txt en insérant la liste des IP publiques de vos caméras, avec une IP par ligne.

Le moniteur est maintenant accessible en local depuis http://piX:5500 ou http://IP:5500 depuis l’extérieur. Encore une fois, n’oubliez pas le mapping entre votre IP publique et l’adresse locale du moniteur.

Installation sur un autre périphérique

Vous pouvez également opter pour une installation sur un autre périphérique, comme votre ordinateur ou votre smartphone. Pour cela, j’ai créé une image Docker installable via cette commande :

docker run -d --name multicam -v /chemin/vers/cameras.txt:/multicam/conf/cameras.txt -p 5500:5500 anthonysigogne/multicam

Comme pour la solution précédente, il faut créer un fichier local cameras.txt contenant la liste des adresses IP publiques des caméras de votre réseau. Le moniteur est maintenant accessible sur votre périphérique depuis l’adresse http://DOCKER_IP:5500.

Résultat

Si tout se passe bien, la page web du moniteur affiche l’ensemble des retours vidéos des différentes caméras de votre système de surveillance, chaque caméra étant configurable de manière autonome :
multi_cam

Bonus : détection de mouvements

On ne peut pas toujours être derrière son écran. Aussi, dès qu’on parle de système de vidéo-surveillance, on pense également à la détection de mouvements (envoi de notifications SMS, prise de photo automatisée,…).

Pour déclencher ce mode sur chaque caméra, remplacez la ligne motion_detection false par motion_detection true dans le fichier /var/www/html/raspimjpeg, puis redémarrez la caméra.

Retournez sur la page web permettant de visionner le flux vidéo de la caméra (ou le moniteur), et vous devriez observer quelques ajouts liés à la détection de mouvements dans le menu :
capture5

La détection de mouvement est maintenant activée et prête à l’emploi. Dès que la caméra détecte un mouvement, le Raspberry enclenche la capture automatique de la vidéo et sauvegarde le fichier sur la carte SD. Par défaut, chaque capture dure 18 secondes. Vous pouvez évidemment augmenter ou réduire la durée, ou encore modifier la qualité de la vidéo.

La vidéo ci-dessous est une capture automatique de la caméra déclenchée au moment où l’ombre de la tasse est apparue sur la table :

Nous en avons fini avec cette deuxième et dernière partie ! Vous avez à présent un système de vidéo-surveillance complet 🙂

Si une étape vous semble obscure, ou pour un éventuel problème, n’hésitez pas à m’écrire sur le forum.
Forum_LINK

Anth0kuto

Anth0kuto

gérant chez Byprog
Administrateur

Freelance Full-Stack Développeur, plus d'infos sur byprog.com !

Fervent linuxien depuis plus de 10 ans, je suis passionné par l'univers de l'open source et par la programmation en particulier. Ma mission si vous l'acceptez: vous emporter dans d'autres contrées!
Anth0kuto
Vidéo-surveillance multi-caméras avec le Raspberry Pi (Partie 1)