Mettre en place avec le Raspberry et une webcam compatible un petit serveur de détection et de surveillance. Le serveur enregistrera une video des que un mouvement sera détecté et transférera la video sur un serveur FTP. Le service sera lancé et arrêté par le gestionnaire de tâche plannifié (cron) suivant le besoin.
2.2 Configuration du service motion
2.6 Script d'effacement FTP distant
2.7 Désactiver le module son de la webcam
1. Installation
L'installation a été testée sur 2 distributions raspbian et raspbmc.
1.1 Package motion
Motion est un logiciel de monotoring de signal video de camera. Il est capable de détecter si une partie important de l'image à changé . Donc de détecter un mouvement et d'enregistrer ensuite soit une image, soit une vidéo.
sudo apt-get install motion sudo apt-get install ffmpeg
Le fichier de paramétrage principal se trouve ici : /etc/motion/motion.conf
1.2 Installation Wput
Wput est un client d'envoi de fichier sur le réseau via FTP en ligne de commande (+Infos Wikipedia)
Installation :
sudo apt-get install wput
Le client sera utile pour le transfert des fichiers videos produits par motion vers un site FTP extérieur.
2. Paramétrages
2.1 Cron
Crontab (+infos sur Wikipedia) est un utilitaire qui permet de programmer la liste des tâches qui doivent être lancé par le programme cron.
Cron va permettre de lancer différents programmes à des heures données et périodiquement.
Pour lancer le service motion j'utilise la commande suivante :
sudo /usr/bin/motion
Pour arrêter le service j'utilise l'interface web de commande du service limité au localhost (comme recommandé par le concepteur de motion ici )
lwp-request 127.0.0.1:8080/0/action/quit
L'utilisation de la commande lwp-request pour interagir avec la page web du service. (Installation du package libwww-perl)
Accès en édition via crontab à la liste des tâches de l'utilisateur root.
sudo crontab -e
# Lancement à 8h15 du lundi au Vendredi(1-5) du programme motion 15 08 * * 1-5 sudo /usr/bin/motion# Lancement à 0h00 du lundi au dimanche(1-7) du programme motion et du script ftp_efface.sh 00 00 * * 1-7 sudo /usr/bin/motion | sudo ftp_efface.sh # Lancement à 17h30 du lundi au Vendredi(1-5) de la commande d'arrêt du service motion # et de la suppression des fichiers se trouvant dans le répertoire /tmp/motion 30 17 * * 1-5 lwp-request 127.0.0.1:8080/0/action/quit | sudo rm /tmp/motion/*# Lancement à 07h00 du lundi au Dimanche(1-7) de la commande d'arrêt du service motion # et de la suppression des fichiers se trouvant dans le répertoire /tmp/motion00 07 * * 1-7 lwp-request 127.0.0.1:8080/0/action/quit | sudo rm /tmp/motion/*
Après modification pour recharger la liste des taches il faut exécuter la commande suivante :
sudo /etc/init.d/cron reload
Cela permet de prendre en compte les changements
2.2 Configuration du service Motion
Voici quelques paramètres de ma configration qui fonctionne plutôt correctement
process_id_file /var/run/motion.pid
daemon on # permet de lancer motion en tant que service en tâche de fond.
width 352 # largeur de la résolution
height 288 # hauteur de la résolution
framerate 2 # capture 2 frames par seconde
output_normal off #désactivation de la capture d'image
ffmpeg_cap_motion off # désactive la capture video des changements des pixels.
ffmpeg_timelapse 5 # 5 secondes d'enregistrement à chaque détection
ffmpeg_timelapse_mode daily # découpe les fichiers videos par jour
ffmpeg_video_codec swf # défini le format de la video produite, ici swf
threshold 4000 # nombre de pixel qui doivent changer pour valider une détection de mouvement
control_port 8080 # permet de passer des commandes au service motion via une interface HTML ( ici il est utile pour l'utilisation de l'arrêt du service via cron)
on_movie_end wput -B -R ftp://loginftp:modedepasseFTP@serveurftp.fr/Sauvegarde/%f # transfert le fichier video sur le serveur FTP.
max_mpeg_time 60 # toute les combiens de seconde un nouveau fichier video est crée quand il y a une détection de mouvement
pre_capture 2 # nombre de capture d'image pris en compte avant la détection
post_capture 2 # nombre de capture d'image pris en compte après la détection
D'autres paramètres en cours de validaiton :
roundrobin_frames 25
ffmpeg_bps 400000
2.6 Script d'effacement FTP distant
L'objectif du script et d'effacer les anciens fichiers videos ou photos présent sur le serveur FTP distant pour éviter d'accumuler des fichiers intule :
#!/bin/bash USERNAME="login" PASSWORD="mdp" SERVER="serveurftp:21" BACKUPDIR="Repertoire/video/tmp/motion" EXTFILETODEL="*.swf" lftp -e "mrm /${BACKUPDIR}/${EXTFILETODEL}; bye" -u $USERNAME,$PASSWORD $SERVER
Le script nécessite l'installation du package lftp.
2.7 Correction Bug de la camera
Problème de plantage de la webcam au démarrage ou pendant l'utilisation
Problème visible dans /var/log/syslog
Jun 26 20:19:50 raspbmc motion: [1] Error selecting input 0 VIDIOC_S_INPUT: Device or resource busy Jun 26 20:19:50 raspbmc motion: [1] ioctl (VIDIOCGCAP): Inappropriate ioctl for device
Pour corriger le problème il est nécessaire d'effectuer une modificaiton dans le fichier :
/etc/modprobe.d/options
rajout de :
options uvcvideo nodrop=1 timeout=5000 quirks=0x80
Source : http://www.raspberrypi.org/phpBB3/viewtopic.php?f=37&t=11745
2.8 Désactiver le module son de la webcam (inutile et consomme de l'énergie)
Recherche un fichier commençant par /etc/modprobe.d/blacklist
Puis rajouter la ligne suivante au fichier en question
blacklist snd_usb_audio
Pour plus d'infos sur les modules et paramétrages des modules : http://doc.ubuntu-fr.org/tutoriel/tout_savoir_sur_les_modules_linux
Pour d'autres articles concernant le Raspberry voir ici