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.
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 :
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 :
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.
Anth0kuto
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!
Les derniers articles par Anth0kuto (tout voir)
- Vidéo-surveillance multi-caméras avec le Raspberry Pi (Partie 2) - 15 mai 2016
- Vidéo-surveillance multi-caméras avec le Raspberry Pi (Partie 1) - 14 avril 2016
- Retour vers les années 90 : Doom, Quake et Duke Nukem - 23 février 2015