Raspberry Pi, Motion et Pi Camera
Une application que l’on retrouve souvent avec le Raspberry et la camera, en dehors du timelapse, c’est la vidéo surveillance. Un outil bien adapté pour cet usage est le logiciel motion.
Il y avait déjà eu sur pihomeserver, un article parlant de motion mais celui-ci s’appliquait à des caméras USB. Ici nous allons voir comment utiliser la caméra dédiée au Raspberry sur le port CSI. J’ai utilisé la caméra normale mais aucune raison de ne pas pouvoir utiliser la version NoIR avec un projecteur infrarouge adapté.
Installation principale
- Je suis parti d’une installation propre installée par réseau grâce à cet article. Vous préparez la carte en moins de 2 minutes et l’installation se fera seule depuis le Raspberry.
- Installer raspi-config
apt-get install raspi-config
- Configurer le système si besoin
- Les locales
- La répartition de mémoire. Chez moi j’ai mis 1Mb pour la mémoire vidéo
- L’overclocking
- Installer les paquets nécessaires à l’utilisation de Motion
apt-get install -y motion libjpeg62 libjpeg62-dev libavformat53 libavformat-dev libavcodec53 libavcodec-dev libavutil51 libavutil-dev libc6-dev zlib1g-dev libmysqlclient18 libmysqlclient-dev libpq5 libpq-dev
- Récupérer la version supportant la Raspberry Pi Camera
wget https://www.dropbox.com/s/xdfcxm5hu71s97d/motion-mmal.tar.gz
- Décompresser l’archive
tar zxvf motion-mmal.tar.gz
- Installer les fichiers qui ont été décompressés
mv motion /usr/bin/motion mv motion-mmalcam.conf /etc/motion.conf
Cette version de motion utilise par défaut le fichier de configuration situé dans /etc et non /etc/motion.
Vous avez maintenant une installation de motion qui supporte la caméra du Raspberry. Pour un premier test, vous pouvez lancer la commande suivante :
motion -n
Connectez vous maintenant sur http://<raspberry_pi_@ip>:8081/ pour voir le résultat. Les fichiers sont tous enregistrés dans le répertoire défini dans la variable target_dir du fichier de configuration (/home/pi par défaut).
Je vous conseille de lire attentivement cette page pour connaitre toutes les options de configuration car elles sont nombreuses et très utiles.
Voici une image pour les exemples suivants :
Option 1 : désactiver la led de la caméra
Lorsque la caméra est activée, sa LED rouge s’allume. Si vous souhaitez la désactiver, ajouter à la fin du fichier /boot/config.txt la ligne :
disable_camera_led=1
Il vous faudra redémarrer le Raspberry Pi pour que le changement soit effectif.
Option 2 : tagger les images générées
Par défaut, les images ont un texte inséré en bas à droite avec la date et l’heure. Vous pouvez modifier dans le fichier de configuration /etc/motion.conf (à partir de la ligne 360) le ou les textes qui vont être incrustés. Vous avez deux possibilités : en bas à gauche ou en haut à droite.
Si vous voulez augmenter ces possibilités, vous pouvez utiliser les paquets suivants :
apt-get install graphicsmagick-imagemagick-compat libimage-exiftool-perl
Vous avez maintenant plusieurs outils à votre disposition pour manipuler les images générées :
- identify : va vous permettre d’extraire des informations de chaque image comme sa largeur ou hauteur.
Par exemple la commande suivante vous retourne la largeur de l’image :identify -format '%w' 01-20141206121908-00.jpg
- composite : vous pouvez insérer votre propre logo par dessus l’image.
Par exemple pour ajouter une image en haut à droite :composite -geometry +50+50 -gravity NorthEast <image_to_insert> "<source_file>" "<destination_file>"
- convert : permet de redimensionner l’image, la découper, ajouter un encadrement, changer les attributs ou ajouter du texte en choisissant l’emplacement, la fonte, la taille, etc.
Par exemple, pour ajouter un cadre rouge en bas de l’image :convert "<image_file>" -fill '#FF000080' -draw 'rectangle 0,<image_height>-<box_height>,<image_width>,<image_height>'
Pour ajouter du texte en bas à gauche :convert "<image_file>" -gravity SouthWest -font <font_name> -pointsize <font_size> -fill <font_color> -draw '5,12 "<text_to_insert>"'
exiftool : modifier les attributs EXIF de l’image.
Par exemple, pour changer la ville :
exiftool -overwrite_original -iptc:City="<city_name>" "<filename_to_modify>"
Vous pouvez maintenant créer votre script et l’exécuter lorsqu’une image est enregistrée grâce à la gestion des événements dans motion. Par exemple dans /etc/motion.conf :
on_picture_save <my_script_to_execute> %f
Vous pouvez par exemple insérer la météo et votre logo pour diffuser ensuite sur un site internet.
Option 3 : exporter les images vers un serveur externe
Si vous utilisez votre Raspberry Pi pour surveiller votre domicile, il est fort probable que les voleurs vont aussi vous prendre votre précieux et donc la carte SD (ou le disque dur) avec les images. Pour éviter cette situation, vous pouvez synchroniser le répertoire avec les images avec un Google Drive par exemple ou bien les envoyer vers un serveur distant. Dans tous les cas, attention quand même car votre identifiant et mot de passe seront stockés sur la carte. Sous peu que le voleur soit du coté obscure des geeks, il ira vite effacer les traces sur le serveur.
Pour synchroniser avec un compte Google Drive, vous pouvez utiliser Grive, comme je vous l’avez présenté ici.
Pour le FTP, vous pouvez utiliser la commande ftp classique comme ceci par exemple :
#!/bin/sh cd /path/to/my/images ftp -i <<** open <my_ftp_server_nameOrIp> put <my_image_file> bye *
Pensez à mettre dans le fichier .netrc du user qui exécute motion, les identifiants pour se connecter à votre server sous la forme :
machine my_ftp_server_nameOrIp login my_login password my_password
Le script sera a ajouté à motion avec la gestion des événements comme on_picture_save par exemple dans /etc/motion.conf
Vous pouvez aussi installer le package ncftp qui a une commande ncftpput qui envoie les fichiers puis supprime directement les sources.
Option 4 : accéder à distance à votre serveur de surveillance
Pour accéder par Internet à votre serveur, vous devrez ouvrir le port sélectionné dans la configuration (8081 par défaut) et installer par exemple inadyn pour mettre à jour un nom de domaine comme no-ip. Vous trouverez les instructions sur cette page pour installer inadyn.
Option 5 : démarrer automatiquement motion au démarrage du Raspberry Pi
Vous modifiez le fichier de configuration /etc/motion.conf pour que motion démarre en mode daemon avec l’option (ligne 6):
daemon on
Les droits des différents fichiers doivent être mis à jour :
chown root:root /usr/bin/motion chown root:root /etc/motion.conf chmod 755 /usr/bin/motion chmod 644 /etc/motion.conf
Ensuite le système doit démarrer à chaque fois motion. Modifier le fichier /etc/default/motion :
start_motion_daemon=yes
Puis changer les répertoires afin que motion puisse y écrire :
logfile /tmp/motion.log
et
target_dir /var/run/motion
Vous pouvez maintenant démarrer manuellement motion avec la commande
service motion start
ou redémarrer votre Raspberry
Sources et exemples
- http://anderson69s.com/2014/06/28/raspberry-pi-picam-camera-de-securite/
- http://www.epingle.info/?p=3070
- http://www.ncftp.com/ncftp/doc/ncftpput.html
- http://www.pervasive-network.org/2009/05/encadrement-annotation-et-tags-iptc-de-photo-en-ligne-de-commande-avec-convert-imagemagick-et-exiftool/
- http://imagemagick.org
- http://www.sno.phy.queensu.ca/~phil/exiftool/