Hi folks I have "hacked" two different brands of weather stations, the Bios (or Thermor) and the Oregon Scientific V3.0 and been able to intercept the signals successfully. I have documented this in these two postings where source code (plus comments!) are provided -
http://forum.arduino.cc/index.php?topic=167364.msg1432791#msg1432791 The Bios weather station
http://forum.arduino.cc/index.php?topic=203425.0 Oregon Weather Station V3.0 protocols
I had to ditch the Bios as it just wore out, and I am now concentrating on the Oregon system. The Oregon is now providing local weather information for my website
http://www.laketyersbeach.net.au/Both systems use Manchester encoding, but with opposite polarity conventions. The signal frame's timing was similar but the data structures were quite different.
The Bios had a single transmitter (all the sensors were wired to a common point), no checksum and varying length data payloads, but transmitted 4 copies of the data for three different sensors every 40secs (approx). So it took 120 secs to get all the data. The repetition meant receiving 4 identical data payloads = data is ok.
The Oregon has separate transmitters in the rain gauge, anemometer and temperature, and all periodically transmit a single data payload in different length cycles (eg anemometer say every 20 seconds, rainfall every 80 seconds) , so some overlapping data corruption is inevitable. However it has a constant length data payload, and employs a simple checksum routine to check the integrity of the data. The Oregon is versatile in that other sensors from the V3.0 format could be added easily to the line up eg a UV light detector.
Both designs used a rolling ID number that changed every time it was reset or batteries were changed and both used a mixture of BCD and pure binary in number formats. Both used a stream of ones to synch the receiver, about 80 for the Bios and about 20 for the Oregon. The Bios had its first zero in the data stream outside of the data byte boundaries, whereas the Oregon has the first zero within the data byte boundaries and hence part of the checksum.
You may find the two programs interesting in your quest to understand the protocol even though they are different brands to yours. I employ a system of delays to sample the waveform rather than counting with interrupts and then decode the data.
I will look at the progress with interest, Cheers, Rob