rtl_433
rtl_433 copied to clipboard
feat: add Thermor A6N 132TX temperature sensor
Can you list 10-20 different codes so we can look into the checksum (insert bitbuffer_print(bitbuffer)
or give the codes from -X
).
@zuckschwerdt i have created som samples and some data output in the rtl_433_test repo, see: https://github.com/merbanan/rtl_433_tests/pull/365. Is that good enough ?
Yes, great! Here is a BitBench with your codes.
Note that I changed your format suggestion from ID:4h CHAN:2h ?:1h TEMP:16d CHK:8h
to ID:4h CHAN:2h ?:6h TEMP:12d CHK:8h
: Temperature is almost always 12 bit. That leaves 8 bits for flags like channel and battery.
Can you record a negative temperature so we can see how that is encoded?
The checksum is weird, there is not enough entropy for a CRC or LFSR digest. But it's not a sum or xor (parity) either. There are 5 single bit changes (not enough to make sense) in your codes:
bit 17 : 3c01a5 a2 -> 3c01e5 22 chk-xor: 80
bit 17 : 3c0221 bf -> 3c0261 3f chk-xor: 80
bit 17 : 3c02af ad -> 3c02ef 2d chk-xor: 80
bit 18 : 3c01cf ac -> 3c01ef 2c chk-xor: 80
bit 20 : 3c01c7 24 -> 3c01cf ac chk-xor: 88
bit 20 : 3c02d6 34 -> 3c02de bc chk-xor: 88
Ideally warm the sensor up (or cool it down) and let it change very slowly so we can see many small changes. Perhaps put it outdoors and record a whole day. We need 100-200 unique codes. Just upload a list of lines like "3c01a5a2" here.
Hi.. Here is 184 readings.. I think there are some system in it if you look at the last bit only...
50010cbd [26.8C]
50010d3e [26.9C]
50010e3f [27.0C]
50011021 [27.2C]
500111a2 [27.3C]
500112a3 [27.4C]
50011324 [27.5C]
500114a5 [27.6C]
50011526 [27.7C]
50011627 [27.8C]
500117a8 [27.9C]
500118a9 [28.0C]
5001192a [28.1C]
50011a2b [28.2C]
50011bac [28.3C]
50011c2d [28.4C]
50011dae [28.5C]
50011eaf [28.6C]
50011f30 [28.7C]
50012031 [28.8C]
500121b2 [28.9C]
500122b3 [29.0C]
50012334 [29.1C]
500124b5 [29.2C]
50012536 [29.3C]
500127b8 [29.5C]
500128b9 [29.6C]
5001293a [29.7C]
50012a3b [29.8C]
50012bbc [29.9C]
50012c3d [30.0C]
50012dbe [30.1C]
50012ebf [30.2C]
500130a1 [30.4C]
50013223 [30.6C]
500133a4 [30.7C]
50013425 [30.8C]
500135a6 [30.9C]
500136a7 [31.0C]
50013829 [31.2C]
500139aa [31.3C]
50013aab [31.4C]
50013b2c [31.5C]
50013cad [31.6C]
50013d2e [31.7C]
50013e2f [31.8C]
50013fb0 [31.9C]
50014031 [32.0C]
500141b2 [32.1C]
500142b3 [32.2C]
50014334 [32.3C]
500144b5 [32.4C]
50014536 [32.5C]
50014637 [32.6C]
500147b8 [32.7C]
500148b9 [32.8C]
5001493a [32.9C]
50014a3b [33.0C]
50014bbc [33.1C]
50014c3d [33.2C]
50014dbe [33.3C]
50014ebf [33.4C]
500150a1 [33.6C]
50015122 [33.7C]
50015223 [33.8C]
500153a4 [33.9C]
50015425 [34.0C]
500155a6 [34.1C]
500156a7 [34.2C]
50015728 [34.3C]
50015829 [34.4C]
500159aa [34.5C]
50015aab [34.6C]
50015b2c [34.7C]
50015cad [34.8C]
50015d2e [34.9C]
50015e2f [35.0C]
500160b1 [35.2C]
50016132 [35.3C]
50016233 [35.4C]
50016435 [35.6C]
500165b6 [35.7C]
500166b7 [35.8C]
50016738 [35.9C]
50016839 [36.0C]
50016b3c [36.3C]
50016d3e [36.5C]
50016e3f [36.6C]
50016fa0 [36.7C]
50017021 [36.8C]
500171a2 [36.9C]
500172a3 [37.0C]
50017324 [37.1C]
500174a5 [37.2C]
50017627 [37.4C]
500177a8 [37.5C]
500178a9 [37.6C]
5001792a [37.7C]
50017a2b [37.8C]
50017bac [37.9C]
50017c2d [38.0C]
50017dae [38.1C]
50017eaf [38.2C]
50017f30 [38.3C]
50018031 [38.4C]
500181b2 [38.5C]
50018334 [38.7C]
500184b5 [38.8C]
50018637 [39.0C]
500187b8 [39.1C]
500188b9 [39.2C]
5001893a [39.3C]
50018a3b [39.4C]
50018bbc [39.5C]
50018c3d [39.6C]
50018dbe [39.7C]
50018ebf [39.8C]
50018f20 [39.9C]
500190a1 [40.0C]
50019122 [40.1C]
50019223 [40.2C]
500196a7 [40.6C]
50019728 [40.7C]
50019b2c [41.1C]
50019cad [41.2C]
50019e2f [41.4C]
50019fb0 [41.5C]
5001a0b1 [41.6C]
5001a6b7 [42.2C]
5001ad3e [42.9C]
5001ae3f [43.0C]
5001b1a2 [43.3C]
5001b2a3 [43.4C]
5001b4a5 [43.6C]
5001b627 [43.8C]
5001b8a9 [44.0C]
5001c0b1 [44.8C]
5001c3b4 [45.1C]
5001c435 [45.2C]
5001c5b6 [45.3C]
5001c738 [45.5C]
5001c839 [45.6C]
5001c9ba [45.7C]
5001cb3c [45.9C]
5001cd3e [46.1C]
5001ce3f [46.2C]
5001d021 [46.4C]
5001d1a2 [46.5C]
5001d2a3 [46.6C]
5001d627 [47.0C]
5001d7a8 [47.1C]
5001d92a [47.3C]
5001da2b [47.4C]
5001dc2d [47.6C]
5001deaf [47.8C]
5001df30 [47.9C]
5001e031 [48.0C]
5001e2b3 [48.2C]
5001e536 [48.5C]
5001ebbc [49.1C]
5001ef20 [49.5C]
5001f0a1 [49.6C]
5001f3a4 [49.9C]
5001f425 [50.0C]
5001f6a7 [50.2C]
5001f728 [50.3C]
5001f829 [50.4C]
5001f9aa [50.5C]
5001fd2e [50.9C]
500203b5 [51.5C]
500205b7 [51.7C]
500206b8 [51.8C]
50020abc [52.2C]
50020b3d [52.3C]
50020cbe [52.4C]
500211a3 [52.9C]
50021628 [53.4C]
500224b6 [54.8C]
500227b9 [55.1C]
50022dbf [55.7C]
50022ea0 [55.8C]
50023123 [56.1C]
500235a7 [56.5C]
5002382a [56.8C]
/J
Lots of single bit changes, great! A single bit change always toggles 0x80, something like parity?
- Toggle of bit 16, 17, or 18 only toggles 0x80.
- Bit 19 toggles 0x90
- Bit 20 toggles 0x88 or 0x98
- Bit 21, 22, 23 toggles 0x8? or 0x9?, with ? even for 21, 22 and odd for 23.
Guess I have to think about this for a while.
Ok, this looks true regarding the checksum bits:
50 02 38 2a
0 +2 +8 =a
50 01 9b 2c
0 +1 +b =c
4 bits left.
50 01 60 b1 [35.2C]
50 01 61 32 [35.3C]
50 01 62 33 [35.4C]
50 01 64 35 [35.6C]
50 01 65 b6 [35.7C]
50 01 66 b7 [35.8C]
50 01 67 38 [35.9C]
50 01 68 39 [36.0C]
50 01 6b 3c [36.3C]
50 01 6d 3e [36.5C]
50 01 6e 3f [36.6C]
50 01 6f a0 [36.7C]
Here we have:
50 01 6(1) [3]2
50 01 6(2) [3]3
Compared to
50 01 6(0) [b]1
we see that [high nibble] depends on the low (last low payload nibble). So the guess is that the MSB of the [high nibble] is set/toggled if parity is even. So the [high nibble] depends on the bit parity of the low payload nibbles (only tested the last). In the above series odd parity gives b and even gives 3(with one exception).
Then we have:
50 01 6f [a]0
Here the low nibble sum overflows 1+f=10. The above payload has odd parity and should thus give b, but it gives a which would match if the high nibble is xored with the resulting high checksum nibble.
So my guess is that the unknown initial calculation is xored with the parity bit at position 1XXX and the low nibble overflow. The maximum overflow (F+F+F=2D) can affect the 2 lower bits XX11.
So what gives the [3] in the following payload?
50 01 62 [3]3
I'm not sure I think we need more values for that, in these values one bit is always X0XX. But maybe it is enough with 5 bits of checksum.
We need a big data set to get further with this and my above description is not 100%. Most things are untested guesse.