I'm playing around with a radio receiver on 433MHz and I am receiving signals from a temperature / humidity sensor.
I already figured out what bytes represent humidity, but I'm stuck with the temperature as I don't know how it is represented in the signal. Here are some example messages I receive:
C1 | 75.2F | 70% 0001010001010011010000000100100000000100011011010111000011 C1 | 24.1C | 68% 0001010001010100100000000100100000010100010000000001000011 C1 | 24.1C | 56% 0001010001010100100000000100100000010011100001010110000011
The temperature sensor has the following readouts:
- Unit (Celsius / Fahrenheit)
- Channel (1-8)
I already figured out what the humidity is as well as what represents the channel. I also figured out a temperature range(?) [1 = ..-11 | 2= -1..-10 | 3= 0..15 | 4= 15..30 | 5=31..40]. But I have a hard time figuring out where I can find the exact temperature or the unit (F/C).
I prepared this public Google Sheet with my findings and raw data so far (sorry I don't know a better way to share on Stackexchange):
https://docs.google.com/spreadsheets/d/1q2sk5bK6Bv3gi8ahTLIUM4DaMR7AvnTVPY-NvmGMHoQ/edit?usp=sharing (the channel with a zero based index I already figured out is violet, the humidity is in blue, some bits always stay the same hence I made them grey)
What is my best course of action now? I have been trying around with all the bits and bytes, adding them together, adding the one to the other, multiplying the temperature times 10 to get a decimal... nothing.
Column I seems to follow the temperature in a way (negative temperature/high temperatures and the values just don't relate, look to the end of the graph), but looking at the decimal representation of I can see values such as 7,8,9 and wildly changing temperatures. I am assuming there is some kind of correlation between the temperature range and this byte but I haven't figured out yet how to achieve the calculation.
Alright I found something:
The temperature ranges in correlation with I & J seem to be the key. I & J corresponds to a value between 0-255 (I guess) for each range and represents a particular temperature value. The I & J scale seems to be logarithmic looking at the difference between 17,8C (17) and 20,8C (71) and the difference between 20,8C (71) and 22,8C (106). But that's just a guess.
So I somehow need to correlate the range (15 degrees C wide) with the 0-255 index to get a temperature. Crazy.
Converted H & I & J 12 bit number to decimal and get the following:
It does look very related, but I can't figure out a formula.