Page 1 of 2

My Custom Webcam

Posted: Tue 01 Apr 2014 3:07 pm
by W2SWR
Weather cam project
Image Image

I have created a weather cam that runs on a Raspberry PI mini PC and a Logitech HD C270 webcam that is overlay’ed with the current observations via Cumulus running on another (windows) pc.

These are more like notes than instructions.
YOU NEED TO KNOW; How to use wheezy linux (debian), How to set up Cumulus. to understand my instructions. Don’t ask me, google everything as I did.

This project requires the following:
Windows pc running Cumulus.
A web host with FTP capabilities to host your image and files.
A Raspberry Pi mini computer.
A webcam that successfully operates with the Raspberry PI (the C270 is plug-n-play)

Here is how I did it;
On the PI I installed:
fswebcam
imagemagick
libav-tools
ncftp

On the windows pc in C:\Cumulus\web\ I created a file called “overlay.sh”. This file needs to be processed by cumulus (see: cumulus help) and FTP to your web host in realtime mode.
Here it the script:

Code: Select all

#!/bin/sh
sleep 05
cd /home/pi/weathercam/
#places the icons on the image
composite -geometry +4+260 gauges.png rear.jpg \
rear3.jpg
#adds the trend arrows for temp and barrowmeter.
composite -geometry +129+282 <#temptrendtext>.png rear3.jpg \
rear2.jpg
composite -geometry +140+400 <#presstrendenglish>.png rear2.jpg \
rear4.jpg
#add the current readings
convert -size 75x20 rear4.jpg -pointsize 25 \
-draw "text 47,302 '<#temp>°F'" -fill white \
-draw "text 45,300 '<#temp>°F'" -fill black \
-draw "text 47,332 '<#hum>%'" -fill white \
-draw "text 45,330 '<#hum>%'" -fill black \
-draw "text 47,362 '<#wspeed> mph'" -fill white \
-draw "text 45,360 '<#wspeed> mph'" -fill black \
-draw "text 47,392 '<#wdir>'" -fill white \
-draw "text 45,390 '<#wdir>'" -fill black \
-draw "text 47,422 '<#press> in'" -fill white \
-draw "text 45,420 '<#press> in'" -fill black \
rear.jpg
sleep 3
./upload.sh
On the Raspberry PI, in the folder /home/pi I created a folder called weathercam. Then I created three files called mov.sh” , “runget.sh” and “upload.sh”. All files made as executable. Here is what I entered into the files:

Code: Select all

#runget.sh
#!/bin/sh
cd /home/pi/weathercam/
fswebcam -c /home/pi/weathercam/fswebcam.conf
wget http://host/path/to/your/overlay.sh
chmod +x overlay.sh
sleep 2
./overlay.sh

Code: Select all

#upload.sh
#!/bin/bash
rm overlay.sh*
ncftpput -t 30 -u username@yoursite.com -p password  yoursite.com / /home/pi/weathercam/rear.jpg
cp /home/pi/weathercam/rear.jpg /home/pi/weathercam/image.jpg
#If you have a weather underground PWS FTP account, then remove # from below.
#sleep 2
#ncftpput -y -t 60 -u yourCAM1 -p password webcam.wunderground.com / /home/pi/weathercam/image.jpg
sleep 2 
rm rear2.jpg 
rm rear3.jpg 
rm rear4.jpg 
rm image.jpg 
mv rear.jpg /home/pi/weathercam/images-today/0$(date +%H%M).jpg
 

Code: Select all

#mov.sh
#!/bin/bash
 cd /home/pi/weathercam/images-yesteday 
rm *.jpg 
cd /home/pi/weathercam/images-today 
cp -fr *.jpg /home/pi/weathercam/images-yesterday/ 
sleep 5 
a=1 
for i in *.jpg; do 
new=$(printf "%04d.jpg" ${a}) #04 pad to length of 4 
mv ${i} ${new} 
let a=a+1 
done 
avconv -r 10 -i %04d.jpg rear.mp4 
sleep 3 
ncftpput -DD -t 30 -u username@yoursite.com -p password  yoursite.com / /home/pi/weathercam/images-today/rear.mp4 
rm *.jpg

Another file called “fswebcam.conf” needs to be created to drive the camera. Remove the ## to use other options:

Code: Select all


device /dev/video0 
resolution 640x480 
##set brightness=52% 
##set contrast=15% 
##set saturation=19% 
font /usr/share/fonts/truetype/freefont/FreeSansBold.ttf:18 
##overlay /home/pi/weathercam/your custom logo.jpg 
title "Hometown, USA." 
subtitle "Looking Northwest" 
timestamp "%m-%d-%Y %H:%M (%Z)" 
##info "additional info" 
jpeg 90 
save /home/pi/weathercam/rear.jpg  
palette MJPEG


Save these images to your weathercam folder:
http://w2swr.com/downloads/index.php?fo ... FtLWZpbGVz
gauges.png Falling.png Rising.png Steady.png

Now create two subfolders in /home/pi/weathercam/
images-today
images-yesterday


Last thing you need to do is edit your PI’s crontab and add the following:

Code: Select all

# Builds and uploads an image every 5 mins on the fives.
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /home/pi/wundercam/runget.sh
#Builds and uploads a timelaps mp4 every night.
56 23 * * * /home/pi/wundercam/mov.sh
#dumps the trash each night
41 23 * * * rm /home/pi/.local/share/Trash/files/*
41 23 * * * rm /home/pi/.local/share/Trash/info/*
I hope you were successful.
Mike, W2SWR
Image

Re: My Custom Webcam

Posted: Sat 08 Nov 2014 5:07 pm
by Bridger
Mike, thanks for posting your scripts, they have encouraged me to have a go myself. I had no experience with the Raspberry Pi, or coding, so it has taken a little time and much Googling.
I have made a couple of changes to your scripts with apologies if they are not as elegant as they could be.
To try and preserve the Pi's SD card my camera operates only during daylight hours using <#isdaylight> webtag.

The file daylightget.sh is run from cron at 5 minute intervals.

Code: Select all

#daylightget.sh
#!/bin/sh
#gets daylight.sh
cd /home/pi/weathercam/
rm daylight.sh*
wget http://www.host/path/daylight.sh
chmod +x daylight.sh
sleep 2
./daylight.sh


Then this if it's daylight it runs runget.sh.

Code: Select all

#daylight.sh
#!/bin/sh
#checks Cumulus for daylight
daylight=<#isdaylight>
if [ $daylight -eq 1 ]
	then
	./runget.sh
fi
I am also using the Humidity field in the image overlay to display the last hour's rain using <#rhour>, it displays relative humidity when there has been no rain in the last hour.

Code: Select all

#!/bin/sh
sleep 05
cd /home/pi/weathercam/
#is it raining?
a="0.0"
rain="<#rhour>"
raining="<#rhour>mm in last hour"
notraining="<#hum>%"
if [ "$rain" = "$a" ]
then
	itsraining=$notraining
else
	itsraining=$raining
fi
#places the icons on the image
composite -geometry +4+260 gauges.png rear.jpg \
rear3.jpg
#adds the trend arrows for temp and barometer.
composite -geometry +125+282 <#temptrendtext>.png rear3.jpg \
rear2.jpg
composite -geometry +155+400 <#presstrendenglish>.png rear2.jpg \
rear4.jpg
#place logo in bottom rh corner.
#composite -geometry +540+340 sign.png rear4.jpg \
#rear5.jpg
#add the current readings
convert -size 75x20 rear4.jpg -pointsize 20 \
-draw "text 47,302 '<#temp>°C'" -fill white \
-draw "text 45,300 '<#temp>°C'" -fill black \
-draw "text 47,332 '$itsraining'" -fill white \
-draw "text 45,330 '$itsraining'" -fill black \
-draw "text 47,362 '<#wspeed> mph'" -fill white \
-draw "text 45,360 '<#wspeed> mph'" -fill black \
-draw "text 47,392 '<#wdir>'" -fill white \
-draw "text 45,390 '<#wdir>'" -fill black \
-draw "text 47,422 '<#press> hPa'" -fill white \
-draw "text 45,420 '<#press> hPa'" -fill black \
rear.jpg
sleep 3
./upload.sh

The camera is installed in a stripped out security light (about £4 from Screwfix) and mounted on the garage wall. The Raspberry Pi is in the garage and accessed via WiFi.


Image Image
Thanks again. Peter

Re: My Custom Webcam

Posted: Sat 08 Nov 2014 6:24 pm
by Sadgit
I love this place. I am looking to do this on my intel NUC running windows 7, but just wanted to say thanks, gives me some ideas about the overlay.

Re: My Custom Webcam

Posted: Wed 08 Apr 2015 2:44 pm
by RussP
Just like to thank W2SWR and Bridger for sharing the scripts for their set-ups.

I've got it up and running on a Pi2 with a Logitech c270

The changes I've made :
1. I'm also passing and displaying the temperature from my pond, so had to modify overlay.sh and gauges.png

2. I'm storing the /images-today, /images-yesterday, /movies folders on a USB pen drive instead of on the SD card. The scripts I've left on the SD card

3. After the .mp4 has been made I copy it to a folder called movies and give it a file name as that days date. That way I keep a file for each day.

Currently have a problem where fswebcam has an error after x period of time, and the only way to get it working again is to unplug/plug back in the camera or reboot the Pi. So for the time being I've just created a cron job to reboot the Pi every 30 mins.


To Do.
1. Decide on final position of the camera. I have a broken halogen light similar to the one Bridger shows, so may do similar. Currently points out my bedroom window.

2. merge the individual daily videos to create a single monthly video, and then a yearly video.

3. Get a second camera and have that pointing at my pond, and duplicate the scripts to do the same for this camera.

Image

Re: My Custom Webcam

Posted: Sun 26 Apr 2015 5:03 pm
by KetteringUK
Thanks for sharing - Using Logitech 9000 with a few mods on the scripts

Image

Looking forward to trying Cumulus MX on the Pi2

Re: My Custom Webcam

Posted: Thu 01 Oct 2015 9:23 am
by philpugh
What a great site. Just started playing with my RasPiCam and not satisfies with the crude overlays I have managed so far. Will be trying this out soon. Also love the idea of the unused security light housing. Have a couple lying around as I have replaced them with LED security lights.

Re: My Custom Webcam

Posted: Thu 01 Oct 2015 5:13 pm
by philpugh
OK. Another method using a Raspberry PiCam. Based on the original post (thanks Mike/W2SWR).

My earlier attempts used Python and I decided to continue down this path. At present I am not too interested in keeping the images or making a time-lapse movie - but these can be added later so I based the processing on Mike's "overlay.sh" code - which seemed to do all the processing I needed.

I have a RPi 2 running CMX, Apache and MySQL and second RPi 2 with a PiCamera on it. I also run a NAS server onto which I store the SQL tables and use as a file storage for other stuff.

The outline is CameraPi takes an image every minute, does some simple image manipulation with ImageMagic as I want a thumbprint image for a link of my main weather web page. The processed overlay.sh is downloaded from the NAS box and called from the Python program which adds a simple opaque box area and writes CMX data onto the image.

There are three files.

1/ camdataT.txt is the template file processed as a realtime file by CMX to produce camdata.sh (my version of Mikes original overlay.sh)

2/ overlayphoto.py which is the Python script. This is run on CameraPi every minute as a cron task. It calls camdata.sh to do the majority of the image processing. It produces an output image weather.jpg at 70% quality as I have a very slow internet connection.

3/ bottom.png is a simple shaded box area so that the data can be read more easily - created on PC by Inkscape.

All three - with my site particulars removed, are in the attached rar file. If you are really desperate have a go!

Clicking on my signature banner should take you to my webserver - but I host it myself on the CMX Pi system and we have one of the slowest broadband connections imaginable - 0.5Mbps download/0.25Mbps upload on a good day!! In a couple of years we may be able to get 2Mbps we are told!! So be patient when browsing!

Re: My Custom Webcam

Posted: Fri 30 Oct 2015 10:42 pm
by jules
i would like to do something similar, but before getting a logitech webcam with raspberry pi, i need to know if a powered usb hub is needed as well with the c270. i cant see any mention if this.
what other logitech webcams in the mid price range would also work?
thanks

Re: My Custom Webcam

Posted: Wed 04 Nov 2015 2:09 pm
by RussP
I run the c270 (well I did till a redecorated my bedroom, must look at how to set the pi2 up again without cables running across the floor)

I had it running via a powered hub, mainly due to also having a USB stick that I store the c270 images to. I cannot say how reliable it would be just plugged direct to the pi.

One problem I was having was that it would lose the camera from time to time. Sometimes it would be hours then other times after a few minutes of a reboot. Only way to get it back was a reboot. So I had a script to reboot the pi every hour.

Re: My Custom Webcam

Posted: Thu 04 Aug 2016 3:04 pm
by logo9
I'm using a Rpi3b running weewx... I love the overlays but I don't want to run my home (windows) computer full time. Is there any way I can do overlays with just the pi?
Thanks for any info!!!
J


W2SWR wrote:Weather cam project
Image Image

I have created a weather cam that runs on a Raspberry PI mini PC and a Logitech HD C270 webcam that is overlay’ed with the current observations via Cumulus running on another (windows) pc.

These are more like notes than instructions.
YOU NEED TO KNOW; How to use wheezy linux (debian), How to set up Cumulus. to understand my instructions. Don’t ask me, google everything as I did.

This project requires the following:
Windows pc running Cumulus.
A web host with FTP capabilities to host your image and files.
A Raspberry Pi mini computer.
A webcam that successfully operates with the Raspberry PI (the C270 is plug-n-play)

Here is how I did it;
On the PI I installed:
fswebcam
imagemagick
libav-tools
ncftp

On the windows pc in C:\Cumulus\web\ I created a file called “overlay.sh”. This file needs to be processed by cumulus (see: cumulus help) and FTP to your web host in realtime mode.
Here it the script:

Code: Select all

#!/bin/sh
sleep 05
cd /home/pi/weathercam/
#places the icons on the image
composite -geometry +4+260 gauges.png rear.jpg \
rear3.jpg
#adds the trend arrows for temp and barrowmeter.
composite -geometry +129+282 <#temptrendtext>.png rear3.jpg \
rear2.jpg
composite -geometry +140+400 <#presstrendenglish>.png rear2.jpg \
rear4.jpg
#add the current readings
convert -size 75x20 rear4.jpg -pointsize 25 \
-draw "text 47,302 '<#temp>°F'" -fill white \
-draw "text 45,300 '<#temp>°F'" -fill black \
-draw "text 47,332 '<#hum>%'" -fill white \
-draw "text 45,330 '<#hum>%'" -fill black \
-draw "text 47,362 '<#wspeed> mph'" -fill white \
-draw "text 45,360 '<#wspeed> mph'" -fill black \
-draw "text 47,392 '<#wdir>'" -fill white \
-draw "text 45,390 '<#wdir>'" -fill black \
-draw "text 47,422 '<#press> in'" -fill white \
-draw "text 45,420 '<#press> in'" -fill black \
rear.jpg
sleep 3
./upload.sh
On the Raspberry PI, in the folder /home/pi I created a folder called weathercam. Then I created three files called mov.sh” , “runget.sh” and “upload.sh”. All files made as executable. Here is what I entered into the files:

Code: Select all

#runget.sh
#!/bin/sh
cd /home/pi/weathercam/
fswebcam -c /home/pi/weathercam/fswebcam.conf
wget http://host/path/to/your/overlay.sh
chmod +x overlay.sh
sleep 2
./overlay.sh

Code: Select all

#upload.sh
#!/bin/bash
rm overlay.sh*
ncftpput -t 30 -u username@yoursite.com -p password  yoursite.com / /home/pi/weathercam/rear.jpg
cp /home/pi/weathercam/rear.jpg /home/pi/weathercam/image.jpg
#If you have a weather underground PWS FTP account, then remove # from below.
#sleep 2
#ncftpput -y -t 60 -u yourCAM1 -p password webcam.wunderground.com / /home/pi/weathercam/image.jpg
sleep 2 
rm rear2.jpg 
rm rear3.jpg 
rm rear4.jpg 
rm image.jpg 
mv rear.jpg /home/pi/weathercam/images-today/0$(date +%H%M).jpg
 

Code: Select all

#mov.sh
#!/bin/bash
 cd /home/pi/weathercam/images-yesteday 
rm *.jpg 
cd /home/pi/weathercam/images-today 
cp -fr *.jpg /home/pi/weathercam/images-yesterday/ 
sleep 5 
a=1 
for i in *.jpg; do 
new=$(printf "%04d.jpg" ${a}) #04 pad to length of 4 
mv ${i} ${new} 
let a=a+1 
done 
avconv -r 10 -i %04d.jpg rear.mp4 
sleep 3 
ncftpput -DD -t 30 -u username@yoursite.com -p password  yoursite.com / /home/pi/weathercam/images-today/rear.mp4 
rm *.jpg

Another file called “fswebcam.conf” needs to be created to drive the camera. Remove the ## to use other options:

Code: Select all


device /dev/video0 
resolution 640x480 
##set brightness=52% 
##set contrast=15% 
##set saturation=19% 
font /usr/share/fonts/truetype/freefont/FreeSansBold.ttf:18 
##overlay /home/pi/weathercam/your custom logo.jpg 
title "Hometown, USA." 
subtitle "Looking Northwest" 
timestamp "%m-%d-%Y %H:%M (%Z)" 
##info "additional info" 
jpeg 90 
save /home/pi/weathercam/rear.jpg  
palette MJPEG


Save these images to your weathercam folder:
http://w2swr.com/downloads/index.php?fo ... FtLWZpbGVz
gauges.png Falling.png Rising.png Steady.png

Now create two subfolders in /home/pi/weathercam/
images-today
images-yesterday


Last thing you need to do is edit your PI’s crontab and add the following:

Code: Select all

# Builds and uploads an image every 5 mins on the fives.
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /home/pi/wundercam/runget.sh
#Builds and uploads a timelaps mp4 every night.
56 23 * * * /home/pi/wundercam/mov.sh
#dumps the trash each night
41 23 * * * rm /home/pi/.local/share/Trash/files/*
41 23 * * * rm /home/pi/.local/share/Trash/info/*
I hope you were successful.
Mike, W2SWR
Image

Re: My Custom Webcam

Posted: Tue 22 Nov 2016 9:51 pm
by logo9
I'm using a Rpi3b running weewx... I love the overlays but I don't want to run my home (windows) computer full time. Is there any way I can do overlays with just the pi?
Thanks for any info!!!
J

EDIT: I got it to run on a Rpi3b as a stand alone (Pi only) program. Lots of head scratching for a non-programer!

https://www.wunderground.com/webcams/JW2030/3/show.html

Re: My Custom Webcam

Posted: Tue 25 Jul 2017 10:35 am
by Peristeri Center
Hey all.

I see it's an "old" topic but i like this overlay. Unfortunately the link to download png images, is "dead" :groan:
Can someone direct me on an active link, for download that images?

Thank's in advance.
N.B.

Re: My Custom Webcam

Posted: Wed 26 Jul 2017 8:43 am
by Bridger
Are these what you are looking for?

Re: My Custom Webcam

Posted: Wed 26 Jul 2017 10:46 am
by Peristeri Center
YES
I look for that. I didn't a reply !
Thank you Peter.

Re: My Custom Webcam

Posted: Wed 26 Jul 2017 7:15 pm
by Peristeri Center
Thank you, Peter, soooooo.......much.

Now is up and running.

http://peristeri.altervista.org/webcam.htm