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

http://RaspberryPi_IP:8081

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...