WMR928 Weather Station Protocol and Data Format

Weather Icon

See the main page for the WxTools overview

The following information is neither authoritative nor based on an official specification. It was determined by the author following patient observation and inspired guesswork. No guarantee is given as to its accuracy. Some details remain a mystery.

Overview

This page describes the format of protocol messages used with the Oregon Scientific WMR928 Professional Weather Station (now discontinued).

Simon Allen has investigated a radio interface for Oregon Scientific wireless thermometers. This resembles but is not the same as what is described here for the RS 232 interface. Unfortunately this information no longer seems to be available on the Web (though the author has a local copy).

Mario Puppo developed a web interface for live weather data in San Remo using the information here as a basis.

Transmission Format

Data is sent simplex from the weather station via an RS 232 interface to the PC using asynchronous (start-stop) mode. The parameters are 9600 bps, no parity, 8 data bits, 1 stop bit.

Frame Format

The frame format is as follows, the length being implied by the Code value:

Start Start Code Channel Data Checksum

Start
0xFF
Code
0x00 - 0x0F
Channel
0x00 in most cases, but with specific uses as follows:
Checksum
Add all bytes arithmetically, i.e. Code, Channel and Data bytes (excluding the Start bytes and the Checksum byte). Subtract 2 and take the bottom 7 bits. This must equal the actual checksum for the frame to be valid.

Number Formats

Numbers are represented in BCD, except for absolute pressure which is in binary. The digits come in a variety of orders. The topmost quartet is set to 0x8 for a negative number (temperature, wind chill). For example:
0x18
18 as an hour (6 PM)
0x1703
31.7 degrees as a temperature
0x3582
-23.5 degrees as a temperature
0x8015
-15 degrees as a wind chill.

Message Formats

Messages are sent as they arrive over the radio link to the weather station. They therefore appear at varying intervals ranging from 15 to 60 seconds. The format of each message is as follows. The digits are hex digits (quartets).
Wind Gauge
00 B0 D2D3 S3D1 S1S2 A2A3 WSA1 W1W2 C1C2

Battery B, Wind Direction D1D2D3, Wind Speed S1S2S3, Wind Speed Average A1A2A3, Wind Chill W1W2 (WS gives sign), Checksum C1C2

Rain Gauge
01 B0 R1R2 ?? T3T4 T1T2 Y3Y4 Y1Y2 M1M2 H1H2 D1D2 M1M2 Y1Y2 C1C2

Battery B, Rainfall Rate R1R2, Rainfall Total T1T2T3T4, Rainfall Yesterday Y1Y2Y3Y4, Rainfall Totalling Start (Minute M1M2, Hour H1H2, Day D1D2, Month M1M2, Year Y1Y2), Checksum C1C2; the unknown byte has values such as 0x80 or 0x90

Outdoor Thermo-Hygrometer
03 B0 T2T3 TST1 H1H2 D1D2 C1C2 (main sensor)
02 BC T2T3 TST1 H1H2 D1D2 C1C2 (sensors 1 to 3)

Battery B, Channel C (0 = main sensor, 1 = channel 1, 2 = channel 2, 4 = channel 3), Temperature T1T2T3 (TS gives sign), Relative Humidity H1H2, Dewpoint D1D2, Checksum C1C2

Indoor Baro-Thermo-Hygrometer
06 B0 T3T4 T1T2 H1H2 D1D2 P1P2 F1F2 ?? S3S4 S1S2 C1C2

Battery B, Temperature T1T2T3T4, Relative Humidity H1H2, Dewpoint D1D2, Ambient Pressure P1P2, Forecast F1F2 (F2 unknown with values like 1, 5, 9), Sea-Level Offset S1S2S3S4, Checksum C1C2; the unknown byte seems to be fixed at 00

Clock Minute
0E M1M2 C1C2

Minutes M1M2, Checksum C1C2

Clock Hour/Date
0F 00 H1H2 D1D2 M1M2 Y1Y2 C1C2

Hour H1H2, Day D1D2, Month M1M2, Year Y1Y2, Checksum C1C2

Measurement Units

Measurements are reported in the following units, irrespective of the actual display units.
Ambient Pressure
Millibars (0 = 856 mb, 1 = 857 mb, etc.)
Battery
0x4 = low, 0x0 = OK (ignore other bits)
Bearing
Degrees (clockwise from 0 as North)
Dewpoint, Wind Chill
Degrees Centigrade
Forecast
2 = Cloudy, 3 = Rainy, 6 = Cloudy with Sun, C = Sunny
Humidity
Percent
Rainfall
Millimetres
Sea-Level Offset
Offset of sea-level pressure relative to ambient pressure, with 600mb as the base (e.g. 605 means sea-level is ambient + 5, 590 means sea-level is ambient - 10)
Sign
0x0 for positive, 0x8 for negative
Speed
Tenths of Metres/Second
Temperature
Tenths of Degrees Centigrade