SmartWeather "checksum"

Just some information which might help someone. I have a 433MHz SmartWeather sensor and I've figured out the "checksum". The format of the data frame is:

Frame start/end is high, 17 (sic) length low Data 0 is high, 4 length low Data 1 is high, 8 length low

high/low may be reversed; I only look for transition changes. Transitions are around 490microseconds and I find that "add 256 then devide by 512 (shift)" gives a nice reproducible result. Ignore the '1s' and work with the following 17/4/2s.

One you have the bits the format is:

32 data bits, 4 bit "checksum".

"Checksum" calculation is:

  • Reverse the received 32 bits
  • Load the checksum with 0b1111 (0xF)
  • Subtract each 4 bit nibble of the reversed-data from the checksum
  • Finally AND the checksum with 0b1111 to ensure that it's only 4-bits.

The data is (partly decoded - still working on it!)

  • 8 bits with 0b1000 then channel then 6 more bits
  • 12 bits of temperature (bits reversed as received). If top bit is set, subtract value from 0b1000000000000 to given negative value.
  • 8 bits of binary coded decimal, again bits reversed

e.g. 78 => 01111001 => 10011110 as received off the wire.


Sounds like some serious reverse engineering,

Can you post the code?