Attention, page créée le 01/01/2017 à 02h15 du matin ; même si je ne bois plus du tout d’alcool depuis plus de 24 ans, la fatigue peut (insidieusement) aider à faire des fautes …
En trainant sur des forums pour apprendre et aider, j’ai testé un truc (plus ou moins essayé il y a qq années ; sans trop de succès à l’époque).
L’idée est de faire un script qui lance la prise d’une photo puis de la déposer (téléverser ou « uploader ») sur un serveur distant (en FTP) pour la voir depuis le Net.
En ces temps de joie, on joue avec des Raspberry Pi alors, on va faire ça avec la RaspiCam (la Caméra spécialement étudiée pour le Raspberry Pi) et un RaspBerry Pi3 piloté par SSH 😉
Histoire de jouer, je me suis dit « Ho, ben, depuis 20 ans que tu utilises GNU/Linux, tu devrais essayer ‘Cron’ tout de même« .
(oui, oui, on se parle lui et moi … ou moi et lui … enfin, nous 2 quoi. Grrr, ne nous énervez pas ; on a déjà du mal entre nous.)
Bref,
1 – On active le FTP
sudo apt-get install ftp
2 – Création du dossier
mkdir /home/pi/webcam/
3 – Se déplacer dans le dossier
cd /home/pi/webcam/
ou (puisque nous sommes nous sommes déjà dans /pi)
cd webcam
4 – Création d’un script pour prise de la photo et expédition sur le serveur FTP (merci ‘rbwebdev‘) :
sudo nano transfert.sh
puis
#!/bin/bash HOST='ftp.votre_domaine.truc' USER="username" PASSWD="password" FILE="photo_rasp.jpg" REMOTEPATH='/www/rasp' raspistill -w 648 -h 486 -o /home/pi/raspicam/photo_rasp.jpg -q 75 sleep 15 ftp -n $HOST <<END_SCRIPT quote USER $USER quote PASS $PASSWD cd $REMOTEPATH binary put $FILE quit END_SCRIPT exit 0
Je vous laisse adapter à votre situation.
Quelques explications rapidement
HOST=’ftp.votre_domaine.truc’ USER= »username » PASSWD= »password » correspond à votre connexion FTP ; vous avez ces informations par votre hébergeur si vous avez un hébergement.
FILE= »photo_rasp.jpg » est juste le nom de fichier que je veux utiliser pour mes images.
REMOTEPATH=’/www/rasp’ correspond au dossier où doivent être envoyées les images.
raspistill -w 648 -h 486 -o /home/pi/raspicam/photo_rasp.jpg -q 75 est « simplement » la ligne de commande pour que le Raspberry Pi prenne une photo de taille 648×486 enregistrée dans le dossier /home/pi/raspicam/ sous le nom photo_rasp.jpg avec une qualité abaissée à 75%
Ensuite, on fait une pause de 15 secondes (le Raspberry Pi en question est un Rpi2 donc on lui laisse le temps 😉 On est cool)
Et la suite ftp -n $HOST <<END_SCRIPT quote USER $USER quote PASS $PASSWD cd $REMOTEPATH binary put $FILE quit END_SCRIPT exit 0 est purement du codage 🙂
Mais vous verrez plus bas un script « encore plus mieux »
3 – Ensuite, j’ai ajouté une ligne dans le fichier crontab pour déclencher ce script toutes les 5 minutes si le RaspBerry est en route.
On édite le fichier crontab :
crontab -e
Et on choisit Nano
Au début, je faisais :
*/5 * * * * /home/pi/webcam/transfert.sh
Mais ça ne fonctionnait pas.
Il faut faire :
*/5 * * * * bash /home/pi/webcam/transfert.sh
Ensuite, le fichier crontab est rechargé de manière automatique
Il ne reste plus qu’à attendre 5 minutes …
Ouf ; es fonctioniert ! 😉
La preuve :
L’image affichée sera la dernière photo prise et envoyée sur le serveur.
En effet, une nouvelle photo est prise toutes les 5 minutes aussi longtemps que le Raspberry Pi tourne et les photos s’écrasent les unes les autres.
On ne garde donc que la dernière.
Ensuite, je vais voir pour trouver/modifier/adapter/compiler/concaténer des scripts pour « tagger » (annoter en Français ?) la photo avec des informations sur un bandeau comme je l’avais fait dans des tests de surveillance par vidéo dans le temps.
Donc … A bientôt,
Edit du 04/01/2017.
Ce soir, j’ai essayé et réussi le coup du tampon.
Alors, on va faire simple pour le moment.
On met à jour le système :
sudo apt-get update && sudo apt-get upgrade -y
On installe imagemagick :
sudo apt-get install imagemagick
On modifie le script transfert.sh :
#!/bin/bash HOST='ftp.votre_domaine.truc' USER="username" PASSWD="password" FILE="photo_rasp.jpg" REMOTEPATH='/www/rasp' raspistill -w 648 -h 486 -o /home/pi/raspicam/photo_rasp.jpg -q 75 sleep 15 time=$(date +"%d/%m/%Y - %H:%M:00") convert photo_rasp.jpg -font Bookman-DemiItalic -draw "text 20,20 '$time | Alban | https://dieteticien.eu' " photo_rasp.jpg sleep 2 ftp -n $HOST <<END_SCRIPT quote USER $USER quote PASS $PASSWD cd $REMOTEPATH binary put $FILE quit END_SCRIPT exit 0
Et voilà !
(Ha, oui, Pour quitter nano, faites « Ctrl + x » puis « o » puis « Entrée » si vous voulez sauvegarder les modif »
Bon, je vais chercher comment placer les infos où je veux et faire une sorte de bandeau, mais comme je joue à tout ça juste pour le fun et que la grande famille impose, de fait, de ne m’y coller qu’en soirée … J’avoue que j’ai les yeux qui piquent !
Bonne Nuit 😉
Edit du 22/01/2017.
Depuis quelques jours (le 19/01/2017), après avoir compilé/retravaillé divers scripts trouvés sur le Net, j’ai bien modifié mon code.
En gros,
Je fais une photo nommée photo_rasp.jpg
Avec ImageMagick, j’ajoute un bandeau (rectangle) aux points de coordonnées 0,426 et 648,486 (déterminées en ouvrant l’image dans Gimp) puis j’inscris des informations.
L’image est sauvegardée sous un autre nom : photo_rasp2.jpg
Comme les photos s’écrasent les unes les autres, j’ai ajouté un bout de code pour enregistrer photo_rasp2.jpg sous un autre nom photo_rasp3.jpg qui sera elle même renommée selon ses données EXIF ; par exemple 2017-01-21-10h55mn06s.jpg
Ensuite le fichier photo_rasp2.jpg est balancé, par FTP, sur le serveur tandis que les autres images sont stockées dans le RaspBerry Pi.
Et, là, j’ai testé une fonction sympa de ImageMagick : transformer un lot d’image en fichier GIF pour en faire un fichier GIF animé.
Voilà le résultat :
Bon, j’avoue, l’idée, c’est de faire une caméra extérieure qui prendrait, via tache cron une photo tous les jours à la même heure afin faire un time lapse basé sur 1 photo par jour durant toute une année …
Ho, ben, on dirait que j’ai encore un truc à ajouter à ma longue liste des « à faire » …
A bientôt,
Rétroliens : Afficher une image actualisée sur votre site – TREVILLY.COM
Rétroliens : Afficher une image actualiser sur votre site – TREVILLY.COM
Bonjour,
C’est quoi HOST=’ftp.votre_domaine.truc’ il faut mettre quoi ? L’adresse ip ? Comment ?
Merci
Cordialement
Bonsoir Julian,
Il te faut un serveur distant (ou un site, comme ici trevilly.com), soit sur un hébergeur comme OVH (mon cas) soit sur une machine chez toi.
Si on prend l’exemple de ‘trevilly.com’, alors je fais pointer vers ‘ftp.trevilly.com’
Attention, il faut aussi, sur ton serveur, créer le dossier utile.
Dans mon script, j’ai noté :
REMOTEPATH=’/www/rasp’
Donc, auparavant, je me suis connecté sur mon serveur avec un logiciel FTP (comme CyberDuck ou FileZilla), puis j’ai créé le dossier ‘rasp’ au sein du dossier « www » (c’est souvent le dossier ‘www’ qui est le dossier par défaut sur un site).
Cordialement,
—
Alban
Merci ! 😉