Accueil | Publications | PGP Key

TUTORIEL : UN SYSTÈME DE VIDÉO-SURVEILLANCE AVEC LE RASPBERRY PI

Publié le 18 août 2015

Le Raspberry Pi est un outil magnifique pour réaliser des tas de projets plus intéressants les uns que les autres. J’ai voulu monter mon système de vidéo-surveillance, et comme j’ai pas mal galéré malgrès les tutos sur Internet, voici mes propres bidouilles.

Note : Motion, le logiciel utilisé, ne prend par défaut des captures que lorsqu’il détecte un mouvement. Ceci est à prendre en compte en fonction de l’utilisation que vous souhaitez faire de votre caméra de surveillance.

1. Matériel
2. Installation de la vidéo-surveillance
3. Affichage de la vidéo-surveillance
4. Aller plus loin
 > Contrôler Motion depuis partout
 > Démarrer Motion en une seule ligne de commande
 > Vider le dossier /tmp/
 > Aller encore plus loin

1. Matériel

Il vous faut :

2. Installation de la vidéo-surveillance

On va commencer par effectuer tous les branchements – pour ma part, la caméra utilise la nappe sur le bus CSI du Raspberry Pi.

Démarrez votre Pi, ouvrez le terminal et entrez

sudo raspi-config

Allez à la ligne 5, et activez la caméra (« enable »).

À cette étape, vérifiez le bon fonctionnement de la caméra avec raspistill, une commande déjà intégrée dans Raspbian

raspistill -o cam.jpg

Cela va enregistrer le fichier cam.jpg dans /home/pi/, une capture depuis votre caméra.

On vérifie que le système est bien à jour, ça ne peut pas faire de mal.

sudo apt-get update
sudo apt-get upgrade

Passons à l’installation de Motion, qui va nous servir à exécuter le flux.

sudo apt-get install motion

À la fin de l’installation, vous avez un message en orange :

Le daemon, c’est l’exécution de Motion en arrière-plan. Késako ? Nous allons voir ça juste en-dessous.

Une fois Motion installé, nous allons le configurer. Pour cela, dans le terminal nous entrons

sudo nano /etc/motion/motion.conf

Cela va ouvrir le fichier de configuration motion.conf dans le terminal, et justement le premier paramètre que nous pouvons configurer est… le daemon !

Motion enregistre un certain nombre d’images par seconde (selon le framerate, nous verrons ça juste après). Chaque image est enregistrée dans le dossier temporaire de Raspbian /tmp/motion/en continu.

Si le daemon est sur ON, Motion se lancera dès l’ouverture de Raspbian, c’est-à-dire qu’il enregistrera « x » images par seconde pendant toute votre session. S’il est sur OFF, il faudra lancer Motion manuellement.

Attention : l’espace temporaire /tmp/ n’est pas extensible à l’infini et peut se remplir ! Il est vidé à chaque redémarrage du Pi, mais si vous souhaitez dédier votre Pi à la vidéo-surveillance continue, il faudra prévoir une carte mémoire en conséquence et/ou mettre en place un moyen de vider régulièrement le dossier (nous verrons cela plus bas).

Personnellement, je n’ai pas activé le daemon car mon Pi me sert à d’autres expériences.

Dans le fichier de configuration, vous pouvez ajuster de nombreux réglages. Certains sont plus intéressants que d’autres :

3. Affichage de la vidéo-surveillance

Pour voir le stream de votre caméra, il suffit de vous connecter sur votre Pi.

En d’autres termes, il faut vous connecter depuis un navigateur Web ou depuis VLC (en cliquant surOuvrir un flux réseau) à l’adresse IP de votre Raspberry Pi en spécifiant le port de webcam server, décidé plus haut dans le fichier de configuration.

Pour trouver l’adresse IP de votre Pi, il suffit d’entrer la commande

ifconfig wlan0

Ou

ifconfig eth0

Selon que vous utilisiez respectivement le WiFi ou le câble réseau.

Dans mon cas, il s’agit de 192.168.1.13. Comme j’ai spécifié le port 6789 pour la caméra, le stream sera disponible à l’adresse 192.168.1.13:6789.

Comment lire le stream ?

Préférez VLC pour lire le stream. Motion utilise divers codecs (le choix est configurable dans le fichier motion.conf), les navigateurs ne les lisent pas tous, tandis que VLC n’a pas ce problème.

Pour ma part, j’utilise Firefox pour Android, le navigateur par défaut sur le Pi et VLC sur des appareils sous Windows, et je n’ai aucun problème.

Comme le daemon est sur OFF, on lance Motion à la main :

sudo motion

Oops… regardez bien l’écran, Motion retourne une erreur : /dev/video0 not found. What ? Raspbian ne trouve pas le flux de la caméra, et cela est vérifiable si on dresse la liste des devices dans /dev/depuis le terminal : rien ne correspond à video0.

La caméra fonctionne pourtant bien (cf la commande raspistill) ; pour résoudre le problème nous allons donc simplement entrer cette ligne de commande pour charger le bon module dans le kernel

modprobe bcm2835-v4l2

On redémarre Motion

sudo service motion stop
sudo motion

On entre l’adresse IP avec le port qui va bien dans son navigateur ou VLC, et magie ! Les couleurs ne sortent pas très bien dans mon exemple car j’utilise une caméra infrarouge, et l’image est affichée à 270° – comme dit plus haut, meilleur rendu sur un smartphone – mais le flux fonctionne.

4. Aller plus loin

Contrôler Motion depuis partout

Pour le moment, nous pouvons voir le flux uniquement si nous sommes connecté au réseau local. En gros, on peut regarder ce qu’il se passe dans sa cuisine quand on est dans sa chambre. C’est sympa, mais ce qui nous intéresse c’est de voir ce qu’il se passe chez soi quand on est à l’autre bout du monde !

Pour cela, on va effectuer une redirection de port. En fait, on va même faire deux redirections de ports ! Renseignez-vous sur la création d’une passerelle NAT selon le modèle de votre box – cela se trouve dans les options du réseau.

Redirection de port 1 : voir le flux depuis partout

Le premier port forwarding consiste à transformer votre adresse IP publique (celle qui sort de la box) vers l’adresse IP privée de votre Pi au sein du réseau (mais-qu-est-ce-qu-il-me-raconte-là?).

Identifiez votre adresse IP publique en demandant poliment à votre canard préféré. Dans l’interface NAT, entrez cette adresse et précisez un port entre 1024 et 65535, par exemple 1234.

Faites correspondre cette adresse à l’adresse du flux de votre Pi, celle que vous utilisez pour consulter le flux au sein du réseau local. Dans l’interface NAT de votre box, vous aurez un truc comme ça :

IP publique

port

IP privée

port

XX.XX.XX.XX

1234

192.168.1.13

6789

De cette manière, quand Motion sera lancé, vous n’aurez qu’à visiter XX.XX.XX.XX:1234 (remplacez les XX par votre adresse IP publique !) et vous pourrez consulter le flux, depuis n’importe quel appareil.

Redirection de port 2 : contrôler le Pi depuis partout

De la même manière que le point précédent, nous allons créer une connexion SSH distante. Pour cela, on va choisir un autre port sur votre adresse IP publique (que pensez-vous de 4321 ?), mais le port de correspondance sur l’adresse privée sera nécessairement le port 22 – c’est le port réservé pour le protocole SSH.

Vous aurez :

IP publique

port

IP privée

port

XX.XX.XX.XX

4321

192.168.1.13

22

À l’aide d’un client SSH, comme PuTTY sur Windows ou JuiceSSH sur Android, configurez votre connexion :

Et voilà, vous pouvez allumer ou éteindre Motion et consulter le flux depuis un appareil tiers, depuis n’importe où dans le monde qui vous fournisse un accès à Internet !

Démarrer Motion en une ligne de commande

À chaque démarrage, il faudra penser à exécuter le modprobe avant de lancer Motion, c’est un peu contraignant.

Nous allons donc créer un fichier Bash pour non seulement exécuter le modprobe, mais en plus lancer Motion : d’une pierre deux coups.

Lancez le terminal et entrez

touch ma_camera
sudo nano ma_camera

Dans l’éditeur, entrez

#! /bin/bash/
modprobe bcm2835-v4l2
sudo motion

On enregistre (« Ctrl + x » > « y » > Entrée) et pour lancer le fichier, on entre dans le terminal – donc depuis le terminal du Pi ou depuis l’appareil distant, via la connexion SSH

sh ma_camera

Et c’est tout.

Vider le dossier /tmp/

Je le rappelle, le dossier /tmp/ n’est pas le trou du Tartare. Certains utilisateurs ont établit une routine avec crontab, afin de vider le dossier toutes les « x » minutes.

Pour ma part, comme je ne laisse pas le flux en continu, j’ai juste à supprimer le contenu du dossier, qui peut également se faire via le terminal de la connexion SSH

cd /tmp/motion/
sudo rm -rf *

Aller encore plus loin

Vous êtes tellement perspicace que vous avez noté que Motion, le logiciel que nous utilisons, fait penser à « slow motion », « stop motion », bref, à une idée de mouvement. C’est bien normal, puisque Motion a la capacité de détecter les mouvements !

Je ne me sers pas de cette option, mais en bidouillant deux-trois lignes de commandes, il est possible de recevoir un e-mail avec une photo prise par Motion lorsqu’il détecte un mouvement.

La vidéo-surveillance est prête

À présent, vous pouvez donc placer votre Raspberry Pi n’importe où chez vous, lancer Motion à distance et regarder ce qu’il se passe chez vous.