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.