IRremoteESP8266 icon indicating copy to clipboard operation
IRremoteESP8266 copied to clipboard

I need Support for Remote AR-715 for Climate-Butler AC (looks the same as Trotec PAC 4600)

Open benjy3gg opened this issue 2 years ago • 22 comments

Hi, i want to create support for the Remote AR-715 for my new AC. It's reporting UNKNOWN using IRRecvdumpV2.

Protocol  : UNKNOWN
00:01:16.218 -> Code      : 0xE6CA5369 (55 Bits)
00:01:16.218 -> uint16_t rawData[109] = {554, 3512,  558, 1488,  580, 496,  522, 494,  546, 558,  552, 494,  548, 496,  546, 500,  548, 558,  544, 504,  544, 502,  540, 506,  538, 570,  514, 530,  514, 532,  512, 534,  512, 592,  512, 536,  510, 532,  510, 536,  510, 598,  510, 536,  506, 536,  514, 534,  510, 594,  514, 534,  510, 536,  534, 510,  510, 598,  514, 534,  510, 536,  508, 536,  534, 572,  534, 500,  512, 1536,  512, 526,  510, 1588,  512, 1536,  510, 538,  512, 532,  510, 588,  510, 1536,  514, 532,  510, 536,  534, 570,  512, 534,  510, 536,  514, 528,  540, 568,  540, 506,  512, 524,  510, 1534,  516, 532,  536, 3396,  544};  // UNKNOWN E6CA5369 POWER OFF
Protocol  : UNKNOWN
00:02:09.240 -> Code      : 0xA008E5A4 (55 Bits)
00:02:09.240 -> uint16_t rawData[109] = {536, 3530,  542, 1532,  544, 502,  546, 500,  546, 560,  550, 496,  548, 488,  552, 1488,  548, 1560,  550, 498,  548, 496,  550, 496,  548, 560,  546, 498,  550, 500,  546, 496,  548, 558,  548, 498,  550, 496,  548, 498,  548, 560,  548, 496,  548, 496,  550, 496,  548, 558,  548, 498,  548, 498,  548, 496,  552, 558,  548, 496,  550, 496,  550, 494,  548, 558,  550, 488,  546, 1498,  548, 490,  550, 1550,  522, 1524,  524, 522,  548, 496,  548, 552,  548, 1498,  548, 496,  548, 498,  548, 562,  548, 496,  548, 498,  550, 496,  550, 548,  548, 1492,  548, 1488,  526, 1514,  550, 1496,  548, 3358,  580};  // UNKNOWN A008E5A4 POWER ON

Tried to follow How to add new IR Remote in the wiki and implemented the TestExample Stuff, but i still get UNKNOWN when i use the remote.

Help would be appreciated.

benjy3gg avatar May 22 '22 22:05 benjy3gg

You mention remote AR-715 Do you have brand and also model of the AC unit?

NiKiZe avatar May 22 '22 22:05 NiKiZe

@NiKiZe hey. sry i only posted it in the title. The AR-715 is printed on the sticker on the remote, The Brand of the AC is Climate-Butler and the model is RCS-SD43UWI. But it looks the same as this one https://de.trotec.com/produkte-services/maschinen-homecomfort/klimatisierung/komfort-klimageraete-pac-serie/pac-4600/ and has the same remote

benjy3gg avatar May 22 '22 22:05 benjy3gg

Tried to follow How to add new IR Remote in the wiki and implemented the TestExample Stuff, but i still get UNKNOWN when i use the remote.

Can you link to your code? We might be able to spot what is wrong.

crankyoldgit avatar May 22 '22 23:05 crankyoldgit

https://github.com/crankyoldgit/IRremoteESP8266/compare/master...benjy3gg:master just followed the wiki so the device is called testexample for now

benjy3gg avatar May 22 '22 23:05 benjy3gg

Thanks, at a cursory glance, the code looks like it should work. I'll have a tinker later

crankyoldgit avatar May 22 '22 23:05 crankyoldgit

Did you try setting DEBUG on and have a look at the output? e.g. https://github.com/crankyoldgit/IRremoteESP8266/blob/4adcc7bcdeb922e28de9ee8937f65ccd18be3269/src/IRremoteESP8266.h#L1382-L1383

crankyoldgit avatar May 22 '22 23:05 crankyoldgit

no, will try that now. btw: if i send the captured u_int array with sendRaw the AC responds to the code.

benjy3gg avatar May 22 '22 23:05 benjy3gg

01:33:11.653 -> Attempting TestExample decode 01:33:11.653 -> Matching SPACE 550 vs 3492 - 50. Matching: 2581 <= 550 <= 4303

benjy3gg avatar May 22 '22 23:05 benjy3gg

Try changing:

  if (!matchSpace(results->rawbuf[offset++], kTestExampleHdrSpace))
    return false;

to:

  if (!matchMark(results->rawbuf[offset++], kTestExampleBitMark))
    return false;
  if (!matchSpace(results->rawbuf[offset++], kTestExampleHdrSpace))
    return false;

crankyoldgit avatar May 22 '22 23:05 crankyoldgit

looks like most of them are recognized now. so what are the next steps now?

benjy3gg avatar May 22 '22 23:05 benjy3gg

Okay.

  1. Stop using TestExample etc. Use CLIMATEBUTLER/ClimateButler etc instead for all occurrences.
  2. Rename ir_Climate.cpp to ir_ClimateButler.cpp.
  3. Change:
  for (uint16_t r = 0; r <= repeat; r++) {
    uint64_t send_data = data;
    space(kTestExampleHdrSpace);
    // Data Section #1
    // e.g. data = 0x830000005880F, nbits = 52
    sendData(kTestExampleBitMark, kTestExampleOneSpace, kTestExampleBitMark, kTestExampleZeroSpace, send_data, 52, true);
    send_data >>= 52;
    // Footer
    mark(kTestExampleBitMark);
    space(kTestExampleHdrSpace);
    space(kDefaultMessageGap);  // A 100% made up guess of the gap between messages.
  }

to:

  for (uint16_t r = 0; r <= repeat; r++) {
    // Header + Data
    sendGeneric(kClimateButlerBitMark, kClimateButlerHdrSpace,
                kClimateButlerBitMark, kClimateButlerOneSpace,
                kClimateButlerBitMark, kClimateButlerZeroSpace,
                kClimateButlerBitMark, kClimateButlerHdrSpace,
                data, nbits, kClimateButlerFreq, true, 0, kDutyDefault);
    // Footer
    mark(kClimateButlerBitMark);
    space(kDefaultMessageGap);  // A 100% made up guess of the gap between messages.
  }

Note: We will do something similar for the decodeBlah() routine later. 4. Change:

//   Brand: TestExample,  Model: TODO add device and remote

to:

//   Brand: ClimateButler,  Model: AR-715 remote
//   Brand: ClimateButler,  Model: RCS-SD43UWI A/C
  1. When you're sure you've got it right (i.e. sending and decoding works), send/create a PR to merge it in to the library.
  2. Now that it works, start following: https://github.com/crankyoldgit/IRremoteESP8266/wiki/Adding-support-for-a-new-AC-protocol
  3. One of the first things is to capture an entire temperature range (lowest to highest) to try to work out the bit ordering. i.e. LSBF or MSBF.

That will do you for now.

crankyoldgit avatar May 23 '22 04:05 crankyoldgit

I changed my code according to your instructions. Decoding Stoll works, but if I now try to send a command with "irsend.sendClimateButler(0x830000007919A);" Nothing gets send. (got the 0x83... code from the IRrecvDumpV2 script. (There is a small led on my ir transmitter that flashes up when sending).

updated code here: https://github.com/crankyoldgit/IRremoteESP8266/compare/master...benjy3gg:master

benjy3gg avatar May 23 '22 10:05 benjy3gg

Your library code looks fine so far after a brief look. Nothing leaps out as wrong.

Perhaps the problems is with your use of it. Can you post your minimum viable example code? Did you call irsend.begin(); before sending (in the setup etc)? Did you set up IRsend irsend(Blah); on the correct GPIO? Does it work for other protocols. e.g. sendNEC() Have you tried the code in the example directories?

crankyoldgit avatar May 23 '22 14:05 crankyoldgit

Okay, works now. Had some error on my code and it wasn't even sending the ir command. Will open a PR later.

benjy3gg avatar May 23 '22 17:05 benjy3gg

Started to analyse the IR Codes here: https://docs.google.com/spreadsheets/d/1cy5-5tNJvlfgpQws0UVYX0jEZs4xoefBOWScEjmtoX0/edit#gid=0

benjy3gg avatar May 24 '22 22:05 benjy3gg

Started to analyse the IR Codes here: https://docs.google.com/spreadsheets/d/1cy5-5tNJvlfgpQws0UVYX0jEZs4xoefBOWScEjmtoX0/edit#gid=0

@benjy3gg You forgot to make it publicly readable.

crankyoldgit avatar May 25 '22 05:05 crankyoldgit

@crankyoldgit you should have access now

benjy3gg avatar May 26 '22 14:05 benjy3gg

i got most of the code figured out. struggling with the checksum right now. help would be appreciated.

benjy3gg avatar May 28 '22 00:05 benjy3gg

Looking at the temperature range, it looks like we've got the correct bit-ordering. So, nothing to change. Please create a PR.

As for the checksum. It looks like the last nibble (4 bits) is the check value. A quick look at it makes me think it's an inversion of all the previous nibbles added together. e,g. 0x830000007914F: 0x8 + 0x3 + 0x0 + 0x0 + 0x0 + 0x0 + 0x0 + 0x0 + 0x7 + 0x9 + 0x1 + 0x4 = 0x20 & invert the last nibble. ie. 0x20: 0x0 -> 0xF gets you the check value (or 0xF - 0x0 = 0xF if you prefer)

crankyoldgit avatar May 29 '22 03:05 crankyoldgit

@crankyoldgit checksum seems to be right :) Also opened the PR: https://github.com/crankyoldgit/IRremoteESP8266/pull/1815

benjy3gg avatar May 30 '22 10:05 benjy3gg

@crankyoldgit also got another question: https://docs.google.com/spreadsheets/d/1cy5-5tNJvlfgpQws0UVYX0jEZs4xoefBOWScEjmtoX0/edit#gid=339282704 in the "Analysis Timer" sheet, there is something strange (orange marked cells). All other cells correspond to the timer, but the marked ones have some sort of other formatting.

benjy3gg avatar May 30 '22 18:05 benjy3gg

FYI, the changes mentioned above have now been included in the new v2.8.3 release of the library.

crankyoldgit avatar Sep 16 '22 00:09 crankyoldgit