John Stanley stanley@peak.org WMR-918 serial data is transmitted at 9600 baud, 8N1. Each packet starts with two binary bytes of 0xFF. Each packet ends with a checksum. The type of packet is given by the third byte, and ranges from 0x00 through 0x0f. Each type of packet has a predetermined length. For example, a typical type 5 packet looks like: ff ff 05 00 09 02 47 09 dc 0c 50 79 0f The checksum is the simple addition of each byte in the packet, excluding the checksum byte, keeping only the lowest 8 bits. In all further examples, the leading "ff ff" will be omitted. The .tab output from wmr918d omits the leading "ff ff". The known packet types are: 00 - anemometer and wind related data 01 - rain guage 02 - extra sensors 03 - outside temp, humidity and dewpoint 04 - unknown 05 - inside temp, humidity, dewpoint, and baro. 06 - inside temp, humidity, dewpoint, baro for wmr968 and some wmr918's. 07 - unknown 08 - unknown 09 - unknown 0a - unknown 0b - unknown 0c - unknown 0d - unknown 0e - sequence number 0f - hourly status report The following description will attempt to use the same format as the WX200 listing by Mike Wingstrom. H is a hex digit from 0 to f. D is a decimal digit from 0 through 9. B is bit encoded, bit 3 is the high bit (0x8). Type 00 Example: 00 00 90 01 00 00 00 07 96 Byte Nibble Bit Meaning 00. 0 00 Anemometer data packet 00. 1 Bx Battery status. Higher value == lower battery volt 00. 1 xB Unknown 00. 2 DD Gust direction, bc of 0<abc<359 degrees 00. 3 xD Gust direction, a of 0<abc<359 degrees 00. 3 Dx Gust speed, c of 0<ab.c<56 m/s 00. 4 DD Gust speed, ab of 0<ab.c<56 m/s 00. 5 DD Average speed, bc of 0<ab.c<56 m/s 00. 6 xD Average speed, a of 0<ab.c<56 m/s 00. 6 Bx 3 Sign of wind chill, 1 = negative 00. 7 DD Wind chill Example: gust at 190 degrees, 0 m/s, average 0, wind chill 7 Celsius Type 01 Example: 01 00 92 62 02 00 00 00 15 21 09 03 00 37 Byte Nibble Bit Meaning 01. 0 01 Rain guage packet 01. 1 Bx Battery status. Higher value == lower battery volt 01. 1 xB Unknown 01. 2 DD Rain rate, bc of 0<abc<999 mm/hr 01. 3 xD Rain rate, a of 0<abc<999 mm/hr 01. 3 Dx Bucket tips since ?? 01. 4 DD Rain Total, cd of 0<abcd<9999 mm (?) 01. 5 DD Rain Total, ab of 0<abcd<9999 mm (?) 01. 6 DD Rain Yesterday, cd of 0<abdc<9999 mm (?) 01. 7 DD Rain Yesterday, ab of 0<abcd<9999 mm (?) 01. 8 DD Total reset minute 01. 9 DD Total reset hour 01.10 DD Total reset day 01.11 DD Total reset month 01.12 DD Total reset year Example: 292 mm/hr, 0 yesterday, 2mm total since 21:15 9-Mar-2000 Type 02 Example: 02 81 71 00 87 05 ff Byte Nibble Bit Meaning 02. 0 02 Outside temp/humidity data 02. 1 Bx Battery status. Higher value == lower battery volt 02. 1 xB Unknown 02. 1 xB Sensor number bit encoded, 4=3 2=2 1=1 02. 2 DD Outside temp, bc of -?<ab.c<? Celsius 02. 3 xD Outside temp, a of -?<ab.c<? Celsius 02. 3 Bx 3 Sign of outside temp, 1 = negative 02. 4 DD Relative humidity, ab of ?<ab<? percent 02. 5 DD Dew point, ab of 0<ab<? Celsius Example: 7.1 Celsius, 87% humidity, dew point 5 Celsius Type 03 Example: 03 01 71 00 87 05 ff Byte Nibble Bit Meaning 03. 0 03 Outside temp/humidity data 03. 1 Bx Battery status. Higher value == lower battery volt 03. 1 xB Unknown 03. 2 DD Outside temp, bc of -?<ab.c<? Celsius 03. 3 xD Outside temp, a of -?<ab.c<? Celsius 03. 3 Bx 3 Sign of outside temp, 1 = negative 03. 4 DD Relative humidity, ab of ?<ab<? percent 03. 5 DD Dew point, ab of 0<ab<? Celsius Example: 7.1 Celsius, 87% humidity, dew point 5 Celsius Type 05 Example: 05 00 11 02 46 09 dc 0c 50 79 16 Byte Nibble Bit Meaning 05. 0 05 Inside sensor data 05. 1 Bx Battery status. Higher value == lower battery volt 05. 1 xB Unknown 05. 2 DD Inside temp, bc of -?<ab.c<? Celsius 05. 3 xD Inside temp, a of -?<ab.c<? Celsius 05. 3 Bx 3 Sign of temp, 1 = negative 05. 4 DD Relative humidity, ab of ?<ab<? percent 05. 5 DD Dew point, ab of 0<ab<? Celsius 05. 6 HH Baro pressure, convert to decimal and add 795. mb. 05. 7 Bx Unknown 05. 7 xB Encoded 'tendency' 0x0c=clear 0x06=partly cloudy 0x02=cloudy 0x03=rain 05. 8 DD Sea level reference, cd of <abc.d>. 05. 9 DD Sea level reference, ab of <abc.d>. Add this to raw bp from byte 6 to get sea level pressure. Example: 21.1 Celsius, 46% humidity, dew point 9 Celsius BP 1015 mb, sea level pressure 1015 mb. Type 06 Example: 06 00 29 02 41 09 8b 61 90 33 06 2e Byte Nibble Bit Meaning 06. 0 06 Inside sensor data 06. 1 Bx Battery status. Higher value == lower battery volt 06. 1 xB Unknown 06. 2 DD Inside temp, bc of -?<ab.c<? Celsius 06. 3 xD Inside temp, a of -?<ab.c<? Celsius 06. 3 Bx 3 Sign of temp, 1 = negative 06. 4 DD Relative humidity, ab of ?<ab<? percent 06. 5 DD Dew point, ab of 0<ab<? Celsius 06. 6 HH Baro pressure, low byte (bc of abc) 06. 7 xB 0 Baro pressure, a of abc. Convert abc from hex to decimal, add 600. to get mb. a is low bit only. Upper three bits may be encoded BP tendency. 06. 7 Bx Encoded 'tendency' 0x0c=clear 0x06=partly cloudy 0x02=cloudy 0x03=rain 06. 8 DD Sea level reference, ef of <abcd.ef>. 06. 9 DD Sea level reference, cd of <abcd.ef>. 06.10 DD Sea level reference, ab of <abcd.ef> Add this to raw bp from byte 6 and 7 to get sea level pressure. Example: 22.9 Celsius, 41% humidity, dew point 9 Celsius BP 995 mb, sea level pressure 1028.9 mb. Type E Example: 0e 81 8d Byte Nibble Bit Meaning 0e. 0 0e Sequence number packet 0e. 1 Bx Status, high bit, battery for main unit 0e. 1 DD After removing high bit, minute chime Example: status = 1, time is hh:01 Type F Example: 0f 80 07 09 03 00 a0 Byte Nibble Bit Meaning 0f. 0 0f Hour Chime 0f. 1 BB Status. High bit == battery low 0f. 2 DD Hour 0f. 3 DD Day 0f. 4 DD Month 0f. 5 DD Year Example: It's 7AM, 9-March-2000, do you know where your weather station is? </pre>