WMR928 Weather Station Data Format

Weather Icon
Warning 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.

Related Work

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

0x00 - 0x0F
0x00 in most cases, but with specific uses as follows:
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 ambient 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:
18 as an hour (6 PM)
31.7 degrees as a temperature
-23.5 degrees as a temperature
-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.)
0x4 = low, 0x0 = OK (ignore other bits)
Degrees (clockwise from 0 as North)
Dewpoint, Wind Chill
Degrees Centigrade
2 = Cloudy, 3 = Rainy, 6 = Cloudy with Sun, C = Sunny
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)
0x0 for positive, 0x8 for negative
Tenths of Metres/Second
Tenths of Degrees Centigrade

Up Arrow Up one level to WxLog

Web Ken Turner Home   Email    Search Search Web Pages

Last Update: 18th February 2013
URL: http://www.cs.stir.ac.uk/~kjt/software/comms/wmr928.html