rjk@mgweed.UUCP (06/10/83)
Chicago Area Weather Service for USENET
Background
The Chicago Area Weather Service (CHIWX) is an effort to provide timely
weather data to Usenet sites in the Chicago area. Information is
provided by the National Weather Service, transcribed onto Amateur Radio
frequencies in baudot, received and converted into ASCII, then sorted
into topic groups at UNIX site mgweed in Montgomery Illinois, where it is
posted to the Usenet.
Hardware for this system was designed by, and is maintained by engineers
at MORAD, the Amateur Radio Club (WA9DNZ) at Western Electric in
Montgomery, Illinois. Transmissions are received on 147.060 MHz on
standard Amateur marrow shift (2125 Hz mark, 2295 Hz space) at 45.45 baud
Baudot. The receiver is a Motorola "Motran" with a four element yagi
antenna. Inquiries may be directed to either Phil Gunsul, WB9AAX
(we13!mgweed!prg) or Bob Roehrig, K9EUI (we13!mgweed!rjr).
Software for the system was designed by, and is maintained by Randy King
(we13!mgweed!rjk). The "Usenet adapter" simply scans the normal weather
directories, posting items that haven't been posted. All articles are
posted with an 8-hour expiration date maximum.
Buzz Words
Topic code - analogous to a newsgroup, consists of up to 15 characters
identifying the subject matter of the weather transmission. For instance
CHILFPCHI is the Metropolitan Forecast. These identifiers are chosen
either by the NWS or by the unnamed individual that broadcasts this
information.
Zulu - refers to Greenwich Mean Time. Often seen in the aviation weather
statements as in "...valid until 1400Z...".
Articles
We are all at the mercy of a government agency (NWS) and the unnamed
individual who transcribes the various topics onto the airwaves.
Occasionally, unnecessary garbage will get through. The host site
(mgweed) has the ability to discontinue individual topic codes if the
situation gets out of hand.
Upon posting of an article, the title is derived from a reasonable name
found near the top of the incoming data. If nothing reasonable is found,
then the topic code will be used in its place.
The last name of the posting meteorologist will usually be found at the
end of each article.
Quite often topic codes, headers, and the actual message data will get
garbled, usually due to propagation effects, weather noise (electrical
storms), or locally generated noise.
How it Works - Local Weather (not posted to the net)
Parallel data is taken from a Heathkit weather station and converted into
an ASCII string. The link transmitter sends this string to the host UNIX
computer every 5 minutes, except during reception of NWS broadcasts.
This 38-byte string contains all of the information necessary for the
local statistics. Statistics provided can be summarized in the following
display that a user would receive by typing the command "localwx":
Statistics at Western Electric Montgomery Works
Period from 00:04:53 thru 10:50:00
Current stats read 2 minutes ago
Temperature ---
Currently 78 F 26 C +03 F/Hr
Average 69 F 21 C (Period)
High 78 F 26 C 10:25:00
Lo 64 F 18 C 00:54:53
Barometer -----
Currently 30.11 inches +0.01/Hr
Average 30.05 inches (Period)
High 30.11 inches 10:15:00
Lo 30.01 inches 00:04:53
Wind ----------
Currently SE @ 08 MPH -01 M/Hr
Average S @ 04 MPH (Period)
High SE @ 18 MPH 15:33:54
Lo ESE @ 01 MPH 01:14:54
All of this information is kept in a daily history file (note the
"Period" statement) and in monthly history files forever. The weather
data may be graphically displayed using the "-g" option and any of the
tplot filters.
The Physical Plant Engineering group uses this information for
calculating degree-day units for heating and cooling, for wind
infiltration calculations, and for predicting physical plant requirements
for make-up air and boiler startup/shutdown. There is normally a 6-18
hour lag from command-to-action on building boilers and compressors, so
prediction is almost a *must*.
So far we have a little over a year's worth of history data that can be
reviewed for the next heating or cooling season.
How it Works - Regional Weather (posted to the net)
The Chicago area broadcasts are converted to ASCII from baudot and are
sent to the host between local weather statistics. Once these
transmissions have captured the host link, the local weather statistics
are buffered in the memory of the link transmitter until the NWS
broadcasts are done.
A typical transmission as received by Usenet:
---------------------
Newsgroup chi.weather
---------------------
Article 811 of 814, Fri 07:02.
Subject: [Fri 06:53] CHICAGO METROPOLITAN FORECAST
Path: sys (WA9DNZ @ Western Electric, Montgomery)
(18 lines) More? [ynq]
FQUS1 KCHI 101025
CHICAGO METROPOLITAN FORECAST
NATIONAL WEATHER SERVICE CHICAGO IL
5 25 AM CDT FRI JUN 10 1983
TODAY...SCATTERED THUNDERSTORMS THIS MORNING..OTHERWISE PARTLY SUNNY
AND WARM. HIGH IN THE LOWER 80S BUT LOWER NEAR THE LAKE. LIGHT VARIABLE
WINDS.
TONIGHT...PARTLY CLOUDY. A 30 PERCENT CHANCE OF THUNDERSTORMS. LOW
IN THE MIDDLE 60S. LIGHT SOUTHERLY WINDS.
SATURDAY...PARTLY SUNNY WARM AND HUMID WITH A 30 PERCENT CHANCE OF
THUNDERSTORMS. HIGH IN THE MIDDLE 80S.
$$
VERMOCH
Some of the other topics that are posted (sic)...
DAILY PSI REPORT
WEATHER CALENDAR FOR CHICAGO IL OHARE AIRPORT
HOURLY TEMPERATURES
UPPER AIR FALLOUT DATA FOR ESDA
CHICAGO METROPOLITAN FORECAST
NEARSHORE MARINE FORECAST
LAKE MICHIGAN WATER LEVEL
RADAR SUMMARY
ILLINOIS SEVERE WEATHER OUTLOOK
NATIONAL FLOOD SUMMARY
TROPICAL WEATHER OUTLOOK...NORTH OF EQUATOR AND EAST OF
The link transmitter is a locally-designed general purpose microprocessor
system based on the Motorola 6809. Code is written in assembler or C.
How it Works - UNIX End
The normal "getty" is replaced by a process called "getwx" for the
dedicated weather port. This process opens the line, conditions it for
weather reception (termio parameters) and is typically blocked in a read
loop. As data comes in, it is checked for the presence of a "header".
This header is guaranteed to look something like this:
ZCZC CHILFPCHI
When a header is detected, getwx changes to (or creates) a directory by
that name (e.g. CHILFPCHI) and creates a data file by the name of
"MoradNNNNNNNNN", where N... is UNIX time, in seconds, since the EPOCH.
This pretty much guarantees unique file names. While the file is being
written, its mode is 644. When complete, its mode is 664 so that the
Usenet interface knows that the file is available for posting.
A "weather" program can be invoked by any user which presents weather
data in a sort-of-Netnews format. No user-history is kept (.newsrc), so
you get all of the available weather every time.
An expire demon runs every hour to remove files that have exceeded their
expiration time. Each topic code has its own expiration time based on
how often the NWS sends it out.
The Usenet interface runs every half hour, posting new data to the
"chi.weather" group. A log is kept in each topic directory of which
files have been posted. Before the log is re-written, the directory is
scanned and files that have been removed by the expire demon are deleted
from the Usenet log.
Usenet Administrative Tips
1) You should be running 2.10 news. There are pre-2.10 bugs in the
expire program that prevent expired articles from being deleted. In
the case of the weather system, you could get a lot of old data lying
around real fast.
2) You should run the news expire program every four hours or less with
options that make it look only at the weather stuff. This has about
as much overhead as a "cc" run. Put this line in your
/usr/lib/crontab:
45 2,6,10,14,18,22 * * * su news -c "/usr/lib/news/expire -n chi.weather"&
A copy of 2.10 news is available from we13!mgweed!rjk if you need it.
This version compiles on the PDP11, 3B20S, and the VAX. A multi-
directory UUCP system by Tom Truscott (rti!trt) is also available for the
asking. It is much more reliable than other UUCP systems, and has
considerably less overhead.
For those of you subscribing to the SA Registry @ ihnp4!action, you can
get the L.sys info for we13 and take both of the above packages from:
/usr/spool/uucppublic/rjk/news.tar
/usr/spool/uucppublic/rjk/uucp.cpio-c
Mail sent to rjk will be unanswered from June 10 through August 1, due to
absence.