Realizzazione di una webcam da esterni con Raspberry Pi

Realizzazione di una webcam da esterni con Raspberry Pi

Qualche mese fa ho realizzato con il Raspberry Pi delle semplici webcam che inviano su server FTP delle immagini (scattate con il camera module), aggiungendo anche delle scritte e loghi in overlay.

A differenza della webcam che ho montato nella mia stazione meteo, questa non richiede software particolari.

La configurazione software è veramente semplice: un’ installazione standard di Raspbian su SD, con un script che si prende in carico tutto il lavoro (ovvero: scattare la foto, aggiungere le informazioni sopra, inviarla su FTP e scrivere dei log)

Lo script (che trovate in fondo) può essere salvato nella cartella home ed eseguito ad intervalli regolari tramite Cron, per esempio ogni 5 minuti con un’impostazione come questa:

*/5 * * * * /home/pi/TakeAndUpload.sh

Che ricordo va inserita digitando “crontab -e” nel terminale.
Gli unici requisiti per il suo funzionamento dello script sono i seguenti:

mkdir /home/pi/images
sudo apt-get install ftp imagemagick

La configurazione è presente in cima all script (nella sezione CONFIGURATION) ed è abbastanza autoesplicativa.

Per l’utilizzo in questione il Raspberry è stato inserito in una scatola stagna di alluminio (di quelle utilizzate per videosorveglianza) che è anche riscaldata tramite una resistenza posta internamente di fronte al vetro.
Questo accorgimento oltre a risolvere il problema della neve e ghiaccio, evita anche l’appannamento del vetro stesso.

La webcam è stata montata in una posizione molto a limite dal punto di vista ambientale, nei pressi del rifugio “La Capanna” sul Monte Falco nell’Appenino Tosco-Romagnolo,  a 1488 m ! Ed è in funzione senza alcun problema da quasi un anno a questo indirizzo: http://www.webcamcampigna.it/

 

#!/bin/bash

# This script takes a picture with Raspberry Camera, adds text/logo overlays and sends it to FTP server.
# It creates also a logfile in the same folder and sends a status.txt file to server.

# REQUIREMENTS:
# sudo apt-get install ftp imagemagick
# mkdir /home/pi/images

# V0.2
# (C) Alessandro Grechi - http://grechi.it

# Configure the vars in the following section

###############################################
##############  START CONFIGURATION  ###############
###############################################

#IMAGE SETTINGS
ARGS="-vf -hf -w 1024 -h 720 -q 50 -n -ex auto"
TEXT_TOPLEFT=" Raspbery Pi Camera Script"
TEXT_TOPRIGHT="Date: ${dateTaken}  "
TEXT_BOTTOMLEFT="http://grechi.it"
TEXT_BOTTOMRIGHT="(c) Alessandro Grechi  "
LOGO_TOPRIGHT="/home/pi/images/logo.png"

#FTP SETTINGS
HOST="ftp.website.it"
USER="user"
PASS="password"
DIR="webcam"

#DATE AND LOG
dateTaken=$(date "+%d/%m/%Y - %H:%M")
now=$(date "+%H%M")
today=$(date "+%d%m%Y")
logfile="/home/pi/images/webcam_$today.log"

###############################################
##############  END CONFIGURATION  #################
###############################################

cd /home/pi/images
echo "###################################" >> $logfile
echo "starting script $dateTaken" >> $logfile
echo "Taking a Picture" >> $logfile

/opt/vc/bin/raspistill $ARGS -o /home/pi/images/image.jpg >> $logfile

echo "Convert and add overlays" >> $logfile

/usr/bin/convert /home/pi/images/image.jpg \
		  -gravity NorthWest -background Blue -splice 0x18 -pointsize 15 -fill yellow -annotate 0 '${TEXT_TOPLEFT}' \
          -gravity NorthEast -fill yellow -annotate +0+0 '${TEXT_TOPRIGHT}' \
          -gravity SouthWest -background Blue -splice 0x18 -pointsize 12 -fill yellow -annotate 0 '${TEXT_BOTTOMLEFT}' \
          -gravity SouthEast -fill yellow -annotate +0+0 '${TEXT_BOTTOMRIGHT}' \
		  -gravity NorthEast $LOGO_TOPRIGHT -geometry +5+19 -composite \
		 /home/pi/images/image_$now.jpg >> $logfile 2>&1

cputemp=$(/opt/vc/bin/vcgencmd measure_temp)
myip=$(curl --connect-timeout 30 http://ifconfig.me/ip)
uptime=$(uptime)
echo "LastUpdate: $dateTaken | CPU $cputemp | IP: $myip | uptime: $uptime" > /home/pi/images/status.txt

echo "Upload image_$now.jpg to FTP" >> $logfile

# Start the FTP client

ftp -inv $HOST << EOF >> $logfile
user $USER $PASS
cd $DIR
put image_$now.jpg
put status.txt
bye
EOF
echo "Remove image_$now.jpg" >> $logfile
rm -f /home/pi/images/image_$now.jpg
echo "Ok"

Qui ho postato anche uno script PHP (Smart Sort Gallery) per visualizzate le foto inviate su una pagina web.

A proposito Alessandro

Ingegnere delle Telecomunicazioni con propensione al web2.0 ed il pallino della tecnologia; toscano & casentinese, vivo a Firenze