Comme présenté précédemment, l’objectif de ce petit projet est de connecter un vieil appareil photo à Internet pour faire office de Webcam haute qualité (et autonome).

Comme vous pouvez le constater nous ne nous sommes pas encore penché sur l’aspect « matériel » de la solution. Nous y consacrerons un prochain billet.

De manière à automatiser la prise de photo et l’envoi vers un serveur FTP, nous allons créer un script shell.

L’objectif de ce script sera:

  • de prendre une photo et de la transférer via USB,
  • de « tagger » cette photo avec la date et l’heure,
  • de mettre en ligne cette photo sur un serveur FTP,
  • de redimensionner (1024×768) et renommer la photo en « webcam.jpg » et la mettre en ligne sur un serveur FTP.

En plus des paquets gphoto, deux paquets complémentaires seront installés : imagemagick (manipulation d’images) et lftp (logiciel ftp avancé).

wifipak> ipkg list | grep imagemagick
imagemagick – 6.5.5.10-1 – A set of image processing utilities.
wifipak> ipkg list | grep lftp
lftp – 4.0.3-1 – Sophisticated ftp/http client, file transfer program supporting a number of network protocols.
wifipak>

Comme vous pouvez le constater, ces paquets sont bien disponibles sur plateforme embarquée.

Exemple de date crée par ImageMagick

Exemple de date crée par ImageMagick

Le script sera ensuite lancé via une tache cron toutes les X minutes. Entre 5 et 10 minutes me semble correct. Notez qu’il faut être sûr que la photo soit bien en ligne avant de relancer le script.

De plus, il faut veiller à bien supprimer les photos, en effet le stockage sur la plateforme sera matériellement très limité. Il sera peut être nécessaire d’y adjoindre une clef usb.

Voici donc le script:

#!/bin/sh
######################################
######## CONFIGURATION START #########
######################################
capturedir= »/home/fanfoue/Videos/capture/ »;

# PARAMETRES FTP
ftpserver= »ftp.sample.com »;
ftpuser= »sample »;
ftppassword= »sample »;
ftpdir= »/webtest/ »;
ftparchivedir= »/webtest/archive/ »;

Init= »no »
CaptureStd= »yes »;
CaptureAdv= »no »;
######################################
######## CONFIGURATION STOP ##########
######################################

if [ "$Init" = "yes" ] ; then
echo « xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx »
echo « xxxx    INITIALISATION    xxxx »
echo « xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx »
rm ${capturedir}* -r
fi

if [ "$CaptureStd" = "yes" ] ; then
echo « xxxxxxxxxxxxxxxxxxxxxxxxxxx »
echo « xxxx   CAPTURE PHOTO   xxxx »
echo « xxxxxxxxxxxxxxxxxxxxxxxxxxx »
cd ${capturedir}
echo « Delete –> Suppression photos precedentes (si existantes) »
rm ${capturedir}IMG_*.JPG
gphoto2 –capture-image-and-download
dispdate=$(date +%Y%m%d%k%M)
printdate=`echo $(date +%A) $(date +%d) $(date +%B) $(date +%Y) – $(date +%k) h $(date +%M)`
mv IMG_*.JPG ${capturedir}${dispdate}.jpg
mogrify -font Helvetica -pointsize 30 \
-draw « gravity southwest \
fill black  text 0,12 \ »${printdate}\ » \
fill white  text 1,11 \ »${printdate}\ »" ${capturedir}${dispdate}.jpg
echo « Lftp –> Upload de la photo $dispdate.jpg sur vers $ftparchivedir »
lftp -c « open $ftpserver; user $ftpuser $ftppassword; cd $ftparchivedir; put ${capturedir}${dispdate}.jpg; bye »
echo « Resize –> Redimensionnement ${capturedir}${dispdate}.jpg en 1024×768″
convert ${capturedir}${dispdate}.jpg -resize 1024×768 ${capturedir}${dispdate}.jpg
echo « Rename –> Renommage en webcam.jpg »
mv ${capturedir}${dispdate}.jpg ${capturedir}webcam.jpg
echo « LFTP –> Upload de la photo webcam.jpg sur vers $ftpdir »
lftp -c « open $ftpserver; user $ftpuser $ftppassword; cd $ftpdir; put ${capturedir}webcam.jpg; bye »
echo « Delete –> Suppression photos locales »
rm ${capturedir}/*.jpg
fi

Vous pouvez tester le script en utilisant la commande suivante: sh nomduscript.sh

xxxxxxx@laptop:~/WiTo$ sh videoscript.sh
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxx   CAPTURE PHOTO   xxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
Delete –> Suppression photos precedentes (si existantes)
rm: cannot remove `/home/xxxxxxxx/Videos/capture/IMG_*.JPG’: No such file or directory
New file is in location /store_00010001/DCIM/148CANON/IMG_4830.JPG on the camera
Downloading ‘IMG_4830.JPG’ from folder ‘/store_00010001/DCIM/148CANON’…
Saving file as IMG_4830.JPG
Deleting file /store_00010001/DCIM/148CANON/IMG_4830.JPG on the camera
Deleting ‘IMG_4830.JPG’ from folder ‘/store_00010001/DCIM/148CANON’…
Lftp –> Upload de la photo 200911131816.jpg sur vers /webtest/archive/
Resize –> Redimensionnement /home/xxxxxxxxxxx/Videos/capture/200911131816.jpg en 1024×768
Rename –> Renommage en webcam.jpg
LFTP –> Upload de la photo webcam.jpg sur vers /webtest/
Delete –> Suppression photos locales

Le script s’exécute en moins d’1 minute sur une liaison Adsl 8M.

Tout fonctionne, l’étape suivante consiste donc à trouver la plateforme embarquée.

Be Sociable, Share!