Vidéo surveillance sous Raspberry Pi
Suite à l’article Video suveillance, ci-dessous mes essais de vidéo surveillance à base de Raspberry Pi :)
Installation

Tout d’abord s’assurer que le système est à jour :
$ sudo aptitude update
$ sudo aptitude upgrade
Et vérifier que le module caméra est bien actif :
$ sudo raspi-config
puis menu Camera.
Tester avec les commandes :
– raspivid
pour captuer des vidéos (h264, yuv420p, 1920x1080, 25fps),
– et raspistill
pour captuer des images (JPEG 2592x1944).
Ex. :
$ raspvid -w 640 -h 480 -o video.h264 -fps 10
$ mplager -fps 10 video.h264
$ raspistill -o image.jpg
$ display image.jpg
Il faut ensuite installer motion, malheureusement la version actuelle ne supporte pas le module caméra du Raspberry Pi ; il va donc falloir télécharger et installer une version spécialement créée pour :
$ sudo apt-get install -y libjpeg62 libjpeg62-dev libavformat53 libavformat-dev libavcodec53 libavcodec-dev libavutil51 libavutil-dev libc6-dev zlib1g-dev libmysqlclient18 libmysqlclient-dev libpq5 libpq-dev
$ wget https://www.dropbox.com/s/xdfcxm5hu71s97d/motion-mmal.tar.gz
$ tar zxvf motion-mmal.tar.gz
$ sudo mv motion /usr/bin/motion
$ sudo mv motion-mmalcam.conf /etc/motion.conf
$ sudo chmod 664 /etc/motion.conf
$ sudo chmod 755 /usr/bin/motion
$ sudo touch /tmp/motion.log
$ sudo chmod 775 /tmp/motion.log
Configuration
Il faut maintenant configurer motion en accord avec mon précédent article Video suveillance.
Le rappel des principaux changements sont les suivants :
$ sudo vim /etc/motion.conf
# Pour que motion soit toujours en cours d'exécution (en arrière plan)
daemon on
# Emplacement du fichier journal
logfile /tmp/motion.log
# Pour un système de vidéo surveillance de bonne qualité la définition est fixée à 1024 x 576 pixels et on peut se contenter de 2 images par seconde
width 1024
height 576
framerate 2
# Enregistrement de 2 images avant et apres qu'un mouvement ait été détécté
pre_capture 2
post_capture 2
# Afficher une boite autour de la zone où un mouvement a été détecté
locate_motion_mode on
locate_motion_style box
# On limite la durée des vidéos à 10 minutes
max_mpeg_time 600
# Format d'enregistrement lus par tous les lecteurs
ffmpeg_video_codec msmpeg4
# Répertoire de stockage des images et vidéos
target_dir /home/pi/motion
Rq. : Pour activer motion au démarrage du Raspberry Pi, il faut mettre à "yes" la variable start_motion_daemon dans le fichier /etc/default/motion
, sinon le placer dans /etc/rc.local
.
Après le redémarrage, la LED rouge de la caméra devrait être allumée, indiquant que la caméra est prête pour détecter tout mouvement.

Info : Les photos et vidéos des enregistrements seront stockés dans le répertoire /home/pi/motion/
.
Streaming vidéo
Pour accéder au flux vidéo en direct de la caméra depuis n’importe quel navigateur :
# Activer le flux vidéo en direct (sinon, seul localhost serait autorisé à accéder à la diffusion en direct)
stream_localhost off
stream_port 8081
# Pour protéger le flux vidéo le flux avec un login et un mot de passe
stream_auth_method 2
stream_authentication LOGIN:PASSWORD
Enregistrement / sauvegarde
La carte SD du Raspberry Pi a une taille limitée, il faut donc prévoire d’enregistrer ou d’envoyer les photos / vidéos sur une autre machine...
Soit via un FTP et/ou via Mail...
# Quand un mouvement est détecté on envoi un email
on_event_start sendemail -f motion@raspberrypi.fr -t klnavarro@gmail.com -u "Motion detected on camera %t" -m "Movement has been detected on: %Y-%m-%d %H:%M. The pictures have been uploaded to your FTP account." -s smtp.sfr.fr
# On upload les photos prises...
on_picture_save wput --basename /tmp/motion/ %f ftp://klnavarro:xxxxxxxx@ftpperso.free.fr/motion/
# Ainsi que les vidéos...
on_movie_start sendemail -f motion@compaq.fr -t klnavarro@gmail.com -u "Motion registered on camera %t" -m "Movement has been registered on: %Y-%m-%d %H:%M. The movie has been attached to this mail." -s smtp.sfr.fr -a %f
Montage de la caméra
Pour cela nous l’idée est d’utiliser une caméra factice et d’y intégrer notre RaspberryPi :

Il nous faudra de plus bien vérifier que l’alimentation soit au sec et peut-être prévoire une connection Wifi vers sa bidulebox...