Awareness of severe weather hazards can save lives. The National Weather Service and their many special divisions such as the Storm Prediction Center do a great job of providing severe weather forecasting and detection. Television and radio stations, web sites, and other media help convey this information to the general public. But unless you're watching, listening, or surfing when the information comes out, you may not be aware of it. The goal of StormSiren is to try and help fill that gap.
StormSiren is a personal severe weather monitoring tool that communicates information from National Weather Service issued bulletins on potential and imminent hazardous weather. The program is designed to run via a scheduling program (such as cron or the windows task scheduler) and scan the NWS Interactive Weather Information Network for watches and warnings affecting user specified locations. When such bulletins are detected, the program sends a concise summary of the alert to one or more devices via SMTP, such as a pager, SMS capable wireless phone, or standard e-mail account. The summaries are designed to fit within a 160 character display, and contain the type of hazard, the affected counties and cities defined by the user, and the issue and expiration times of the bulletin.
StormSiren was first developed in late summer of 2002. It was released under the GNU Public License in February 2003, and underwent several improvements over the course of the year. By the end of the 2003 severe weather season, StormSiren had proven itself as stable, and in February 2004, version 1.0 was officially announced.
This simple program is written in the Python programming language. It has been developed and tested under Python version 2.2, though earlier versions of the language will likely work as well. It has been tested on a number of platforms, including Linux, Solaris 2.8, OS/2 Warp, Windows 2000, and Windows 98. It can send messages to any device with an e-mail address, such as a text pager, an SMS capable wireless phone, or a standard e-mail account. Pagers and cell phones are sent the concise summary, while standard e-mail addresses receive the full text of the NWS bulletin.
StormSiren uses public domain data from the Interactive Weather Information Network, a service of the National Weather Service. The National Weather Service has some of the best weather information on the net. A great place to start is the NWS site at www.weather.gov.
StormSiren is released under the GNU General Public License.
You can download StormSiren from the StormSiren SourceForge Project Site.
To run this program, you will need have a Python interpreter installed on your system. Most current Linux distributions come with one or more Python interpreters already installed. If you are running a different operating system, your mileage may vary. If you do not have Python on your system, you can download a version for your platform from www.python.org.
Installation is about as simple as it gets. Just unzip/untar the archive and move the StormSiren.py executable script to where ever you think is a good place. It is helpful but not necessary to put it somewhere in your path. For Windows, you might create a folder like c:\Program Files\StormSiren for the program. For Unix systems, you can put it in your home bin directory for personal use, or someplace like /usr/local/bin for multi-user access. The program writes configuraton, state, and optional log data to user specific directories.
The first time you run StormSiren, it will see that you have no configuration file and will enter a wizard mode. It will then ask you for information such as the e-mail addresses and types of devices you would like to recieve notifications on, and what states/counties/cities you wish to include in your scan. Note that cities are sometimes specifically listed in NWS bulletins, for example if a tornado is headed right for your town, but most of the information is issued at the county level.
Once you have run a wizard session, it will write out your settings to a configuration file in the StormSiren data directory. You can then manually edit the configuration file with a text editor if you so desire. To cause the wizard to run again, delete or rename your existing configuration file.
After you've completed your configuration, manually run the program
from the command line with the -testpage directive. This
will cause StormSiren to send a test notification to all
the devices you specified.
Examples:
<path>/StormSiren.py -testpage<interpreter-path>\python.exe
<path>\StormSiren.py -testpage
To run the program, you'll have to kick it off from a scheduler on a regular basis. I typically have StormSiren run every five minutes. Since there are a number of different types of schedulers for different operating systems, I'm not going to try and cover them all. Your platform specific documentation (man pages, help files) should tell you how to schedule a program.
4,9,14,19,24,29,34,39,44,49,54,59 * * * *
/usr/local/bin/StormSiren.pyYou'll need a persistent internet connection to run StormSiren every five or ten minutes or so. If you use broadband such as a cable modem, you've probably got an always on connection. Another option is to run it on a PC at work if your office has internet access (and you get the permission of your IT department or manager). You could run it as a service for a small company or a department by using its multiple device capability and having it scan the county where the office is located, or a set of counties for a multi-county metropolitain area. I haven't tested with more than five device addresses at a time, but it should scale fairly well. I typically run with a three device configuration, my pager, my cell phone, and my wife's cell phone, scanning for three counties.
I live in Minnesota, a state with fairly frequent occurances of severe weather, including tornados. While I like to tease my wife about moving to Tornado Alley, we get plenty of action here as it is. In 1998, a tornado walked up a major street only half a mile away from my office. While the tornado didn't directly affect us, I had over a thousand dollars worth of hail damage to my car. At least we have a warning system at the office. However, I live in a geographically large bedroom community with no emergency sirens. My wife was concerned about this early on, and we started to brainstorm about how we could compensate for this. Weather Radios are probably the best resource, but they aren't cheap. We bought one anyhow, but we don't get very good reception from our house.
The next thing I thought of was to use my pager. Most TV station web sites offer subscriptions to e-mail alerts for various news events, including storm alerts. That was a good start, but not entirely satisfactory. Sometimes the alerts were quite timely, but other times it seemed like I wasn't getting any weather alerts even when we were under a severe weather warning. Modifying the configuration was difficult as well, as I found out the news station was subscribing to a service from another vendor. I don't think I ever did get to a place where I could modify the configuration. I could only unsubscribe. There was also a concern about privacy. I had no way of knowing whether the TV station or the third party vendor would resell my address for advertising purposes, which would be really awful on a pager. And finally, the messages were usually truncated. I could usually tell the type of alert (I.E. severe t-storm or tornado), but not whether it was a warning or a watch. It appears that the service to which I subscribed sent the entire text of the NWS bulletin, so naturally things got truncated when going to a 160 character display.
My big inspiration came in July 2002 when our area was hit by some intense storm cells. I was standing out in my yard watching the rolling clouds. I stood there transfixed, much like a deer caught in a car's headlinghts, as the low, dark clouds above me suddendly became a menacing green and began to rotate. Of course I should have gone inside right then, but I couldn't pull myself away. The clouds slowly moved north, and so I went back inside where my wife informed me that the TV news had shown potentially tornadic, doppler radar indicated rotation right above us while I was out there. Wow. I started researching tornadoes and severe thunderstorms shortly thereafter, and soon stumbled upon the NWS Interactive Weather Information Network. Being a programmer, I realized I could scan and parse the information presented in those bulletins, and use it to send short, meaningful messages to my pager that included the the type of alert, the affected counties, and the issue and expiration times for the bulletin.
For the remainder of the 2002 thunderstorm season, a series of iterations of StormSiren successfully detected and paged me on every severe thunderstorm and tornado watch and warning issued by the National Weather Service for the three counties I wanted to watch. I really knew I'd created something useful when I received a page on September 10, 2002 at 12:16 AM. It was a tornado warning for our County. While this wasn't a particularly strong tornado, it was significant because tornadoes after midnight in September are extremely rare in Minnesota. Thanks to StormSiren, we were able to safely wait out the storm in the basement.