Vidéosurveillance IP / Stream / TimeLapse multicaméras DIY

Vidéosurveillance IP / Stream / TimeLapse multicaméras DIY

L’objectif de ce tutoriel est de pouvoir réaliser la surveillance d’une pièce à distance avec l’aide d’un Raspberry Pi et plusieurs webcams. On pourra également se servir de ce projet comme plateforme de stream vidéo ou de timelapse vidéo. Le tout en format HD avec une latence minimale.

Ce tutoriel utilise le logiciel « Motion » disponible dans les packages officiel de Raspbian sous Raspberry Pi. Ce tutoriel a été réalisé sous la distribution Raspbian Stretch distribuée en novembre 2018. L’avantage de Motion, c’est qu’il utilise très peu de ressources CPU & GPU, ce qui nous permets de réaliser des transmissions de plusieurs flux vidéos.

  1. Rassembler l’ensemble du matériel : Raspberry Pi, Carte SD, alimentations, caméra… Pour les caméras USB, je vous conseille de passer par un hub USB possédant sa propre alimentation afin de ne pas consommer trop de courant sur les ports USB du Raspberry Pi (et ainsi vous pourrez brancher clavier, souris et clé USB s’il faut).
    Vérifiez bien la compatibilité des webcams USB avec votre Raspberry Pi ici : https://elinux.org/RPi_USB_Webcams
  2. Installez Raspbian sur la carte SD de votre Raspberry Pi. Ici, peu importe la version de Raspbian que vous prenez. La version Desktop sera plus confortable pour configurer le Raspberry Pi, car toute la configuration est assistée.
    Pour installer Raspbian, télécharger la distribution ici : https://www.raspberrypi.org/downloads/raspbian/
  3. Ensuite, installez l’image de Raspbian sur la carte SD grâce à l’utilitaire recommandé téléchargeable ici : https://etcher.io/
  4. On va maintenant configurer le Raspberry Pi. Pour plus de confort, activez le SSH pour accéder à distance à votre Raspberry Pi via l’utilitaire Putty. Si vous utilisez la caméra connectée au port caméra de la carte, veillez également activer le module caméra.
    Pour ce qui est de la version lite, vous serez en mode console, avec comme compte utilisateur "pi" et mot de passe "raspberry". Pour ce qui est de la configuration en version lite, il faudra passer par la commande "sudo raspi-config".
  5. Attribuez une IP fixe à votre Raspberry Pi. Pour se faire, soit vous définissez une IP en dur dans la configuration de Raspbian, soit vous effectuez la redirection depuis votre routeur. En mode console, vous pouvez vérifier votre IP avec la commande "ifconfig".
  6. Mettez à jour les paquets de Raspbian dans leurs dernières versions. Ouvrez un terminal, soit en SSH, soit directement sur le Raspberry Pi, et tapez :
    sudo apt-get update -y && sudo apt-get upgrade -y
  7. Ensuite, lancez l’installation de Motion avec la commande suivante :
    sudo apt-get install motion –y

    Je vous recommande aussi d’intégrer directement la caméra officielle du Raspberry Pi si vous l’utilisez grâce aux commandes :
    sudo modprobe bcm2835-v4l2
    echo "bcm2835-v4l2" | sudo tee -a /etc/modules
  8. Motion a la particularité de pouvoir réaliser des enregistrements photos ou vidéos à la demande ou sur événement. Nous allons au préalable créer un dossier pour accueillir les enregistrements :
    mkdir /home/pi/captures

    Ensuite, on va donner les droits d’utilisation de ce dossier à l’utilisateur « motion » :
    sudo chown motion:motion /home/pi/captures

    Nous allons également donner les droits à l’utilisateur « pi » pour que l’on puisse gérer nos fichiers.
    sudo chown pi:pi /home/pi/captures

    Et puis enfin, comme on n’est jamais trop prudent, on va effectuer une sauvegarde du fichier de configuration de motion avant de toucher à quoi que ce soit :
    sudo cp /etc/motion/motion.conf /etc/motion/motion.conf.back
  9. Bon, maintenant qu’on a fait notre copie de fichier paramètres, assurez-vous d’avoir raccordé l’ensemble des webcams et caméras.
    Nous allons configurer tout cela.

    Editions le fichier de configuration avec nano :
    sudo nano /etc/motion/motion.conf

    Ce fichier de configuration contient de nombreux paramètres. Voici les paramètres intéressants à régler :
    - daemon on : cela permet de laisser tourner motion en arrière-plan
    - videodevice /dev/video0 : laissez sur video0 pour le moment, il s’agit de votre première webcam reconnue sur le Raspberry Pi au démarrage.
    - width 1280 : ici 1280 correspond à 1280 pixels pour la largeur d’image, ce qui correspond à une webcam 720p ou à une caméra Raspberry Pi officielle en 720p. Ajustez cette valeur à votre caméra principale.
    - height 720 : ici 720 correspond à 720 pixels pour la hauteur d’image, ce qui correspond à une webcam 720p ou à une caméra Raspberry Pi officielle en 720p. Ajustez cette valeur à votre caméra principale.
    - framerate 2 : corresponds au nombre d’images par secondes enregistrés / buffurisé localement. Si vous faites du live stream ou de l’enregistrement live, vous pouvez augmenter cette valeur (attention, en cas d’enregistrement, cela prendre de la place sur votre carte SD). Pour ma part, comme je ne fais que du stream, j’ai passé cette valeur à 24.
    - brightness, contrast, sauration : pour ajuster les paramètres de luminosité, contraste et saturation de votre image (à voir selon les tests effectués)
    - threshold 1500 : valeur de détection de mouvement. Si un mouvement est détecté, il y aura enregistrement. Ici, il y a enregistrement si plus de 1500 pixels diffèrent d’une image à l’autre. Si vous ne souhaitez aucune détection de mouvement et aucun enregistrement (live stream), passez cette valeur à 0.
    - minimum_motion_frames 1 : définis le nombre d’images différentes minimum qu’il faut pour déclencher un enregistrement. Passez cette valeur à 0 si vous ne souhaitez pas d’enregistrement (live stream).
    - event_gap 60 : temps d’enregistrement (en sec) en cas de détection de mouvement. Passez cette valeur à -1 pour ne pas avoir d’enregistrement.
    - quality 75 : définit la qualité d’image de vos enregistrements photos
    - ffmpeg_output_movies on : permet l’enregistrement de vidéo à l’enregistrement
    - ffmpeg_timelapse 0 : lorsque cette valeur est à 0, aucun time lapse. Sinon l’enregistrement en time-lapse est activé. La valeur correspond au temps en seconde entre chaque photo.
    - Toute la partie « Text Display » du fichier si vous voulez ajouter un texte spécifique dans chaque coin, lors d’un événement, etc…
    - target_dir /home/pi/captures : pour définir le dossier des enregistrements préalablement créé.
    - stream_port 8081 : le port du stream vidéo
    - stream_quality 50 : la qualité du stream (plus c’est grand, plus la vidéo sera lourde à charger)
    - stream_maxrate 2 : corresponds au nombre d’images par seconde demandé. Ici la valeur doit être inférieure ou égale au framerate donné plus haut (un nombre supérieur ne servirait à rien). Pour du live stream, j’ai placé cette valeur à 24.
    - stream_localhost off : permets la visualisation du flux vidéo en dehors du réseau local.
    - stream_auth_method 0 : passez cette valeur à 2 pour protéger l’accès au flux vidéo avec un mot de passe.
    - stream_authentication username:password : si la valeur précédente est à 1 ou 2, vous définissez le login (username) et le mot de passe (password) ici. N’oubliez pas d’enlever le point-virgule en début de ligne.

    Une fois les paramètres réglés, sauvegardez avec ctrl+o et quittez avec ctrl+x.

    Ayez bien en tête que plus les images à transmettre ou enregistrer seront lourdes, moins votre Raspberry Pi sera performant. Pour ma part, je transmets sans soucis 3 flux 720p sur mon réseau local à 24 images par secondes. Le résultat est fluide. Je ne procède à aucun enregistrement.
  10. Maintenant qu’on a configuré Motion avec une caméra, il est temps de tester ! Pour se faire, démarrez motion sur votre Raspberry Pi :
    sudo motion

    Rendez-vous ensuite sur votre navigateur web et entrez l’IP de votre Raspberry Pi suivi du port préalablement défini dans « stream_port » (par défaut 8081).

    Si vous avez protégé le flux vidéo, entrez le nom d’utilisateur et le mot de passe que vous avez défini dans le fichier de configuration.

    Tadaaa !!
  11. Si votre Raspberry Pi ne reconnaît pas la caméra (image noire ou grise), redémarrez votre Raspberry Pi (sudo reboot). Si cela ne fonctionne toujours pas, c’est que votre webcam n’est pas compatible.
  12. Pour que motion démarre tout seul à chaque démarrage, on va ajouter une tâche Cron au superutilisateur (à faire sur le Raspberry et non en SSH). Pour cela, on édite le fichier crontab :
    sudo crontab –e

    Et on ajoute cette ligne à la fin :
    @reboot motion >/dev/null 2>&1

    On sauvegarde et on quitte avec la suite ctrl+o puis ctrl+x.

    Si vous utilisez qu’une seule caméra, vous pouvez vous arrêter là pour le tutoriel.
  13. MULTICAMERA :

    Motion est compatible multicaméra. Et ça fonctionne très bien. Il y a un truc simple à comprendre : notre fichier motion.conf contient les paramètres par défauts de nos caméras. Nous allons créer des fichiers indépendants pour chacune de nos caméras qui vont venir écraser ces paramètres au cas par cas. Pour 2 caméras utilisant les mêmes paramètres, on créera 2 fichiers. Le premier :
    sudo nano /etc/motion/camera1.conf

    Qui contiendra ces paramètres :
    videodevice /dev/video0
    stream_port 8081
    text_left camera_principale

    On sauvegarde avec ctrl+o puis on quitte avec ctrl+x. Et on crée le second fichier :
    sudo nano /etc/motion/camera2.conf

    Qui contient cette fois-ci un second flux sur un autre port :
    videodevice /dev/video1
    stream_port 8082
    text_left camera_secondaire

    On sauvegarde une nouvelle fois avec ctrl+o et on quitte avec ctrl+x.

    Admettons que nous avons une 3ème caméra avec une définition plus faible. Cette fois-ci on écrase la configuration par défaut (720p) avec les nouvelles valeurs de résolution.
    sudo nano /etc/motion/camera3.conf

    Puis on écrit dans le fichier :
    videodevice /dev/video2
    width 640
    height 480
    stream_port 8083
    text_left camera_3

    Et on termine avec le combo ctrl+o / ctrl+x !

    Vous pouvez ainsi recommencer avec autant de caméras que vous souhaitez !
  14. Ensuite, pour faire fonctionner le tout, on va modifier une dernière fois le fichier principal de configuration pour déclarer toutes nos caméras. Cela se situe tout à la fin du fichier. Il suffit de retirer le point-virgule devant les déclarations de fichiers de configuration de caméra.
  15. Enfin, pour terminer, exécutez les commandes suivantes :
    sudo service motion restart
    sudo motion

    Ensuite, vous pouvez accéder à vos différentes caméras en live stream depuis votre Raspberry Pi ! Si vous utilisez la détection sur vos caméras (ou uniquement sur certaines), vous pouvez en faire de véritables caméras de surveillance !

    Libre à vous de déclarer ces URL dans des interfaces domotiques (Jeedom, Domoticz) ou comme moi sur des serveurs d’impression 3D (serveur Duet3D, Octoprint et Astroprint... pour en savoir +, rdv sur https://bentek.fr)
Réalisé par
Posté le
Univers
IoT
Temps de fabrication
2h
Niveau de difficulté
Avancé
Matériel(s)
1
Raspberry Pi 3 model B+ (cde : 1668026)
1
Alimentation 5V pour Raspberry Pi (3A) (cde : 1429555)
1
Belkin hub 4 ports USB2.0 + alim (cde : 972520)
1
Module-caméra Camera V2 8MP IR (cde : 1455913)
2
HD WEBCAM LOGITECH B525 (cde : 791860)
1
SAMSUNG carte MicroSDHC EVO+ 32Go CL10 (cde : 1547259)

Aucun commentaire. Soyez le premier à en écrire un !

Vous devez être connecté pour laisser un commentaire.