Afficher une image actualisée sur votre site

Photo de plantes avec le module caméra du Raspberry Piou Afficher, en image, la météo sur un site internet via WebCam

ou tout ce que vous voulez ; “c’est vous qui voyez”.

(Au fait –> Bon anniversaire Nathalie V 😉 On est le 02/07)

L’idée est de faire apparaître sur votre site une image prise par une WebCam avec un PC sous Linux ou avec le module caméra du Raspberry. Et cette image sera mise à jour toutes les X minutes.
Petit bonus, on écrit automatiquement les infos désirées directement sur l’image.

On peut imaginer que vous avez un gîte à louer ou que vous êtes une mairie ou un Syndicat d’initiative et que vous désirez que vos visiteurs connaissent la vue/le temps qu’ils auront depuis leur chambre ou tel endroit/promenade.
Ça peut éventuellement servir de moyen de VidéoSurveillance également !

La genèse :

Samedi, je devais attendre ma n°1 ; j’avais donc la fin de soirée/début de nuit pour moi ; tranquille devant l’écran.

Suite à une discussion sur un forum au sujet de Vidéo-Surveillance avec MotionEye et des lacunes de ce type de programme (détection de mouvement par changement dans l’image), j’évoquais la prise automatique de clichés avec expédition par serveur FTP (ou autres moyens, mais je ne sais pas faire autrement pour le moment) + maintien en mémoire des clichés.

Bref, une reprise de ce que j’avais débuté dans l’article Affichage RaspiCam depuis serveur FTP il y a 1 an et 1/2 déjà.

Bon … Comme j’ai formaté (depuis longtemps et à plusieurs reprises) cette clef USB de Raspbian … Ben … Y a plus qu’à tout refaire ! 🙂 Évidemment, on garde l’idée du bandeau inséré sur l’image.

Je précise que je bosse sur Raspberry Pi car c’est léger, ça ne consomme rien et que je n’ai pas de vraie WebCam alors que j’ai un module caméra actuellement connecté à mon Rpi3 suite à un projet “Bac” de la n°1 (on y reviendra dans un autre article).

La marche à suivre :

Téléchargement de Raspbian sur le site officiel (j’avoue, j’ai déjà la dernière version dans mes nombreux torrents Linux ; je gagne du temps).

Écriture de l’image sur une clef USB avec etcher (je précise que mon Raspberry Pi3 sait démarrer sur USB ; sinon, utilisez une carte microSD).

Je passe sur la configuration de Raspbian (activer la caméra et le FTP, éventuellement VNC ; passer les locales en FR ; changer le mot de passe ; …)

Mise à jour complète et totale (comme ça, tranquille, tout se passera bien ensuite).

sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y && sudo reboot

Ensuite,

1 – Installation du FTP pour balancer les images vers votre serveur distant/hébergement.

sudo apt-get install ftp

2 – Création du dossier pour les images et le script (ne pas utiliser sudo pour que le dossier ne soit pas verrouillé)

mkdir /home/pi/raspicam/

3 – Se placer dans ledit dossier

cd /home/pi/raspicam/

4 – installer ImageMagick

sudo apt-get imagemagick

5 – Création d’un script pour prise de la photo et expédition sur le serveur FTP :

sudo nano transfert.sh

Ce script a été écrit en partant de celui de ma page Affichage RaspiCam depuis serveur FTP avec des modifications/ajouts provenant de pleins d’infos trouvées sur le Net et dans ma mémoire (c’est que je lis et teste pas mal de trucs en fait …). Pour aider, j’ai tenté de commenter au maximum et aérer la mise en page = le script semble donc très long 😉

#!/bin/bash

# Notez votre adresse du serveur FTP
HOST='ftp.votre_domaine.truc'

# Notez votre nom d'utilisateur
USER="votre_user"

# Notez votre mot de passe
PASSWD="votre_mot-de-passe"

# Notez le nom du fichier à transférer
FILE="photo_camera2.jpg"

# Notez le chemin du dossier où envoyer ce fichier
REMOTEPATH='/www/rasp/'

# Se déplacer dans le dossier idoine au sein du Raspberry Pi
cd /home/pi/raspicam

# Créer l'image et faire une pause de 15 secondes (car image de belle qualité alors que le Raspberry Pi est un nano-ordinateur)
raspistill -w 800 -h 600 -o photo_camera.jpg -q 100
sleep 15

# Définition du format de la date à inscrire (en texte) sur l'image
time=$(date +"%d/%m/%Y - %H:%M:00")

# Choix automatique de la taille de la police de caractères (permet le placement des lignes où il faut dans le bandeau)
if [ $width -ge $height ]
then
pointsize=$(($width))
else
pointsize=$(($height))
fi

echo " Width: $width, Height: $height. Using pointsize: $pointsize"

# Script de transformation de l'image avec création du bandeau + ajout du texte puis enregistrement sous un autre nom (le nom du fichier à transférer)

convert "photo_camera.jpg" -fill '#DCDCDC' -draw 'rectangle 0,540,800,600' \
-gravity SouthEast -pointsize 18 -font Bookman-DemiItalic -fill '#7F7F7F' -annotate +$pointsize+10 "https://trevilly.com" \
-gravity SouthEast -pointsize 15 -fill '#7F7F7F' -annotate +$pointsize+30 "Alban TRÉVILLY " \
-gravity SouthWest -pointsize 18 -font Bookman-DemiItalic -fill '#7F7F7F' -annotate +$pointsize+10 "$time" \
-gravity SouthWest -pointsize 15 -fill '#7F7F7F' -annotate +$pointsize+30 "Réalisée avec un Raspberry Pi" \
-quality 100 \
"photo_camera2.jpg"

sleep 2

# Définition d'un autre format de date pour l'insérer dans le nom du fichier de sauvegarde
time=$(date +"%d-%m-%Y_%H-%M")

# Copie de l'image modifiée avec un autre nom pour la garder durablement (le fichier "photo_camera2.jpg" est auto-écrasé en local et en distant)
cp "photo_camera2.jpg" "Raspicam_$time.jpg"

sleep 2

ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd $REMOTEPATH
binary
put $FILE
quit
END_SCRIPT
exit 0

Donc, en résumant en Français, on prend une photo “photo-camera” puis on traite cette image “photo-camera” avec ImageMagick en y ajoutant un bandeau gris et du texte puis on l’exporte sous un autre nom (“photo-camera2”) et on sauvegarde cette image modifiée sous un autre nom (par exemple “Raspicam_02-07-2018_18-30”) pour la stocker.
Enfin, on transfert “photo-camera2” sur le serveur Web.

Je vous mets la dernière image prise et traitée par le script ci-dessus.
A noter que cette image a été nettement compressée avec kraken.io pour passer, in fine, de 275 ko à 56 ko (avec une évidente perte de qualité visible au niveau du texte).

Photo de plantes avec le module caméra du Raspberry Pi
Une plante qui m’est inconnue et des branches de bouleau


A suivre, le n°4 m’attend pour jouer à “Double-Mots” … 😀
(Merci Alexis G (et Gilles G, son papa) pour ce cadeau d’anniversaire)

Bon, rapidement, pour finir l’article proprement …
J’ai joué, mangé, géré le lave-vaisselle (entre autres) en secret entre temps, mais “magie de l’Internet”, vous ne le savez pas et il est 22h50 maintenant (Oups ; ha zut, si, maintenant, vous le savez).

Alors, il faut mettre la chose en automatique, non ?!?

Modification des tâches cron

sudo nano /etc/crontab

Ensuite, on ajoute (tâche tous les 1/4 d’heure)

*/15 * * * * root bash /home/pi/raspicam/transfert.sh

On quitte en sauvegardant (“Ctrl + x” puis “o” puis la touche “Entrée”)

On recharge les tâches cron

/etc/init.d/cron reload

Et voilà ; ça tournera en automatique aussi longtemps que le Raspberry Pi (ou le PC) fonctionnera !

Et c’est en fonction dès le redémarrage évidemment 😉

Bonne nuit !
(et merci si vous relisez et trouvez des fautes)

A propos de Alban

Papa de 4 enfants étant lui même resté un enfant. Tombé par obligation dans l'informatique à 22 ans pour le boulot et s'étant "un peu" pris au jeu ... Pas un génie de l'informatique (loin de là), mais intéressé et carrément orienté Linux et entraide.

Une réponse à “Afficher une image actualisée sur votre site”

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*