BBOOTS

Il forum meteorologico della Bergamasca 

  • Gestione Webcam Canon su Raspberry e archivio automatico

  • Sezione dedicata alle discussioni sulle strumentazioni meteorologiche o sui siftware di gestione delle centraline meteo.

Sezione dedicata alle discussioni sulle strumentazioni meteorologiche o sui siftware di gestione delle centraline meteo.
 #372  da Paco
 mar giu 26, 2018 3:32 pm
Dopo i problemi avuti con il vecchio PSRemote su windows XP ho deciso di passare ad una nuova soluzione:
Raspberry PI + Gphoto.

La prima impressione, dopo alcuni giorni di TEST, è stata molto positiva in quanto non ho più avuto nessun alcun tipo di disconnessioni o errori che mi dovevano portare al riavvio delle fotocamera Canon Powershot A520.

Oltre agli script che già sono stati sviluppati da altri utenti sul web ho voluto crearne uno mio che andasse a gestire anche la fase di archiviazione locale e l'invio delle immagini su server del sito per creare uno slideshow giornaliero.

Per prima cosa assicuriamoci di avere installati i seguenti pacchetti
  • imagemagick
  • ncftpput
  • ftp
SCRIPT per automatizzare lo scatto Giorno/Notte
Salvate il codice col nome di dn.php e modificate le vostre coordinate
Codice: Seleziona tutto
#!/usr/bin/php
<?php
$lat=45.51;
$long=9.58;
date_default_timezone_set('Europe/Rome');
$uT=time();
$sun_info = date_sun_info($uT, $lat,$long);
$sunrise = $sun_info['civil_twilight_begin'];
$sunset = $sun_info['civil_twilight_end'];
$alba = $sunrise+100;
$tramonto = $sunset-200;
if ($uT>$alba && $uT<$tramonto) echo "1";
else
echo "2";
?>

SCRIPT di gestione degli scatti Giorno/Notte
Salvate il codice col nome di scatto.sh
Codice: Seleziona tutto
  #!/bin/bash

dn=$(php /home/pi/dn.php)

echo $dn "$uT"
if [ $dn = "1" ]
then
echo "Eseguo la modalità giorno"

#########   meteotreviglio.com webcam canon powershot a520  ########

gphoto2 --camera "Canon Powershot A520 (PTP mode)" --set-config imagesize=4 --set-config imagequality=1 --set-config zoom=0 --set-config iso=1 --set-config photoeffect=1 --set-config shootingmode=0 --set-config whitebalance=2 --set-config meteringmode=2 --capture-image-and-download --force-overwrite --filename /home/pi/webcam.jpg

######  con Imagemagick ritocco il file webcam.jpg e lo risalvo sempre su webcam.jpg ######
/usr/bin/convert /home/pi/webcam.jpg -sharpen 0x1 /home/pi/webcam.jpg

######  con Imagemagick ridimensiono la foto  webcam.jpg a 1024x768  e risalvo la foto in webcam2.jpg ######
/usr/bin/convert /home/pi/webcam.jpg -sharpen 0x1 -resize 1024x768 /home/pi/webcam2.jpg

####  con l'istruzione sotto, aggiungo la data  e l'orario  e risalvo in webcam.jpg  ######
/usr/bin/convert -pointsize 36 -fill white -undercolor black -gravity northwest -draw "text 1950,1650 \"$(date "+%H:%M %d.%m.%Y"|sed -e ' s/\"/\\\"/g' )\"" /home/pi/webcam.jpg /home/pi/webcam.jpg

#### con ncftpput invio la mia immagine al server del sito web ( modificate le credenziali di accesso al vs. server)  ####

ncftpput -u NOMEUTENTE -p PASSWORD FTP.VOSTROSITO:COM  /percorso/sul/server /home/pi/webcam.jpg

exit 0

else
if [ $dn = "2" ]
then
echo "Eseguo la modalità notte"

#########   meteotreviglio.com webcam canon powershot a520  ########

gphoto2 --camera "Canon Powershot A520 (PTP mode)" --set-config imagesize=0 --set-config imagequality=1 --set-config shootingmode=3 --set-config zoom=0 --set-config iso=0 --set-config aperture=0 --set-config photoeffect=2 --set-config shutterspeed=15 --set-config whitebalance=3 --set-config meteringmode=2 --get-all-metadata --capture-image-and-download --force-overwrite --filename /home/pi/webcam.jpg

######  con Imagemagick ritocco il file webcam.jpg e lo risalvo sempre su webcam.jpg ######
/usr/bin/convert /home/pi/webcam.jpg -sharpen 0x1 /home/pi/webcam.jpg

######  con Imagemagick ridimensiono la foto  webcam.jpg a 1024x768  e risalvo la foto in webcam2.jpg ######
/usr/bin/convert /home/pi/webcam.jpg -sharpen 0x1 -resize 1024x768 /home/pi/webcam2.jpg

####  con l'istruzione sotto, aggiungo la data  e l'orario  e risalvo in webcam.jpg  ######
/usr/bin/convert -pointsize 36 -fill white -undercolor black -gravity northwest -draw "text 1950,1650 \"$(date "+%H:%M %d.%m.%Y"|sed -e ' s/\"/\\\"/g' )\"" /home/pi/webcam.jpg /home/pi/webcam.jpg

#### con ncftpput invio la mia immagine al server del sito web ( modificate le credenziali di accesso al vs. server)  ####

ncftpput -u NOMEUTENTE -p PASSWORD FTP.VOSTROSITO:COM  /percorso/sul/server /home/pi/webcam.jpg

exit 0

fi
fi

exit 0

Fatto ciò vi troverete due file, uno con nome webcam.jpg e l'altro con webcam2.jpg
Il primo lo utilizziamo come scatto singolo da inviare al server che si aggiornerà ogni 5 minuti alla massima qualità mentre il secondo lo utilizzeremo come archivio in locale e come immagine sul nostro server per lo slideshow giornaliero.

SCRIPT per l'archiviazione in locale e invio sul server per lo slideshow giornaliero
Salvate il codice col nome di archivio.sh
Codice: Seleziona tutto
#!/bin/bash
######## creazione dell'archivio della Webcam Canon Powershot A520 by meteotreviglio.com########
######## con questo comando andiamo a creare la cartella sul pc con la data di oggi dentro la cartella archivio e copiamo lo scatto ridimensionato nella stessa########

today=$(date +%d-%m-%Y)
mkdir -p "/home/pi/archivio/$today"
chmod 777 "/home/pi/archivio/$today"
cp "/home/pi/webcam2.jpg" "/home/pi/archivio/$today"

######## ora andiamo a rinominare lo scatto webcam2.jpg con l'orario attuale  ########

time=$(date +%H:%M)
mv "/home/pi/archivio/$today/webcam2.jpg" "/home/pi/archivio/$today/$time.jpg"

######## ora invece ci colleghiamo al server del sito, creiamo la cartella con la data di oggi e inviamo lo scatto con l'orario########

today_host=$(date +%Y-%m-%d)

HOST=ftp.vostrosito.com
 
USER=username
           
PASS=password          

ftp -inv $HOST << EOF

user $USER $PASS

cd /mio/percorso

mkdir $today_host

cd $today_host

put /home/pi/archivio/$today/$time.jpg /mio/percorso/$today_host/$time.jpg

bye

EOF

exit 0
Infine, per automatizzare il processo dobbiamo accedere a crontab e indicare ogni quanto far scattare l'immagine e ogni quanto far archiviare le foto sulpc e sul server.

Digitiamo da Terminale
Codice: Seleziona tutto
sudo crontab -e
e andiamo ad inserire i parametri di scatto ed archiviazione (nel mio caso entrambi ogni 5 minuti)
Codice: Seleziona tutto
*/5 * * * * /home/pi/./scatto.sh
Codice: Seleziona tutto
*/5 * * * * /home/pi/./archivio.sh
Spero di essere stato chiaro e di aiuto, nel caso scrivete pure in replica se ne avete bisogno ;) ;) ;)

Web Hosting