Best Webcam for Weather Underground is the One You Build
I can’t tell you how amazing it was to finally see that first image uploading to wunderground.com on Feb 3rd 2021. It’s been a long time of trying with no success for many people, if you’re camera isn’t working you’re not alone. This guide will show you how to make a webcam for weather underground that will upload at set intervals.
Here’s the webcam’s link:
For some reason, at the time of writing this WU has the date set to one day too far ahead so you might get an error saying there’s no data for this date. Use the calendar to pick the correct day or to see my first test photo use this link: https://www.wunderground.com/dashboard/webcam/wu-0212083/5/2021-2-4
You can set the end of the link to the right date, hopefully the recognize this issue one day and fix it. Why not have a direct link that takes you to the camera’s most recent photo?
The camera location is in my back yard running off the wifi and a solar panel, the creek never floods or anything but I always wanted to have a camera to watch the ducks and to just keep an eye on the water level.
Another complaint that I have is that WU will only update your photo on the server every 15 minutes. So if you have your camera set to update ever 3 minutes you’ll end up wasting valuable solar power. I’ve set this project to update every 14 minutes.
5v step up
18650 battery charge controller
Wiring up the Webcam Power Source
The esp32-cam needs 5v to operate. The 18650 battery is between 4.2v and 2.9v so we have to step it up. I’ll start at the battery holder with the obvious. Make sure you have the battery with the positive end at the top/red wire and the bottom is at the black wire end. During the soldering process keep the battery out of the holder please.
Battery Box to Charge Controller
On the charge controller you’ll see pins marked B+ and B- where you will attach our battery holder. It’s the two pins on the inside, on the opposite end of the microusb port. The charge controller will cut off the connection for you if the voltage gets too low. Also VERY IMPORTANT this little unit will not work until a batter is attached and you connect the micro usb port to a power source, I’ve no idea why but it’s like an ON function or something.
Solar Cell to Charge Controller
Connect the positive of the solar cell to the end of the board where the micro usb is and it’s labelled with only a + and a – symbol. This is the input end of the board. If you’re only using one solar cell you don’t need a diode to protect the solar cell. The charge controller will not allow voltage from the battery through to the cell, but the solar cell can charge the battery.
Charge Controller to Step Up 5V
On the end where our battery is attached there are two pins left on the outside. The labels are OUT+ and OUT- which again, we put wires from positive to positive. The 5V step up will have IN+ and IN- which is where the charge controller connects to. On the other end of the step up there are 4 little pins and we want the outside ones. The labels are 5V and GND. Leave the D+ and D- empty.
5V Step Up to ESP32-CAM
Connect the 5V on the step up to the 5V on the ESP32-cam. Connect the GND to GND.
Double check your connections and then plug a battery into the holder. You’ll need to plug that microUSB on the charge controller into a power source before this will work.
Software You’ll Need for This Project:
The Script to Upload onto the ESP32-CAM
Library: ESP32ftp – I’ll explain the install on this below
Creating Your Weather Underground Account and Camera
Sign up for wunderground.com as a free account. When you log in, look for “My Profile” at the top right corner and click that once. Then click on “My Devices”.
Click add new device. Under “outdoor webcam” select “FTP”
The next section will be for setting the location of the webcam on the map. You can enter your address if you want or click on “manual”. If you opt for the “manual” function you can grab the locator and move it where you want. Zoom into the map to where your camera will be sitting in the real world. Click the map once to make the marker go to that location. You’ll want to pick something fairly close to where your camera is but maybe not TOO close incase of snoopers.
Give your device a name. Then give your device a camera type, I just write in ESP32-CAM it doesn’t really matter. Associated PWS is if you have a weather station nearby. If not, select none.
Click accept and next/done.
On this next page that comes up you’ll have some crucial information given to you. There are two things you need, the rest has been taken care of for you in the code.
Device ID and Upload key are the two things you’ll want to write down. We need to place that into the script code that you’re going to upload to your new camera. This tells WU which camera to send these photos to.
If You’ve Never Installed Something with Arduino Before:
If you’re brand new to this I’ll walk you through the basic steps.
Download and install the arduino IDE program, it’s free but please make a donation to them if you can. They’re powered by awesome people like you.
Ok, first things first. Getting Arduino IDE ready. From here on I’ll just call it IDE.
Click on File and then preferences in IDE, then highlight everything in the Additional Boards Manager Url box at the bottom.
Delete what’s there and put these two lines in its place.
The first line is the original with a comma at the end and the new one to make sure you get all of the available libraries. Click OK
Now click Tools at the top, then board, then boards manager.
Do a search for “esp32” and install the board by Espressif.
Next click tools at the top and then manage libraries.
In the search box type in “esp32 ftp”. The exact library you’re looking for is “esp32_ftpclient”.
Click install and then click close.
Now click File and then save as.
When prompted for the file name just type in ESP32-CamFtp. If it asked you to save it into another folder click ok to do so. You can name it what ever you want.
Highlight everything that looks like code on the page, there will be a few lines of code as your first file opens for you. Delete all of the code on the page, you want a perfectly clean page. Then open this txt file: Click Here (It’s the same link as above). Highlight everything in that text file. It might open on your screen and that’s fine. You can also save it to your computer.
Paste all of that txt file into your new file in IDE and click save.
Editing the Code for This Project
Near the top of the code look for:
const char* ssid = “”;
const char* password = “”;
char ftp_server = “webcam.wunderground.com”;
char ftp_user = “”;
char ftp_pass = “”;
The ssid is the name of the wifi signal you have available for the camera to use, your password goes below that where is says password.
The ftp server is always webcam.wunderground.com which is already in place for you. The user will be the camera “ID” that you wrote down while setting up that camera on wunderground.com and the pass will be the “key”. Here’s an example of how it should look. If you’re new to all this please and need help don’t hesitate to comment below as I’d be really glad to help you out.
const char* ssid = “myhomewifi”;
const char* password = “123456789”;
char ftp_server = “webcam.wunderground.com”;
char ftp_user = “wu-02083CAM6”;
char ftp_pass = “OuOmUxd”;
Once that’s done click save.
We’re ready to hook up the ESP32-Cam to our computer with the FTDI programmer.
On the red ftdi make sure that the jumper near the pins is set to 5v and not 3.3v in the photo above it is set to 5v. The jumper should be on pin 1 and 2 or the left side closest to 5v.
Ground to Ground – black wire
VCC (FTDI) to 5V (esp32-cam) – red wire
TX (FTDI) to U0R (esp32-cam) – green wire
RD (FTDI) to U0T (esp32-cam) – blue wire
GND to Io0 on the esp32-cam like this: – Brown wire
The reason for the jumper in the photo above is to tell the esp32-cam that you want it in the right mode to receive software or a download. In the photo above please ignore the microSD card as this project does not require one.
IMPORTANT: Hook up the FTDI and esp32-cam first and THEN plug the usb cable into the computer. It’s easy to make a mistake while trying to push the wires down. Another thing you need to know is that each time you upload to the esp32-cam you need to hit the reset button on the back next to the 5V pin. It will frustrate you to no end if you forget to hit reset and you try to upload because it needs that reboot after the jumper goes on.
So to restate, connect the esp32-cam and the ftdi first then add the upload jumper, then plug the usb port in. If you do it in that order you do not need to press reset but it’s a great habit to build. Before each upload I check for that jumper and then press reset it’s that simple.
Ok, now we have to tell IDE what kind of board we’re uploading to. Click Tools, then Board, then Esp32 Arduino, then scroll way to the bottom of the list and find “AI Thinker ESP32-CAM”. Click that one.
Now we have to tell IDE which port we’re on. Click Tools, then Port, and select the right port. This can be a pain finding the right port. I like to go to the list of port items and open the list of available ones. Unplug the FTDI and watch what happens in the list. Then plug it back in and you should see one appear in the list. That’s the port you want to select here.
OH BOY! We’re ready to upload!
At the top of IDE there is a check mark in a circle, to the left of that is an arrow pointing to the right. That’s the button you click to send the “script” that we’ve created to the ESP32-CAM. Click it!
In the bottom section you’ll see the process start. You might get some errors and if you do please comment below so I can correct the tutorial if needed I’ll respond right away.
If you don’t get any errors and it uploads, once it’s done you’ll see the percent hit 100 and it’ll say reset.
Take the jumper off the Esp32-cam and press the reset button on the back next to the 5V. With the other wires attached still, you can watch what happens!!
In IDE click tools and then serial monitor. A new window will pop up. You can press the reset button again if you like so you can watch the whole process. You’ll see it connecting to the wifi and sending the photo via the ftp server. You’ll also see any errors in this window if we didn’t do something correctly. It’s very common to have spelling mistakes in the SSID as well as wrong passwords for the wifi.
With any luck you should be able to go to wunderground.com now and see your photo.
Keep in mind that it will only refresh the photo every 15 minutes. It’ll drive you insane if you’re not aware of this thinking the photo isn’t working. Sometimes it skips a photo. Below your photo on the WU website you can see the last time it refreshed.
Please comment below with the location of your camera on WU I would REALLY love to see!
9 replies on “Webcam for Weather Underground With Solar Power”
Hi there ! Feeling a sense of accomplishment….have got my weather station + webcam up and running on the weather underground. You can find it at Tullymet, Saskatchewan. It is the only one lol. My next project will be the motion sensor camera. Many thanks for putting these projects together it has been a lot of fun. All the best.
Very cool. I would love to try this myself. Weather Underground is stopping their webacm services next week, but I’d like this project for other reasons. Do you have a more detailed parts list? I found most on amazon, but what about the battery/holder and the black case itself? Thanks!
Hi Cameron, the other parts I found on aliexpress.
battery holder https://www.aliexpress.com/item/32806159516.html?spm=a2g0s.90423126.96.36.199424c4dIaOKHR
Let me know if you need any help at all with your project! Feel free to post photos here and questions as you do your build.
Hi. Thanks for taking the time to write this how-to. I’ve been, naively, trying to power an Amcrest 1080p IP cam with a home made battery-pack and solar charging system. I have a wood-duck box I want to monitor. The power draw of the Amcrest kills my battery pack before the sun comes up. What is the power draw for the ESP 32 and camera. Or rather, what size powerbank should I use to make it through the night. Thanks again for getting me pointed in the right direction.
Hi, yeah I’ve been there and tried to power something like that camera on solar and it dies within days. The esp32-cam will use about 10% of the power.
Also with the esp32 you can turn it off if you setup sleep modes. You can also write the program on the esp32 so that it takes photos and uploads them to google drive ever 15 minutes or so. That way you can just check the last photos. If you want streaming video you can setup an outside controller like a nano to turn the power off during the night.
I’ve done projects where the camera is only powered up from 9am to 11am and the rest is for recharging the 18650 battery.
Question, are you wanting streaming video or would photos be enough?
Hi. Thanks for the response. Your code snippet ran the first time after adding the ftp libraries. Amazing! Well at least to me. My goal is to have both streaming and ftp. I’d also like to just keep adding images instead of overwriting the one image. I’ve got a 10000mAh power bank, a couple small solar panels and the regulator. I guess I can probably stack the code blocks in Arduino C. I’ve got a background in JS and PHP. So I will start hacking away at the C. Meanwhile any input on your part would be appreciated. Thanks for your time.
let me have a look through my code, there’s one that can upload to a webserver and it displays a gallery of all the images. I’ll test it out and get a page built for that one.
Here check this page out. The camera takes a photo after being triggered by a motion sensor. I’m sure it would be easy enough to get it to just take a shot every few minutes or every 15 minutes instead if that’s preferred.
Hi. Thanks for all your help. I now have the design outlined. I copied a script like the gallery you have — up and running at hour intervals. I wrote a bash script to remove all the photos older than x from of the upload directory. Any ideas on the range of the wifi? Wow. I just found the esp32 has WIFI_PROTOCOL_LR. I spent a couple hours trying to get the http upload script to run over https. Followed a couple tutorials — No way. Instead I created a new http virtual host for the connection. Thinking about it, with your original script, how could I set an hourly, or x, upload with ftp — to avoid banging my head against the https wall. I left the esp32 running all night on my powerbank — power to spare. Now I have to learn to combine streaming and auto upload.