Utiliser différentes caméras avec motion
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 motionPour modifier le fichier de configuration de motion
sudo nano /etc/motion/motion.confPendant 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/motionDé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 onAutoriser 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 offAutoriser 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 offStopper 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 offStopper l’enregistrement video
Passez la variable ffmpeg_output_movies à off
# Use ffmpeg to encode movies in realtime (default: off)
ffmpeg_output_movies offVisualiser 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/video0Camé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_passeExemples :
- 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_passeRemarque : 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 onIl 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
A suivre ! :-)