rtl_433 icon indicating copy to clipboard operation
rtl_433 copied to clipboard

feat: add Thermor A6N 132TX temperature sensor

Open langeland opened this issue 4 years ago • 9 comments

langeland avatar Oct 03 '20 19:10 langeland

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 avatar Oct 03 '20 19:10 zuckschwerdt

@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 ?

langeland avatar Oct 04 '20 07:10 langeland

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?

zuckschwerdt avatar Oct 04 '20 09:10 zuckschwerdt

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.

zuckschwerdt avatar Oct 04 '20 09:10 zuckschwerdt

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

langeland avatar Oct 05 '20 15:10 langeland

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.

zuckschwerdt avatar Oct 05 '20 15:10 zuckschwerdt

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.

merbanan avatar Oct 14 '20 20:10 merbanan

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.

merbanan avatar Oct 14 '20 21:10 merbanan

We need a big data set to get further with this and my above description is not 100%. Most things are untested guesse.

merbanan avatar Oct 14 '20 22:10 merbanan