The weather station I use is a wireless, solar-powered Davis Monitor II. It’s been mounted on my roof here in Tualatin, Oregon since October 2000, and I’ve been collecting data almost continuously since then. There is a small console in my house that receives the data in real-time from the wireless transmission from the actual weather station. The console is plugged into my web server as well as plugged into a UPS (Unlimited Power Supply). This guarantees that I should not lose any weather data, even if power is knocked out for several days. The console would continue to collect data, and when power was restored the data would be available on the web site.
The weather software I use is called WeatherLink from Davis Instruments, currently version 5.7a. It is responsible for pulling the data from the console down to the computer it’s running on, as well as generating all the graphs and reports you see on the various pages. It also generates files from “templates”. It has built-in tags for various weather information, and periodically it merges a template with the actual data. For example, there might be a tag called HiDailyTemp. If I have that tag in a template, when the processing occurs, the software will replace the tag with the actual value for the HiDailyTemp, and save the file to the directory of my choosing. I have created several templates for my particular needs.
I am running Windows Server 2003 and IIS as my web server. I am also running SQL Server 2005 as a database storing historical weather data. WeatherLink uses a proprietary data structure that is almost impossible to query. So I created a database to and imported all the historical data into a SQL Server database.
The web site was originally designed using ASP.NET 1.1, and was converted to ASP.NET 2.0 in early 2007, primarily so I could take advantage of AJAX and master pages. All the programming is done in VB.NET.
I run several utilities to help everything work smoothly and automatically. Some I wrote myself, some are 3rd party and/or shareware.
First off, I have a dynamic IP address, since I don’t really want to pay extra for a static IP address. To get this to work properly so user can get to my site even when the IP address changes, a couple of utilities come into play. First off, my site is registered with ZoneEdit. They provide a free service for personal user running a dynamic IP site. Then, I run a shareware utility called DirectUpdate. This utility runs on my server, and every minute or two connects to an external site to determine what my current IP address is. If it changes, DirectUpdate automatically connects to ZoneEdit and changes my settings there. So even though my IP address doesn’t change very often, any time it does there shouldn’t be more than a minute or two before users can get to my site again. It’s a very handy combination that works great.
For the forecast I use ftp to connect to the National Weather Service, and every 15 minutes I download the current forecast to a text file. My ASP.NET page processes the file to make it look a little more readable.
For weather watches and warnings, I connect to the National Weather Service on the fly. So each time a page is accessed, I connect to their site and check to see if there are any warnings. That’s not entirely true, to help performance I use the caching functionality of ASP.NET, so I don’t necessarily access the NWS information every single time.
For the NOAA reports, I wrote another simple utility. WeatherLink automatically saves a file for the current month and year. I wrote a utility that runs right at midnight on the first of each month to grab that file and rename it so I can automatically archive these reports. I could always have regenerated these reports manually, but this is one more automation feature I have incorporated so that the site runs virtually by itself.
Finally, because WeatherLink lacks certain features that I desired, I found a pretty cool workaround. For example, WeatherLink does not provide monthly highs and lows for my particular weather station. It was frustrating, because the data was all there in the proprietary database, I just couldn’t easily get at it. So I created a database in SQL Server, and loaded all the historical data. Then I created a template that captured every piece of data that gets generated every 10 minutes. This template is actually an xml file. Then I wrote a VB.NET utility that runs continuously in the background. Each time it detects that the file has changed, it imports the xml file into my SQL Server weather database. Now that the data’s in there, I can write my own queries and reports using standard SQL and stored procedures. The page Custom takes full advantage of that, all the data you see on that page is coming from SQL Server, not from WeatherLink.
I also run a program called SmarterStats to analyze my web logs and traffic. It also is free for personal users, and does a reasonable job of presenting all kinds of information about visitors to the site. Perhaps the most interesting feature is seeing what search phrases were used to find the site. Sometimes I’m amazed at the search terms used that end up pointing to my site.
Lastly, the .Info domain. I spent a long time trying to find a good domain name with a .com extension. Eventually I realized that was almost impossible, and I could get much better domain names using the .Info suffix. Which probably makes more sense anyway since I am not a commercial site, and the .com extension is intended for commercial sites. the only problem is some novice users are unaware that there are other suffixes besides .com, and they get confused when I tell them my site name.