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.