quakeAPRS

World Map

quakeAPRS provides near real-time USGS Earthquake Reports to the APRS network. The application connects periodically (i.e., 30 minute intervals) to the USGS (United States Geological Survey) to get earthquake information. The connection is made using the UNIX finger quake@gldfs.cr.usgs.gov command. The returned text is parsed to extract the desired data and put into APRS packet format. These packets are then sent directly to APRServe for distribution to the worldwide APRS network. No RF is used for this implementation, it is all done via the Internet.

For a description of the earthquake parameters provided by the USGS, see finger qk_info@gldfs.cr.usgs.gov. The original paper in Adobe pdf format describing quakeAPRS was published in the 19th ARRL and TAPR Digital Communication Conference Proceedings, September 2000.


quakeAPRS was written in perl. Below is the "perldoc" for the script.

QUAKE(1)       User Contributed Perl Documentation       QUAKE(1)


       quakeAPRS - Perl script to provide quakes data to APRS LAN

        quake (execute and get real time earthquakes from USGS)
        quake testfile (execute and get earthquakes from prepared file)


       This script uses the UNIX "finger" command to get near
       real time earthquake data from the USGS.  If the magnitude
       of the quake is greater than the specified threshold, the
       data is modified to the APRS format and sent to the APRS
       server for distibution to the APRS network.

       The script checks to see who called it, if the user is
       "root", then it is assumed to be a cron job and the
       location of key files and logs is changed according.
       Normally this script is expected to be executed as a cron
       job (i.e., 30 minute intevals).  Because APRServe does not
       buffer APRS packets, quakeAPRS sends the current status
       without regard to what has previously been sent to
       APRServe.

       To expedite testing, a filename supplied as an argurment
       in the command line will force the data within the file to
       be used rather than connect to the USGS for earthquake
       data.

        DATE-(UTC)-TIME    LAT    LON     DEP   MAG  Q  COMMENTS
        yy/mm/dd hh:mm:ss   deg.   deg.     km
        99/11/20 11:23:00  53.39N 163.87W  33.0 3.9Mb B  UNIMAK ISLAND REGION
        99/11/20 20:29:44  10.18N  70.39W  33.0 4.7Mb B  VENEZUELA
        99/11/20 21:52:51  30.79S  71.84W  33.0 5.1Mb A  NEAR COAST OF CHILE
        99/11/20 22:43:25  53.87N  35.76W  10.0 4.6Mb B  NORTH ATLANTIC OCEAN


       The ICON for a quake is "Q" with "\" to indicate 2nd icon
       set. The format:

           W9IF-9>APRS:;ddhhmmqMM*DDHHMMzDDMM.HHN\DDDMM.HHWQMag 7.2. Down 10 km.

        ddhhmmqMM format where:
        dd = day of quake
        hh = hour of quake
        mm = minute of quake
        q  = delimiter
        MM = quake magnitude without the decimal point

        Here are examples:
        W9IF>APRS:;291855q35*291855z3604.80N\11736.00WQMag 3.5 Depth 0.6 km CALIF-NEVADA BDR REG
        W9IF>APRS:;292127q39*292127z6305.40N\14857.60WQMag 3.9 Depth 33.0 km CENTRAL ALASKA
        W9IF>APRS:;292208q41*292208z3603.00N\11736.00WQMag 4.1 Depth 2.7 km CALIF-NEVADA BDR REG
        W9IF>APRS:;292244q58*292244z1804.20S\16851.60EQMag 5.8 Depth 33.0 km VANUATU ISLANDS

       The USGS messages contain the magnitude and the depth.

        Richard Parry, W9IF


       2.5 July 15, 2000
          Added multiple APRS servers.
          Increased the number of APRS servers that are searched
       and fixed bugs with this connection algorithm. quakeAPRS
       will look for a successful connection once for each APRS
       server. If all servers are unavailable, program
       terminates.Connection will be attempted next time
       quakeAPRS is called by a cron job.

       2.4 June 9, 2000
          Added backup APRS telnet host.
          If telnet connection to primary APRS server fails, send
       email notification and then try secondary APRS server. If
       secondary fails, send email notification and exit, this is
       fatal error.

       2.3 March 22, 2000
          Added backup "finger" server.
          If "finger" request to finger server timesout, send
       email notification and get quake information from web
       page. The finger server is tried first since it is more
       current. The web page is used as a backup.
          If "telnet" request to APRS servers fails, send email
       notification and exit, this is fatal error.

       2.2 March 1, 2000
          Completely changed the quakeID labeling, discarded the
       QUAKE00001 format.  Due to the labeling format change, a
       logging quakes previously sent was removed, simplying the
       code.

       2.1 February 28, 2000
          After releasing 2.0, found that design needed to be
       changed. This had to be done since using new quake ID
       numbers caused the "Station List" window of MacAPRS and
       WinAPRS to fill up. This required a signficant change in
       the design. A hash was used to keep track of the quakes.
        1) Only a new quake gets a new quake ID number.
        2) A recent previously sent quake must use the same quake
       ID number
        3) An previously sent quake not is the log file is old
       and is removed
        4) Added quake "age" criteria in addition to magnitude
       criteria

       2.0 January 9, 2000
          After releasing version 1.3, we discovered that
       APRServe does NOT cache packets (objects).  This means
       that clients would rarely see an earthquake.  To solve
       this, this version takes the brute force approach and
       sends "all" earthquake packets each time it executes.
       Cron job set to execute once each hour.

       1.3 December 28, 1999 Initial release.
          This version assumed packets (objects) were cached by
       APRServe.  This version sends earthquake packets sent once
       only based on the false assumption that packets are
       cached.  Based on that, this version it keeps track of
       packets it had sent and sends only new earthquake packets
       in an effort to reduce traffic.  However, this version had
       to be abondon since clients would rarely see an
       earthquake.  Cron job set to execute once each hour.

       This program is distributed in the hope that it will be
       useful, but WITHOUT ANY WARRANTY; without even the implied
       warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
       PURPOSE.  See the GNU General Public License for more
       details.