| 1 | <!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en"> |
|---|
| 2 | <html><head> |
|---|
| 3 | <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> |
|---|
| 4 | <meta name="Author" content="Rory McManus"> |
|---|
| 5 | |
|---|
| 6 | <title>StormSiren Personal Severe Weather Alert System</title></head> |
|---|
| 7 | |
|---|
| 8 | <body> |
|---|
| 9 | |
|---|
| 10 | <center> |
|---|
| 11 | <h1>StormSiren Personal Severe Weather Alert System</h1> |
|---|
| 12 | </center> |
|---|
| 13 | |
|---|
| 14 | <h2>Contents</h2> |
|---|
| 15 | <dl> |
|---|
| 16 | <dd><a href="#description">Description</a></dd> |
|---|
| 17 | <dd><a href="#status">Status</a></dd> |
|---|
| 18 | <dd><a href="#technical">Technical Info</a></dd> |
|---|
| 19 | <dd><a href="#license">License</a></dd> |
|---|
| 20 | <dd><a href="#download">Download</a></dd> |
|---|
| 21 | <dd><a href="#installation">Installation</a></dd> |
|---|
| 22 | <dd><a href="#running">Running the Program</a></dd> |
|---|
| 23 | <dd><a href="#motivation">Motivation for StormSiren</a></dd> |
|---|
| 24 | </dl> |
|---|
| 25 | |
|---|
| 26 | <h2><a name="description">Description</a></h2> |
|---|
| 27 | |
|---|
| 28 | <p>Awareness of severe weather hazards can save |
|---|
| 29 | lives. The <a href="http://www.nws.noaa.gov">National Weather |
|---|
| 30 | Service</a> and their many special divisions such as the |
|---|
| 31 | <a href="http://www.spc.noaa.gov/">Storm Prediction Center</a> do a |
|---|
| 32 | great job of providing severe weather forecasting and detection. |
|---|
| 33 | Television and radio stations, web sites, and other media help convey |
|---|
| 34 | this information to the general public. But unless you're watching, |
|---|
| 35 | listening, or surfing when the information comes out, you may not be |
|---|
| 36 | aware of it. The goal of <strong>StormSiren</strong> is to try and |
|---|
| 37 | help fill that gap.</p> |
|---|
| 38 | |
|---|
| 39 | <P><strong>StormSiren</strong> is a personal severe weather monitoring |
|---|
| 40 | tool that communicates information from National Weather Service issued |
|---|
| 41 | bulletins on potential and imminent hazardous weather. The program is |
|---|
| 42 | designed to run via a scheduling program (such as cron or the windows |
|---|
| 43 | task scheduler) and scan the NWS Interactive Weather Information Network |
|---|
| 44 | for watches and warnings affecting user specified locations. When such |
|---|
| 45 | bulletins are detected, the program sends a concise summary of the alert |
|---|
| 46 | to one or more devices via SMTP, such as a pager, SMS capable wireless |
|---|
| 47 | phone, or standard e-mail account. The summaries are designed to fit |
|---|
| 48 | within a 160 character display, and contain the type of hazard, the |
|---|
| 49 | affected counties and cities defined by the user, and the issue and |
|---|
| 50 | expiration times of the bulletin.</p> |
|---|
| 51 | |
|---|
| 52 | <h2><a name="status">Status</a></h2> |
|---|
| 53 | |
|---|
| 54 | <p><strong>StormSiren</strong> was first developed in late summer of |
|---|
| 55 | 2002. It was released under the GNU Public License in February 2003, and |
|---|
| 56 | underwent several improvements over the course of the year. By the end of the |
|---|
| 57 | 2003 severe weather season, StormSiren had proven itself as stable, and in |
|---|
| 58 | February 2004, version 1.0 was officially announced. </p> |
|---|
| 59 | |
|---|
| 60 | <h2><a name="technical">Technical Info</a></h2> |
|---|
| 61 | |
|---|
| 62 | <p>This simple program is written in the Python programming language. |
|---|
| 63 | It has been developed and tested under Python version 2.2, though |
|---|
| 64 | earlier versions of the language will likely work as well. It has been |
|---|
| 65 | tested on a number of platforms, including Linux, Solaris 2.8, OS/2 |
|---|
| 66 | Warp, Windows 2000, and Windows 98. It can send messages to any |
|---|
| 67 | device with an e-mail address, such as a text pager, an SMS capable |
|---|
| 68 | wireless phone, or a standard e-mail account. Pagers and cell phones |
|---|
| 69 | are sent the concise summary, while standard e-mail addresses receive the |
|---|
| 70 | full text of the NWS bulletin.</p> |
|---|
| 71 | |
|---|
| 72 | <p><strong>StormSiren</strong> uses public domain data from the <a |
|---|
| 73 | href="http://iwin.nws.noaa.gov">Interactive Weather Information |
|---|
| 74 | Network</a>, a service of the National Weather Service. The National |
|---|
| 75 | Weather Service has some of |
|---|
| 76 | the best weather information on the net. A great place to start |
|---|
| 77 | is the NWS site at <a href="http://www.weather.gov">www.weather.gov</a>. |
|---|
| 78 | </p> |
|---|
| 79 | |
|---|
| 80 | <h2><a name="license">License</a></h2> |
|---|
| 81 | |
|---|
| 82 | <p>StormSiren is released under the |
|---|
| 83 | <a href="http://www.gnu.org/licenses/gpl.html">GNU General Public |
|---|
| 84 | License</a>.</p> |
|---|
| 85 | |
|---|
| 86 | <h2><a name="download">Download</a></h2> |
|---|
| 87 | |
|---|
| 88 | <p>You can download <strong>StormSiren</strong> from the |
|---|
| 89 | <a href="http://sourceforge.net/projects/stormsiren/"> |
|---|
| 90 | StormSiren SourceForge Project Site</a>.</p> |
|---|
| 91 | |
|---|
| 92 | <h2><a name="installation">Installation</a></h2> |
|---|
| 93 | |
|---|
| 94 | <p>To run this program, you will need have a Python interpreter |
|---|
| 95 | installed on your system. Most current Linux distributions come with |
|---|
| 96 | one or more Python interpreters already installed. If you are running |
|---|
| 97 | a different operating system, your mileage may vary. If you |
|---|
| 98 | do not have Python on your system, you can download a version for |
|---|
| 99 | your platform from <a href="http://www.python.org">www.python.org</a>. |
|---|
| 100 | </p> |
|---|
| 101 | |
|---|
| 102 | <p>Installation is about as simple as it gets. Just unzip/untar the |
|---|
| 103 | archive and move the StormSiren.py executable script to where ever |
|---|
| 104 | you think is a good place. It is helpful but not necessary to put |
|---|
| 105 | it somewhere in your path. For Windows, you might create a folder |
|---|
| 106 | like <em>c:\Program Files\StormSiren</em> for the program. For Unix |
|---|
| 107 | systems, you can put it in your home bin directory for personal use, |
|---|
| 108 | or someplace like <em>/usr/local/bin</em> for multi-user access. The |
|---|
| 109 | program writes configuraton, state, and optional log data to user |
|---|
| 110 | specific directories.</p> |
|---|
| 111 | |
|---|
| 112 | <ul> |
|---|
| 113 | <li>Windows: With current distributions of Python, you can test and |
|---|
| 114 | configure the program by simply double clicking its icon. Under Windows |
|---|
| 115 | NT/2K/XP, program data is stored under |
|---|
| 116 | <em>%USERPROFILE%\Application Data\StormSiren</em>. In Windows 2000, |
|---|
| 117 | this usually maps to <em>C:\Documents and Settings\<strong> |
|---|
| 118 | userid</strong>\Application Data\StormSiren</em>. This variable |
|---|
| 119 | location should work correctly under Windows NT 4.0 and Windows XP, |
|---|
| 120 | though I haven't tried these personally. For Windows 98, it maps to |
|---|
| 121 | <em>%WINDIR%</em>Application Data/StormSiren</em>. I haven't tried |
|---|
| 122 | it under Windows 95 or ME. I expect that it will work fine under ME, |
|---|
| 123 | but Windows 95 may store things in a different location. If you try it |
|---|
| 124 | on 95 and have problems, let me know. |
|---|
| 125 | |
|---|
| 126 | <li>Unix: Under Posix systems like Linux, Free/Open/NetBSD, Solaris |
|---|
| 127 | and so forth, the data directory is $HOME/.StormSiren. The tarball |
|---|
| 128 | version of the program is set to use <em>/usr/bin/env python</em>. If |
|---|
| 129 | env is not supported on your platform, try setting the shebang to the |
|---|
| 130 | location of your interpreter. If you are a RedHat Linux user, you may |
|---|
| 131 | want to change the shebang to <em>#!/usr/bin/env python2</em> to use |
|---|
| 132 | a 2.x version of Python rather than 1.5.2. 7 |
|---|
| 133 | |
|---|
| 134 | <li>OS/2: Yes, I actually still use OS/2 on an old P-200 system. In |
|---|
| 135 | fact, running StormSiren is that system's main job. For OS/2, the |
|---|
| 136 | data directory is $HOME\StormSiren.</li> |
|---|
| 137 | </ul> |
|---|
| 138 | |
|---|
| 139 | <h2><a name="running">Running the Program</a></h2> |
|---|
| 140 | |
|---|
| 141 | <p>The first time you run <strong>StormSiren</strong>, it will see that |
|---|
| 142 | you have no configuration file and will enter a <em>wizard</em> mode. |
|---|
| 143 | It will then ask you for information such as the e-mail addresses and |
|---|
| 144 | types of devices you would like to recieve notifications on, and |
|---|
| 145 | what states/counties/cities you wish to include in your scan. Note that |
|---|
| 146 | cities are sometimes specifically listed in NWS bulletins, for example |
|---|
| 147 | if a tornado is headed right for your town, but most of the information |
|---|
| 148 | is issued at the county level.</p> |
|---|
| 149 | |
|---|
| 150 | <p>Once you have run a wizard session, it will write out your settings |
|---|
| 151 | to a configuration file in the StormSiren data directory. You can |
|---|
| 152 | then manually edit the configuration file with a text editor if you so |
|---|
| 153 | desire. To cause the wizard to run again, delete or rename your |
|---|
| 154 | existing configuration file.</p> |
|---|
| 155 | |
|---|
| 156 | <p>After you've completed your configuration, manually run the program |
|---|
| 157 | from the command line with the <code>-testpage</code> directive. This |
|---|
| 158 | will cause <strong>StormSiren</strong> to send a test notification to all |
|---|
| 159 | the devices you specified.</p> |
|---|
| 160 | <p>Examples:</P> |
|---|
| 161 | <ul> |
|---|
| 162 | <li>Unix: <code><em><path></em>/StormSiren.py -testpage</code></li> |
|---|
| 163 | <li>Windows: <code><em><interpreter-path></em>\python.exe |
|---|
| 164 | <em><path></em>\StormSiren.py -testpage</code> |
|---|
| 165 | </ul> |
|---|
| 166 | |
|---|
| 167 | <p>To run the program, you'll have to kick it off from a scheduler on |
|---|
| 168 | a regular basis. I typically have <strong>StormSiren</strong> run |
|---|
| 169 | every five minutes. Since there are a number of different types of |
|---|
| 170 | schedulers for different operating systems, I'm not going to try and |
|---|
| 171 | cover them all. Your platform specific documentation (man pages, help |
|---|
| 172 | files) should tell you how to schedule a program.</p> |
|---|
| 173 | |
|---|
| 174 | <ul> |
|---|
| 175 | <li>Unix: Setup a <em>cron</em> job with the fully qualified path to |
|---|
| 176 | the program.<br><br> |
|---|
| 177 | <code>4,9,14,19,24,29,34,39,44,49,54,59 * * * * |
|---|
| 178 | /usr/local/bin/StormSiren.py</code><br><br></li> |
|---|
| 179 | |
|---|
| 180 | <li>Windows: You might need to point your scheduler at the |
|---|
| 181 | Python interpreter with <strong>StormSiren</strong> as an argument, |
|---|
| 182 | like <em>C:\Python22\python.exe |
|---|
| 183 | "C:\Program Files\StormSiren\StormSiren.py"</em>. You can probably use |
|---|
| 184 | AT (NT4.0) or the Windows Task Scheduler (2K/XP). My experience with |
|---|
| 185 | Windows task schedulers is very small, so if anyone wants to send in |
|---|
| 186 | tips, I'll be happy to add them to this document. There are also a |
|---|
| 187 | number of commercial and shareware schedulers which may work.<br><br> |
|---|
| 188 | </li> |
|---|
| 189 | |
|---|
| 190 | <li>OS/2: A selection of cron clones and other schedulers can be found at |
|---|
| 191 | the <a href="http://hobbes.nmsu.edu">Hobbes OS/2 Archive</a>. Each |
|---|
| 192 | has its own usage instructions.</li> |
|---|
| 193 | |
|---|
| 194 | </ul> |
|---|
| 195 | |
|---|
| 196 | <p>You'll need a persistent internet connection to run <strong>StormSiren |
|---|
| 197 | </strong> every five or ten minutes or so. If you use broadband such as a |
|---|
| 198 | cable modem, you've probably got an always on connection. Another option is |
|---|
| 199 | to run it on a PC at work if your office has internet access (and you get |
|---|
| 200 | the permission of your IT department or manager). You could run it as a |
|---|
| 201 | service for a small company or a department by using its multiple device |
|---|
| 202 | capability and having it scan the county where the office is located, or |
|---|
| 203 | a set of counties for a multi-county metropolitain area. I haven't tested |
|---|
| 204 | with more than five device addresses at a time, but it should scale fairly |
|---|
| 205 | well. I typically run with a three device configuration, my pager, my cell |
|---|
| 206 | phone, and my wife's cell phone, scanning for three counties. |
|---|
| 207 | </p> |
|---|
| 208 | |
|---|
| 209 | <h2><a name="motivation">Motivation for StormSiren</a></h2> |
|---|
| 210 | |
|---|
| 211 | <p>I live in Minnesota, a state with fairly frequent occurances of |
|---|
| 212 | severe weather, including tornados. While I like to tease my wife |
|---|
| 213 | about moving to Tornado Alley, we get plenty of action here as it is. |
|---|
| 214 | In 1998, a tornado walked up a major street only half a mile away from |
|---|
| 215 | my office. While the tornado didn't directly affect us, I had over a |
|---|
| 216 | thousand dollars worth of hail damage to my car. At least we have |
|---|
| 217 | a warning system at the office. However, I live in a geographically |
|---|
| 218 | large bedroom community with no emergency sirens. My wife was |
|---|
| 219 | concerned about this early on, and we started to brainstorm about |
|---|
| 220 | how we could compensate for this. Weather Radios are probably the best |
|---|
| 221 | resource, but they aren't cheap. We bought one anyhow, but we don't |
|---|
| 222 | get very good reception from our house.</p> |
|---|
| 223 | |
|---|
| 224 | <p>The next thing I thought of was to use my pager. Most TV station |
|---|
| 225 | web sites offer subscriptions to e-mail alerts for various news events, |
|---|
| 226 | including storm alerts. That was a good start, but not entirely |
|---|
| 227 | satisfactory. Sometimes the alerts were quite timely, but other times |
|---|
| 228 | it seemed like I wasn't getting any weather alerts even when we were |
|---|
| 229 | under a severe weather warning. Modifying the configuration was |
|---|
| 230 | difficult as well, as I found out the news station was subscribing to |
|---|
| 231 | a service from another vendor. I don't think I ever did get to a |
|---|
| 232 | place where I could modify the configuration. I could only |
|---|
| 233 | unsubscribe. There was also a concern about privacy. I had no way of |
|---|
| 234 | knowing whether the TV station or the third party vendor would resell |
|---|
| 235 | my address for advertising purposes, which would be really awful on a |
|---|
| 236 | pager. And finally, the messages were |
|---|
| 237 | usually truncated. I could usually tell the type of alert |
|---|
| 238 | (I.E. severe t-storm or tornado), but not whether it was a warning or |
|---|
| 239 | a watch. It appears that the service to which I subscribed |
|---|
| 240 | sent the entire text of the NWS bulletin, so naturally things got |
|---|
| 241 | truncated when going to a 160 character display. |
|---|
| 242 | </p> |
|---|
| 243 | |
|---|
| 244 | <p>My big inspiration came in July 2002 when our area was hit by some |
|---|
| 245 | intense storm cells. I was standing out in my yard watching the |
|---|
| 246 | rolling clouds. I stood there transfixed, much like |
|---|
| 247 | a deer caught in a car's headlinghts, as the low, dark clouds above me |
|---|
| 248 | suddendly became a menacing green and began to rotate. Of course I |
|---|
| 249 | should have gone inside right then, but I couldn't pull myself away. |
|---|
| 250 | The clouds slowly moved north, and so I went back inside where my wife |
|---|
| 251 | informed me that the TV news had shown potentially tornadic, doppler |
|---|
| 252 | radar indicated rotation right above us while I was out there. Wow. |
|---|
| 253 | I started |
|---|
| 254 | researching tornadoes and severe thunderstorms shortly thereafter, |
|---|
| 255 | and soon stumbled upon the <a href="http://iwin.nws.noaa.gov"> |
|---|
| 256 | NWS Interactive Weather Information Network</a>. Being a programmer, |
|---|
| 257 | I realized I could scan and parse the information presented in those |
|---|
| 258 | bulletins, and use it to send short, meaningful messages to my pager |
|---|
| 259 | that included the the type of alert, |
|---|
| 260 | the affected counties, and the issue and expiration times for the |
|---|
| 261 | bulletin.</p> |
|---|
| 262 | |
|---|
| 263 | <p> |
|---|
| 264 | For the remainder of the 2002 thunderstorm season, |
|---|
| 265 | a series of iterations of <strong>StormSiren</strong> successfully |
|---|
| 266 | detected and paged me on every severe thunderstorm and tornado watch |
|---|
| 267 | and warning issued by the National Weather Service for the three counties |
|---|
| 268 | I wanted to watch. I really knew I'd |
|---|
| 269 | created something useful when I received a page on September 10, 2002 |
|---|
| 270 | at 12:16 AM. It was a tornado warning for our County. While this wasn't |
|---|
| 271 | a particularly strong tornado, it was significant because tornadoes |
|---|
| 272 | after midnight in September are extremely rare in Minnesota. Thanks to |
|---|
| 273 | <strong>StormSiren</strong>, we were able to safely wait out the storm in the |
|---|
| 274 | basement. |
|---|
| 275 | </p> |
|---|
| 276 | |
|---|
| 277 | <hr> |
|---|
| 278 | <address>For contact information, mailing lists, and discussion forums, |
|---|
| 279 | please visit the <a href="http://sourceforge.net/projects/stormsiren/"> |
|---|
| 280 | StormSiren SourceForge Project Page</a>.<br> |
|---|
| 281 | StormSiren was written by Rory McManus |
|---|
| 282 | <slorf at users_sourceforge_net> (replace underscores with periods) |
|---|
| 283 | </address> |
|---|
| 284 | <p><center> |
|---|
| 285 | <A href="http://sourceforge.net"> |
|---|
| 286 | <IMG src="http://sourceforge.net/sflogo.php?group_id=74940&type=5" |
|---|
| 287 | width="210" height="62" border="0" alt="SourceForge.net Logo"></A> |
|---|
| 288 | <br>StormSiren is graciously hosted by SourceForge.net.</center></p> |
|---|