Raspberry Pi et vidéo-surveillance avec Motion !

Envie de garder un oeil sur la cuisson de vos pâtes ? Surveiller votre chat où même votre copine ? Alors j’ai pour vous LA solution : Motion !

Tout d’abord, après avoir branché votre webcam usb à votre raspi, il faut vérifier si celle-ci est bien reconnue, avec la commande « lsusb », on doit obtenir une de ces lignes :

Bus 001 Device 004: ID 046d:0825 Logitech, Inc. Webcam C270

On installe ensuite motion :

sudo apt-get install motion

On part directement dans le fichier de configuration de motion, là où tout se déroule :

sudo nano /etc/motion/motion.conf

Voici les lignes de configuration les plus importantes :

ATTENTION : Dans ce tuto, j’ai pris la liberté de bien distinguer le côté ENREGISTREMENT (indice [ENREG]) des images sur le raspberry pi et le côté STREAMING (indice [STREAM]) des images sur le mini serveur web fournit avec motion. Soyez donc attentifs quand le détail d’une configuration liée aux images est indiqué.

  • daemon off

On passe cette ligne à « on » si on souhaite pouvoir lancer motion en tant que daemon, et pouvoir ainsi libérer un terminal. Dans mon cas je l’ai passé à « off » car comme cela je peux voir ce qu’il se passe en direct dans mon terminal.

  • v4l2_palette 6

Sert à configurer le type de palette que l’on souhaite utiliser. Chaque webcam utilise une palette spécifique, il faut donc choisir la bonne palette dans le fichier de configuration. La palette utilisée par défaut sera la 8 (YU12).

  • width 640height 480

Indique la hauteur et la largeur des images enregistrées et streamées.

  • framerate 50 [ENREG]

Ce chiffre montre le nombre d’images enregistrées par seconde. Chiffre élevé = RAM consommée.

  • threshold 1500 [ENREG]

Chiffre qui indique le nombre de pixels détectés qui changent pour lancer l’enregistrement des images et/ou de la vidéo.

  • output_normal off

Ligne par défaut à « on ». Il suffit de la passer à « off » si on ne souhaite pas utiliser l’enregistrement mais uniquement le streaming web.

  • quality 75 [ENREG]

Pourcentage de qualité des images enregistrées.

  • ffmpeg_cap_new off [ENREG]

Ligne par défaut à « on ». Il suffit de la passer à off si on ne souhaite pas que motion créé de fichier vidéo regroupant toutes les images enregistrées.

  • ffmpeg_video_codec mpeg4 [ENREG]

Ligne par défaut sur « swf ». Sert à spécifier le codec de sortie vidéo pour la création du fichier vidéo. J’ai personnellement mis sur mpeg4 afin d’obtenir un .avi lorsque j’active l’enregistrement.

  • target_dir /media/SAVE/Autre/CAM [ENREG]

Indique le chemin d’enregistrement des images et des vidéos. Dans mon cas par exemple, les fichiers sont envoyés sur mon disque dur externe, ce qui permet d’enregistrement beaucoup de données.

  • webcam_port 8081

Le port par defaut du mini serveur web.

  • webcam_quality 50 [STREAM]

Pourcentage de qualité des images streamées.

  • webcam_maxrate 5 [STREAM]

Ce chiffre montre le nombre d’images streamées par seconde. Chiffre élevé = RAM consommée.

  • webcam_localhost off

Si le paramètres est passé à « on », on autorise l’accès uniquement local au serveur de stream.

Voilà, une fois cela fait, il ne vous reste plus qu’à lancer motion :

sudo motion

N’oubliez pas le « sudo », sinon motion va lancer les modifications par défaut du motion.conf, et donc toutes vos modifications ne seront pas prises en compte !

Dans le cas où la palette 8 n’est pas compatible, on vous affiche une liste de palette compatible, il vous suffit d’aller modifier la configuration de la palette dans votre motion.conf.

Si tout est ok, vous obtenez quelque-chose de similaire à ceci :

On va donc sur notre navigateur, à partir d’un autre ordi (pour bénéficier de la fluidité hors-raspberry), on tape 192.168.X.X:8081 (l’adresse locale de votre rasperry) et on assiste à la magie :

Dans mon cas, j’ai désactivé la capture et l’enregistrement des fichiers images et vidéos sur mon disque dur. Mais si vous les avez activés, il ne vous reste plus qu’à passer devant votre webcam pour constater l’affichage de nombreuses lignes d’enregistrements d’images et de vidéos !

Voilà, pendant que motion tourne, vous constatez que les ressources utilisées par votre Raspberry sont au maximum, c’est pour cela que je vous conseille de privilégier d’utilisation totale d’un raspberry pour motion, si comme moi vous vous en servez vous de nombreux autres services !

Vous aimerez aussi...

  • Emeric

    Je l’ai mis la semaine dernière pour ma part.

    Ca fonctionne bien, mais il faut que je mette un petit script pour activer désactiver Motion à l’ouverture de la page.

    Ensuite la détection de mouvement … enfin un jour …

  • eyd3n

    :]

    Le seul défaut de motion réside dans le fait que les anciennes webcam n’arrivent pas à suivre les palettes proposées par défaut. Pour cela il faut patcher et recompiler, choses que j’ai jamais réussit à faire sans erreurs.

    • François Gilbert

      Bonsoir,

      Je suppose que c’est fichu pour ma pomme alors … 🙁

      Voici ce que j’obtiens en lançant motion :

      [0] Processing thread 0 - config file /etc/motion/motion.conf

      [0] Motion 3.2.12 Started

      [0] ffmpeg LIBAVCODEC_BUILD 3482368 LIBAVFORMAT_BUILD 3478785

      [0] Thread 1 is from /etc/motion/motion.conf

      [0] motion-httpd/3.2.12 running, accepting connections

      [0] motion-httpd: waiting for data on port TCP 8080

      [1] Thread 1 started

      [1] cap.driver: « spca561 »

      [1] cap.card: « Camera »

      [1] cap.bus_info: « usb-bcm2708_usb-1.2 »

      [1] cap.capabilities=0x85000001

      [1] - VIDEO_CAPTURE

      [1] - READWRITE

      [1] - STREAMING

      [1] Config palette index 0 (S910) doesn’t work.

      [1] Supported palettes:

      [1] 0: S561 (S561)

      [1] 1: GBRG (GBRG)

      [1] Unable to find a compatible palette format.

      [1] ioctl (VIDIOCGCAP): Inappropriate ioctl for device

      [1] Could not fetch initial image from camera

      [1] Motion continues using width and height from config file(s)

      J’imagine que ma webcam ne supporte aucune palette..

      • eyd3n

        Aha, avant ma C270 j’ai eu ce problème, c’est pour ça que ce tuto a pris deux semaines de retard.

        Une recherche google avec « linux motion S561/GBRG » te mènera vers des patchs issus du site officiel. Pour ma part, je n’ai jamais reussi à patcher/compiler correctement une installation motion modifiée. Après si tu es (très) à l’aise avec linux, j’espère que ce tu trouveras pourra t’aider !

  • François Gilbert

    Bon, j’ai vu des patchs à appliquer aux .c mais j’ai pas trop envie de me casser la tête :p

    Du coup j’ai trouvé un autre petit logiciel, fswebcam, qui lui fonctionne parfaitement avec ma vieille logitech !

    Je l’utilise ainsi :

    fswebcam -r 800×600 -d /dev/video0 /var/www/webcam/images/webcam.jpg -l 5

    Et dans /var/www/webcam, j’ai un fichier index.html qui contient ceci :

    Et voilà ! 🙂 Ma webcam prend une photo toutes les 5 secondes et ma page web est actualisée toutes les 5 secondes aussi.

    J’essaye d’enregistrer ma commande en tant que service ( pour pouvoir faire par exemple un « service webcamstream start », qui va lancer la commande fswebcam ci-dessus). Mais je galère un peu 🙂

    Ou bien alors utiliser cron, mais l’idée est de pouvoir désactiver/activer la commande à la volée. S’il y a une autre manière de faire, je suis toute ouïe 🙂

    • Je vends ma came 😀

      http://wp.me/p2W3Jj-iS

      Ca peut éventuellement t’aider à faire un service

    • eyd3n

      Excellent ! Bien joué pour le service et la page web qui s’actualise toutes les 5 secondes ! Au final tu as recréé la partie web de motion avec fswebcam et apache :]

  • Jean

    J’ai fait la même configuration avec la même caméra mais j’ai le résultat suivant:
    [0] Processing thread 0 - config file /etc/motion/motion.conf
    [0] Motion 3.2.12 Started
    [0] ffmpeg LIBAVCODEC_BUILD 3482368 LIBAVFORMAT_BUILD 3478785
    [0] Thread 1 is from /etc/motion/motion.conf
    [0] Webcam port number 8080 for thread 1 conflicts with the control port
    [0] Webcam feature for thread 1 is disabled.
    [0] httpd bind(): Address already in use
    [1] Thread 1 started
    [0] httpd thread exit
    [1] cap.driver: « uvcvideo »
    [1] cap.card: « UVC Camera (046d:0825) »
    [1] cap.bus_info: « usb-bcm2708_usb-1.2 »
    [1] cap.capabilities=0x84000001
    [1] - VIDEO_CAPTURE
    [1] - STREAMING
    [1] Error selecting input 0 VIDIOC_S_INPUT: Device or resource busy
    [1] ioctl (VIDIOCGCAP): Inappropriate ioctl for device
    [1] Could not fetch initial image from camera
    [1] Motion continues using width and height from config file(s)
    [1] Resizing pre_capture buffer to 1 items
    [1] Retrying until successful connection with camera
    [1] cap.driver: « uvcvideo »
    [1] cap.card: « UVC Camera (046d:0825) »
    [1] cap.bus_info: « usb-bcm2708_usb-1.2 »
    [1] cap.capabilities=0x84000001
    [1] - VIDEO_CAPTURE
    [1] - STREAMING
    [1] Error selecting input 0 VIDIOC_S_INPUT: Device or resource busy
    [1] ioctl (VIDIOCGCAP): Inappropriate ioctl for device

    Et je n’ai pas de vidéo sur l’adresse ip du raspberry suivie du port…. 🙁
    Pouvez vous m’aider ?

    • Le port 8080 est déjà utilisé par un autre service ou serveur web :
      [0] Webcam port number 8080 for thread 1 conflicts with the control port
      [0] Webcam feature for thread 1 is disabled.
      [0] httpd bind(): Address already in use

      Il doit y avoir une erreur dans la config

  • BaloumbA

    Bonjour,
    étant tres intéressé de monter ca chez moi , je voudrais savoir si la vidéo (images)sur le navigateur peuvent etre misent en ligne (utiliser l’adresse ip internet au lieu de celle local)
    merci

    • Salut, si les images sont visibles en local avec un serveur web, il suffit de se creer un compte chez no-dns et configurer sa box. Il y a des tutos sur ce site pour inadyn et nginx. Reste à faire les pages qui vont afficher les images

  • Mat

    Super tuto… impeccable pour mettre le pied à l’étrier.
    J’ai juste un truc ou deux truc qui me chagrinent.
    - je n’ai que des images qui sont sauvegardées lors de la détection de mouvement et pas de vidéo
    - j’ai une décalage temporel assez conséquent entre la réalité et l’image retranscrite en streaming.

    Pour info j’utilise une logitech CS270.

    Merci pour votre aide.

  • a

    404 sur les deux images hébergées sur screencloud.

  • Pingback: Faire de la vidéosurveillance avec un serveur NAS Synology, un raspberry PI et une vieille webcam | Dev' in Alsace()

Handpicked links

Mise en cache objet de 2074/2313 objets utilisant disk Mise en cache utilisant disk: enhanced Mise en cache de base de données 19/76 requêtes dans 0.065 secondes utilisant disk Served from: pihomeserver.fr @ 2017-08-12 14:01:29 by W3 Total Cache -->