User Tools

Site Tools


Sidebar

documentation:raspberry_pi:camera_de_surveillance:3_-_motion

Motion

Motion est le logiciel qui va nous permettre de détecter les intrusions via la caméra du Raspeberry.

Vous pourrez trouver une explication plus détaillée sur la version anglaise de wikipedia.

Installation

$ sudo apt-get install motion

Il faut ensuite charger les modules permettant d'intéragir avec la caméra.

$ sudo modprobe bcm2835-v4l2

Puis faire en sorte qu'ils se chargent à chaque reboot du Raspberry :

$ sudo -s
$ echo bcm2835-v4l2 >> /etc/modules
$ exit

Configuration

La première étape consiste à dire au système de lancer Motion au démarrage. Pour celà nous allons éditer le fichier /etc/default/motion et mettre start_motion à yes.

$ sudo nano -a /etc/default/motion
start_motion_daemon=yes

Nous allons ensuite modifier le ficher /etc/motion/motion.conf. Voici la liste des paramètres qu'il est nécessaire de changer :

# Permet de lancer motion en tant que démon
daemon on

# On sauvegarde les logs dans /tmp afin que ça ne prenne pas de place après un reboot
logfile /tmp/motion.log

# Permet de retourner l'image de la caméra, à ajuster selon vos besoins (0, 90, 180 ou 270)
rotate 0

# Taille de l'image capturée
width 1024
height 768

# Nombre d'image capturée par secondes (à adapter en fonction de vos choix)
framerate 5

# Nombre d'image capturée avant de le début de la détection (pour l'export en vidéo)
pre_capture 2

# Idem pour post capture
post_capture 5

# Permet de faire une capture image de la détection
output_pictures best

# Pour avoir une meilleure qualité de vidéo
ffmpeg_bps 500000

# L'endroit ou seront stockées les captures
target_dir /media/freebox

# Pour pouvoir visualiser le flux de votre caméra en live 
stream_port 8082
stream_motion on
stream_maxrate 4
stream_localhost on # Seul le Pi pourra accéder au stream de la caméra (ou PiCam-JS)
stream_auth_method 0 # On désactive l'authentification par mot de passe, PiCam-JS pourra se connecter 
; stream_authentication user:password

# Pour pouvoir controller la caméra à distance 
webcontrol_port 8081
webcontrol_localhost off
webcontrol_authentication user:password

# Le paramètre suivant permet de lancer un script lorsque Motion détecte un mouvement (dans notre cas alerte SMS)
on_event_start /home/pi/bin/intrusion.sh

Plus haut j'ai mis une note par rapport au fichier fstab, c'est maintenant le moment d'en reparler !

En effet dans ce fichier j'ai fixé arbitrairement l'id et le gid de l'utilisateur motion, vous allez maintenant mettre les bonnes valeurs.

Commencez par repérer les bonnes valeurs :

$ grep "motion" /etc/passwd
motion:x:109:113::/var/lib/motion:/bin/false

Vous avez donc ici :

  • uid : 109
  • gid : 113

Éditez à nouveau le fichier fstab pour saisir les bonnes valeurs :

$ sudo nano -w /etc/fstab
//192.168.1.254/Disque\040dur/Surveillance /media/freebox cifs _netdev,guest,iocharset=utf8,uid=**109**,gid=**113**,rw,comment=systemd.automount 0 0

Démontez puis remontez le dossier :

$ sudo service motion stop
$ sudo umount /media/freebox
$ sudo mount /media/freebox
$ sudo service motion start

Vous pourrez alors visualiser la cam depuis votre navigateur :

http://192.168.1.6:8082

Script d'alerte

Capturez les intrusions c'est bien, être averti c'est encore mieux !

Vous allez créer le script suivant :

$ mkdir ~/bin
$ nano -w /home/pi/bin/intrusion.sh

Avec le contenu suivant :

#! /bin/bash
 
# Config
DELTA=20
USER="<identifiant free mobile>"
PASS="<code api>" # Vous pourrez le trouver ici : https://mobile.free.fr/moncompte/index.php?page=options dans l'onglet "Notifications par SMS"
MSG="Intrusion in!"
TARGET_DIR="/media/freebox"
#---------------
 
MOTION_START_DATE=`stat -c %Y /var/run/motion/motion.pid`
CURRENT_DATE=`date +%s`
 
MIN_DATE=`expr ${CURRENT_DATE} - ${DELTA}`
 
if [ "${MOTION_START_DATE}" -lt "${MIN_DATE}" ] ; then
        wget -O /dev/null "https://smsapi.free-mobile.fr/sendmsg?user=${USER}&pass=${PASS}&msg=${MSG}"
 
        date +"%s" > ${TARGET_DIR}/intrusion.date
        chmod a+r ${TARGET_DIR}/intrusion.date
fi

Rendez-le script exécutable :

$ sudo chmod +x /home/pi/bin/intrusion.sh

Puis testez le script, vous devriez recevoir un sms :

$ sudo /home/pi/bin/intrusion.sh

Suppression automatique des vieilles vidéos

Ce script sera appelé tous les jours à 23h et supprimera tous les fichiers .jpg datant de plus de X jours.

$ nano -w /home/pi/bin/purge.sh

Son contenu :

#! /bin/bash
 
find /media/freebox/ -name "*.jpg*" -mtime +2 -delete -print

Vous pouvez remplacer “2” par le nombre de jours que vous souhaitez conserver.

Rendez-le exécutable :

$ chmod +x /home/pi/bin/purge.sh

Maintenant planifiez cette tâche :

$ sudo crontab -e
0 23 * * * /home/pi/bin/purge.sh
documentation/raspberry_pi/camera_de_surveillance/3_-_motion.txt · Last modified: 2018/05/14 21:09 by dbroqua