ou 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).
…
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
crontab -e
Il faut choisir Nano.
Ensuite, on ajoute (tâche tous les 1/4 d’heure)
*/15 * * * * bash /home/pi/raspicam/transfert.sh
On quitte en sauvegardant (« Ctrl + x » puis « o » puis la touche « Entrée »)
Cela recharge les tâches cron automatiquement
Et voilà ; ça tournera en automatique aussi longtemps que le Raspberry Pi (ou le PC) fonctionnera !
Et c’est en fonctionnement dès le redémarrage évidemment 😉
Bonne nuit !
(et merci si vous relisez et trouvez des fautes)
Petite mise à jour du 03/07/2018 (Bon Anniversaire Coline T)
La plante est un « spathiphyllum« .
Merci à Gilles G pour ce retour d’information (et la coquille à corriger 😉 également)