Menu
Index

Contact
LinkedIn
GitHub
Atom Feed
Comments Atom Feed



Tweet

Similar Articles

28/12/2013 23:34
Imagintronix Temperature & Humidity Sensor Protocol (WH15B for WH1400)
02/01/2014 17:38
Watson Temperature & Humidity Sesnor Protocol (8683-HTT / WH2 for W-8683)

Recent Articles

23/04/2017 14:21
Raspberry Pi SD Card Test
07/04/2017 10:54
DNS Firewall (blackhole malicious, like Pi-hole) with bind9
28/03/2017 13:07
Kubernetes to learn Part 4
23/03/2017 16:09
Kubernetes to learn Part 3
21/03/2017 15:18
Kubernetes to learn Part 2

Glen Pitt-Pladdy :: Blog

Fine Offset WH0203 (and others) Protocol

While I now have plenty of temperature/humidity sensors and switched sockets running now, I've been looking at other useful sensors, and rain comes to mind as summer is drawing to an end. When it comes to inexpensive rain gauges (sensors as they are called for home automation), for £12 delivered from eBay I picked up one of these:

Fine Offset WH0203 Rain Gauge

It includes a display which was only useful for initial testing for me, and seems to be a re-branded Fine Offset WH0203 ... yup, many of these sensors are leading back to Fine Offset. Internally it's the usual sort of mechanism with a mechanical rocker that fills and empties each side alternately. It's got a magnet next to the electronics compartment and that triggers a reed switch each time it rocks back and forward (0.3mm of rainfall).

Fine Offset WH0203 Rain Gauge internal mechanism

It's fairly simple - takes 2x AAA batteries under the snap-on cover and transmits every 48 seconds.

Intelligence Gathering & Baseband Signal

I was expecting to see something like the Watson / Fine Offset WH2 or the Imagintronix / Fine Offset WH15B, given the apparent origin of this device. About all this needs to communicate is a count for the number of times the rocker tips.

.... and as expected it's very similar to the WH2:

Fine Offset WH0203 Rain Gauge Baseband Signal

Clearly Pulse Width encoding with a fixed gap, which means you could get baseline drift with DC blocking in receivers. Other than that I already have the decoders for this and just needs some tweaks for this device.

Data Structure

A bit of experimenting to find how things are arranged (lots of flipping the rocker back and forward and power cycling to get new rolling codes) and I've come up with MSB first structure like this:

  • 7-bits (maybe one is lost with baseline drift) preamble of 1's, followed by 4-bits sync / Device ID. While the WH3 sync comes out at 0x4, this comes out at 0x3 so guessing this can be used to identify this device.
  • 8-bits Start up ID / Rolling Code. This effectively gives a device a unique(ish) ID every time it's powered up.
  • 20-bits (best guess) of count of movements of the rocker, each one worth 0.3mm of rain
  • 8-bits of unknown data, 0x00 so far
  • 8-bits of unknown data, 0xff so far
  • 8-bits of CRC identical to the WH2 CRC as found by Luc Small.

I've done things like run it down to low voltages (when it stops) to see if there are any flags like low battery but none found so far.

One thing I have detected is that occasionally it throws out garbage data with most of the bits set to "1" but a valid CRC.... suspicious!

Comments:




Are you human? (reduces spam)
Note: Identity details will be stored in a cookie. Posts may not appear immediately