Articolo completo e riaggiornato il 16 04 2017

Fino all'autunno del 2014 la gestione delle mie webcam era affidata a PsRemote, un programma windows, che gestiva gli scatti e i vari parametri delle fotocamere Canon, era installato in un notebook che mi fa "da muletto" 24 ore su 24 e che gestisce anche la stazione meteo Davis Vantage Pro 2, inoltrando i dati meteo ogni 5 minuti tramite internet al Centro Meteo Lombardo (CML) e ad altre due reti meteo: Rete Meteonetwork e Rete Linea Meteo, e anche alla rete internazionale Weather Underground, provvedendo inoltre naturalmente all’aggiornamento dei dati meteo del mio sito. Purtroppo però questo programma a volte si bloccava, procurandomi problemi sopratutto se non ero presente in casa, visto che per rimediare al blocco era necessario riavviare il notebook.
Ho deciso quindi dall’autunno scorso di cercare qualche altra alternativa, sperimentando e valutando le diverse possibilità. Dopo varie ricerche in internet, ho trovato un piccolo Pc grande poco più di una carta di credito:
Raspberry Pi  a cui si installa il sistema operativo Linux: purtroppo però per quanto riguarda la gestione delle webcam, di pappa bella pronta se ne è trovata poca o niente. Ho pertanto deciso di sperimentare quanto poi ho realizzato, soprattutto a riguardo della messa a punto dello script principale che gestisce lo scatto della fotocamera e l’inoltro al server hosting dell’immagine: la sperimentazione mi ha impegnato serate e serate di settimane intere ma alla fine sono riuscito nel mio intento, confermando il vecchio detto che "chi la dura la vince". Proprio per questo, e visto l'ottimo risultato ottenuto, ho deciso di condividere la mia esperienza e mettere a disposizione di altri amatori appassionati di meteo e fotografia le informazioni a seguire.

Sistema operativo e programmi da installare sul Raspberry Pi per la gestione della webcam, così composto:

Raspbian (una derivazione di Debian Linux),  Gphoto2 per la gestione della fotocamera,  NCFTP per l'invio delle immagini tramite FTP al server o altro. PHP5, e le librerie varie, ImageMagick: potentissima app di grafica per la gestione delle immagini, (messa a fuoco, miglioramenti vari, inserimento logo e testo, etc.)


E' necessario procurarsi il Raspberry Pi (personalmente ne ho comprato 3 da Amazon di cui uno il + (plus), compreso una decina di SD card da 8 Giga con un fattore di velocità 10 e ovviamente l'alimentatore 5 volts 2000 mA). Scarichiamo il sistema operativo raspbian (raspbian Jessie Lite)  al link: https://www.raspberrypi.org/downloads/ e salviamolo sul desktop.
Per l’installazione del sistema operativo sulla scheda SD, scarichiamo il programma win32diskimager al link: http://sourceforge.net/projects/win32diskimager/  . A riguardo delle modalità di utilizzo  di 
questo programma, vi rimando alle tante guide che si possono trovare in internet.
Io ho proceduto lanciando Win32DiskImager (non necessita di installazione, è sufficiente estrarre lo zip in una cartella)

foto disk imagesLa finestra di Win32DiskImager, con l’immagine di Raspbian caricata e in fase di scrittura sulla SD.

Nella schermata dell'applicazione, cliccando sull’icona della cartella (a destra), andiamo a cercare il file .img appena estratto: controlliamo che la lettera sotto Device corrisponda a quella del lettore di SD, (vi straconsiglio di verificare molto bene la lettera dell'unità perchè Win32 DiskImage non tollera sbagli e non perdona, formatta e sovrascrive senza pietà) e poi  iniziamo la scrittura con Write. Dopo qualche minuto la nostra scheda SD sarà pronta per essere inserita nello slot del Raspberry per poterlo avviare. Una volta preparata la scheda SD, la possiamo inserire nel Raspberry, collegando lo stesso alla nostra rete LAN e procedendo con l’accensione. 
Per comunicare con il Raspberry, utilizzeremo la modalità SSH attraverso il software Putty, che scaricheremo da: http://www.putty.org/ 
Via SSH possiamo accedere al Raspberry da un qualsiasi dispositivo, ma nel nostro caso useremo il nostro Pc da tavolo o notebook con installato windows. Per collegarci al Raspberry, però, abbiamo bisogno di conoscere l’indirizzo IP che gli è stato assegnato dal nostro modem-router: colleghiamoci quindi tramite Google Chome o Mozilla Firefox all’indirizzo http://192.168.1.1, che generalmente è standard per tutti i modem (almeno i 4 che possiedo io lo sono) e andiamo in Interface setup/LAN e in DHCP Table; qui troveremo la voce raspberrypi con l’indirizzo che il modem router gli ha appena assegnato. 
Avviamo il software Putty e in Host Name scriviamoci l'indirizzo IP che abbiamo reperito dal modem, in Port inseriamo 22, in Connection type: SSH, e clicchiamo sul pulsante “Open“. (vedi sotto la schermata di Putty)

putty configuration


Se l’IP è quello giusto, vi verrà chiesto di inserire il nome utente che è "pi" e la password, che è "raspberry" di default. A questo punto siamo collegati con il Raspberry e siamo pronti per le prime configurazioni.

CONFIGURAZIONE RASPBERRY PI:

per accedere al pannello di configurazione digitando dal terminale:

sudo raspi-config
apparirà una schermata come nella foto,

rasp cofigutation

In 1 "Expand Filesystem" ho esteso l'immagine del sistema operativo all'intero spazio della SD Card, perchè, durante la preparazione, il file immagine va ad occupare solamente lo spazio dell'immagine stessadi origine che è all'incirca 2GB.
In 2 "Change User Password" possiamo cambiare la password di accesso che inizialmente di default è: raspberry.

In 4 "Internationalisation Options” e quindi “I2 Change Timezone” si seguano le istruzioni e le opzioni richieste. Terminare la configurazione con “Finish” utilizzando i tasti freccia destra/sinistra. Eseguire il Reboot del sistema e proseguire con gli aggiornamenti ed installazione dei componenti utili al nostro caso.

Digitare: sudo apt-get update

Una volta scaricato il tutto, digitate ancora: sudo apt-get upgrade

Terminati gli aggiornamenti, riavviamo di nuovo con  sudo reboot

Riavviamo putty ed accediamo nuovamente a Raspberry con le nuove credenziali appena immesse dal pannello di configurazione.

Installiamo il programma gphoto2 che ci servirà per gestire le nostre webcam:

digitare: sudo apt-get install gphoto2
confermare con "si" o "yes" durante l'installazione. 
Ora collegare la fotocamera tramite USB al Raspberry (non dimenticate di accendere la fotocamera, in alcuni casi, è necessario attivare la modalità PTP sulla fotocamera stessa).
Digitiamo da terminale: 
gphoto2 --capture-image-and-download --force-overwrite --filename webcam.jpg
Se tutto ok, la fotocamera scatterà una foto di prova: verifichiamo, sempre da terminale  e digitando il comando ls , se effettivamente ha scattato e downloadato la foto webcam.jpg 

Per l'invio delle immagini via ftp, è necessario disporre di un programma apposito: ncftp è quello che fa al caso nostro.

Per installare ncftp, digitiamo da terminale il comando:

sudo apt-get install ncftp

Ora procediamo con l'installazione di PHP5, e le librerie varie:

sudo apt-get install php5
sudo apt-get install php5-cgi
sudo apt-get install php5-gd

Per ultimo installiamo ImageMagick:

sudo apt-get install imagemagick

Ora passiamo alla creazione dello script per la gestione dello scatto e per il trasferimento diretto dell'immagine al nostro Hosting (server) tramite Ftp.

Iniziamo con la creazione del file scatto.sh. Da terminale digitando sudo nano scatto.sh  si aprirà una schermata vuota dell'editor nano: copiare il codice sotto e incollare nel terminale, immettendo le vostre credenziali Ftp ed il percorso della cartella del sito dove salveremo lo scatto (foto). Le due righe di codice da modificare riguardanti le credenziali ftp iniziano con ncftpput, e salviamo poi con ctrl + x, confermando con si o yes. (dipende dalla lingua installata nel Raspberry)

Script gestione scatto fotocamera e invio immagine al server:  ( la descrizione del codice e commenti vari sono tra ### cancelletto ###

#!/bin/bash

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

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

############### webcam Colere paese ################

### qui sotto nella linea di codice sono impostati i vari parametri  di scatto che nel mio caso sono quelli della fotocamera Canon Powershot S70 ###
###per altre fotocamere i parametri sono leggermente diversi ###

gphoto2 --camera "Canon Powershot S70 (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/webcam0.jpg


######  con Imagemagick prendo la foto webcam0.jpg la ridimensiono a 1024x768 e faccio un pò di fuoco e risalvo la foto in webcam1.jpg ######
/usr/bin/convert /home/pi/webcam0.jpg -sharpen 0x1 -resize 1024x768 /home/pi/webcam1.jpg

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

#### qui aggiungo una descrizione in basso nella foto ######
/usr/bin/convert /home/pi/webcam2.jpg -font /usr/share/fonts/truetype/msttcorefonts/Arial.ttf -pointsize 21 \
-draw "gravity South \
fill black text 0,12 'webcam in Colere, direzione Nord-Est, puntata sulla via Zanoli e frazione Valzella. by www.maxpiantoni.it' \
fill white text 1,11 'webcam in Colere, direzione Nord-Est, puntata sulla via Zanoli e frazione Valzella. by www.maxpiantoni.it' " \
/home/pi/webcam2.jpg

#### qui aggiungo un logo in basso a destra tramite l'istruzione -geometry +910+610  ######
/usr/bin/convert /home/pi/webcam2.jpg /home/pi/orsoscalve2.jpg -geometry +910+610 -composite /home/pi/webcam.jpg

#### ridimensiono la foto webcam a 300x255 che uso come anteprima nella home principale del mio sito ed aggiungo anche la data e l'orario dello scatto  ######
/usr/bin/convert /home/pi/webcam1.jpg -resize 300x255 -pointsize 18 -fill white -undercolor blue -gravity Southwest -draw "text 77,0 \"$(date "+%H:%M %d.%m.%Y"|sed -e ' s/\"/\\\"/g' )\"" /home/pi/webcammini.jpg

 #### con questa istruzione, ncftp invia la foto webcam.jpg al mio hosting server (mettere le vostre credenziali di accesso del vostro hosting, e mod. eventual. anche il percorso  ####

ncftpput -u nomeutenteftp -p password ftp.miodominio.it /public_html/webcam /home/pi/webcam.jpg

exit 0

                                                                                                                                           

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

############### webcam Colere paese ################

### qui sotto nella linea di codice sono impostati i vari parametri  di scatto che nel mio caso sono quelli della fotocamera Canon Powershot S70 ###
### per altre fotocamere i parametri sono leggermente diversi ###

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


######  con l'app. Imagemagick prendo la foto webcam0.jpg la ridimensiono a 1024x768 e faccio un pò di fuoco e risalvo la foto in webcam1.jpg ######
/usr/bin/convert /home/pi/webcam0.jpg -sharpen 0x1 -resize 1024x768 /home/pi/webcam1.jpg

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

#### qui aggiungo una descrizione in basso nella foto #####
/usr/bin/convert /home/pi/webcam2.jpg -font /usr/share/fonts/truetype/msttcorefonts/Arial.ttf -pointsize 21 \
-draw "gravity South \
fill black text 0,12 'webcam in Colere, direzione Nord-Est, puntata sulla via Zanoli e frazione Valzella. by www.maxpiantoni.it' \
fill white text 1,11 'webcam in Colere, direzione Nord-Est, puntata sulla via Zanoli e frazione Valzella. by www.maxpiantoni.it' " \
/home/pi/webcam2.jpg

#### qui aggiungo un logo in basso a destra tramite l'istruzione -geometry +910+610  ######
/usr/bin/convert /home/pi/webcam2.jpg /home/pi/orsoscalve2.jpg -geometry +910+610 -composite /home/pi/webcam.jpg

#### ridimensiono la foto webcam  a 300x 255 che uso come anteprima nella home principale del mio sito ed aggiungo anche la data e l'orario dello scatto  ######
/usr/bin/convert /home/pi/webcam1.jpg -resize 300x255 -pointsize 18 -fill white -undercolor blue -gravity Southwest -draw "text 77,0 \"$(date "+%H:%M %d.%m.%Y"|sed -e ' s/\"/\\\"/g' )\"" /home/pi/webcammini.jpg

 

 #### con questa istruzione: ncftp invia la foto webcam.jpg al mio hosting  (mettere le vostre credenziali ftp di accesso e modificare eventual. anche il percorso #### 

ncftpput -u nomeutenteftp -p password ftp.miodominio.it /public_html/webcam /home/pi/webcam.jpg

exit 0

fi
fi

exit 0

 

Il seguente script, dn.php non è mio, l'ho trovato in internet al sito: http://www.meteoliri.it/ : questo codice in php gestisce il calcolo effemeridi di alba e tramonto.

Per la creazione del file dn.php, è necessario digitare dal terminalesudo nano dn.php  ;si aprirà la solita schermata vuota dell'editor nano; copiare il codice sotto e incollare nel terminale, immettendo le vostre coordinate espresse  in gradi per la latitudine e la longitudine nelle rispettive righe. Salvare con ctrl + x ,confermando con si o yes. (dipende dalla lingua installata nel Raspberry)

Script dn.php

#!/usr/bin/php
<?php
$lat=45.97;
$long=10.08;
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";
?>

Infine per far eseguire lo script, scatto.sh ad intervalli regolari sarà sufficente richiamarlo dalla funzione di crontab;
esistono parecchi modi per ottenere l'operazione, personalmente ho fatto nel modo seguente:
digitare sudo crontab -e 

Si aprirà la schemata dell'editor nano e inseriamo dopo l'ultima riga il seguente codice:

15,30,45,00 * * * *    /home/pi/./scatto.sh
con queste impostazioni, come nel mio caso, la fotocamera scatta ogni 15 minuti cioè al 15°, al 30°, e al 45°, ed al 00° minuto di ogni ora.

Ho altri script se a qualcuno puo' interessare tipo: la gestione delle foto del giorno e che in pratica salva la foto della webcam ogni ora, e rinominandola con ora e minuti per poi inviarla al proprio sito.  Idem per creare la cartella ogni giorno con data e orario per creare un archivio da conservare. 

Questo è  tutto:vi auguro buona sperimentazione, ricordo che se avete bisogno di qualche ulteriore delucidazione io sono disponibile e  potete contattarmi dalla pagina "Contatti"

Alcune foto della realizzazione

raspberry cam carbonera2

raspberry cam carbonera1
I vari componenti della realizzazione

Questo sito utilizza i cookie per migliorare la navigazione dell'utente. Navigandolo accetti.