L’idée de cet article est de se souvenir (1) comment configurer le logiciel motion pour réaliser une détection de mouvements avec différents types de caméras.
(1) Suite à l’atelier robotique organisé par l’association CaLviX le 14/03/2017

Nous utilisons :

  • un Raspberry Pi 3 sous Raspbian Jessie Lite (sans interface graphique).
  • une webcam USB Logitech QuickCam E2500 (sortie d’un fond de tiroir)
  • une caméra IP (réseau) FOSCAM FI8918W (ethernet + WiFi)
  • une caméra IP (réseau) D-Link DCS-910 (ethernet)
  • une Pi Caméra (plus tard)
  • le logiciel motion

motion

Comme nous n’utlisons pas d’interface graphique sur notre Pi, nous faisons tout à travers SSH. Installation

sudo apt-get install motion

Pour modifier le fichier de configuration de motion

sudo nano /etc/motion/motion.conf

Pendant toute la période de mise au point de la configuration nous allons :

  • désactiver le mode deamon.
  • autoriser l’accés au flux vidéo sur le réseau (local ici)
  • autoriser l’accés à la page de control sur le réseau (local ici)
  • stopper l’enregistrement des images (pour éviter de saturer le disque)
  • stopper l’enregistrement des vidéos (pour éviter de saturer le disque)

Remarques :

  • Si motion est lancé en mode utilisateur (utilisateur pi ici), les images et vidéos sont enregistrées dans le repertoire courant.
  • Si motion est lancé en mode super utilisateur (root), les images et vidéos sont enregistrées dans le repertoire spécifié par la variable target_dir
# Target base directory for pictures and films
# Recommended to use absolute path. (Default: current working directory)
target_dir /var/lib/motion

Désactiver le mode deamon

Commentez la ligne daemon on en plaçant un diese devant.

# Start in daemon (background) mode and release terminal (default: off)
# daemon on

Autoriser l’accés au flux vidéo sur le réseau

Passez la variable stream_localhost à off pour pouvoir visualiser le résultat sur un autre PC (rappel, nous utilisons le Raspberry comme serveur sans interface graphique)

# Restrict stream connections to localhost only (default: on)
stream_localhost off

Autoriser l’accés à la page de control sur le réseau

Passez la variable webcontrol_localhost à off

# Restrict control connections to localhost only (default: on)
webcontrol_localhost off

Stopper l’enregistrement des images

Passez la variable output_pictures à off

# Output 'normal' pictures when motion is detected (default: on)
# Valid values: on, off, first, best, center
# When set to 'first', only the first picture of an event is saved.
# Picture with most motion of an event is saved when set to 'best'.
# Picture with motion nearest center of picture is saved when set to 'center'.
# Can be used as preview shot for the corresponding movie.
output_pictures off

Stopper l’enregistrement video

Passez la variable ffmpeg_output_movies à off

# Use ffmpeg to encode movies in realtime (default: off)
ffmpeg_output_movies off

Visualiser le flux vidéo

Tappez simplement l’adresse IP de votre raspberry dans la barre d’adresse de votre navigateur en précisant le port.
Exemple : http://192.168.0.20:8081 ou http://nom_de_machine.local:8081

Accéder à la page de réglage

Comme pour visualiser le flux vidéo mais en utilisant le port 8080. Exemple : http://192.168.0.20:8080 ou http://nom_de_machine.local:8080

Webcam USB

Connectez votre webcam et vérifier qu’elle est bien détectée avec la commande lsusb et ensuite ls /dev/ | grep video pour constater que le périphérique est bien pris en charge.

$ lsusb  
...  
Bus 001 Device 006: ID 046d:089d Logitech, Inc. QuickCam E2500 series  
...  
$ ls /dev/ | grep video  
video0  

Dans le fichier /etc/motion/motion.conf vous devez trouver cette ligne videodevice /dev/video0.

# Videodevice to be used for capturing  (default /dev/video0)
# for FreeBSD default is /dev/bktr0
videodevice /dev/video0

Caméra IP

Commentez la ligne videodevice /dev/video0 en plaçant un diese au début. Indiquez l’adresse de votre caméra IP à l’aide de la variable netcam_url .
Indiquez aussi le login et le mot de passe nécessaire pour accéder au flux vidéo de la caméra IP à l’aide de la variable netcam_userpass

# URL to use if you are using a network camera, size will be autodetected (incl http:// ftp:// mjpg:// rstp:// or file:///)
# Must be a URL that returns single jpeg pictures or a raw mjpeg stream. Default: Not defined
netcam_url http://192.168.0.58/VIDEO.CGI?user=votre_login&pwd=votre_mot_de_passe

# Username and password for network camera (only if required). Default: not defined
# Syntax is user:password
netcam_userpass votre_login:votre_mot_de_passe

Exemples :

  • Caméra D-Link DCS-910
netcam_url http://192.168.0.58/VIDEO.CGI?user=votre_login&pwd=votre_mot_de_passe
  • Caméra FOSCAM FI8918W
netcam_url http://192.168.0.50/videostream.cgi?user=votre_login&pwd=votre_mot_de_passe

Remarque : Les logins et mots de passe sont propres à chaque caméra IP de même que leurs adresses IP qui dépendent de votre réseau.

Détection de mouvements

Pour voir ce que motion détecte mettez la variable locate_motion_mode à on, la zone sera matérialisée par un rectangle blanc (par défaut).

# Locate and draw a box around the moving object.
# Valid values: on, off, preview (default: off)
# Set to 'preview' will only draw a box in preview_shot pictures.
locate_motion_mode on

Il est possible aussi de lancer une commande à partir d’une détection grace à la variable on_motion_detected

# Command to be executed when a motion frame is detected (default: none)
on_motion_detected echo "Il est là !"

Ici l’on affiche simplement dans la console le message Il est là ! quand un mouvement est détecté.
Mais nous pourrions très bien lancer un le script “toto.sh” comme ceci :

on_motion_detected /home/vous/motion/toto.sh

En travaux

A suivre ! :-)