IRremoteESP8266 icon indicating copy to clipboard operation
IRremoteESP8266 copied to clipboard

Add support for CARRIER 42WM100CT

Open Petititi opened this issue 2 years ago • 20 comments

Hi, I'm trying to control my AC device without luck. Here are the log of IRrecvDumpV2 :

IRrecvDump is now running and waiting for IR input on Pin 25
Timestamp : 000005.715
Library   : v2.8.4

Protocol  : UNKNOWN
Code      : 0xE366A1BC (86 Bits)
uint16_t rawData[171] = {5844, 1152,  1154, 462,  1152, 462,  418, 1194,  418, 1194,  420, 1194,  416, 1198,  418, 1196,  416, 1196,  418, 1194,  420, 1192,  420, 1194,  420, 1194,  1152, 460,  1152, 460,  420, 1192,  418, 1194,  1154, 458,  418, 1194,  420, 1192,  1154, 460,  1152, 458,  420, 1194,  418, 1194,  418, 1194,  1152, 460,  1154, 458,  418, 1196,  416, 1194,  418, 1194,  418, 1196,  420, 1194,  418, 1192,  420, 1194,  420, 1192,  418, 1196,  416, 1194,  416, 1196,  1152, 462,  416, 1194,  422, 1192,  1154, 458,  420, 1192,  418, 1194,  418, 1194,  418, 1196,  420, 1194,  418, 1192,  420, 1194,  418, 1192,  420, 1194,  418, 1194,  420, 1194,  418, 1194,  1154, 458,  418, 1194,  418, 1192,  1154, 458,  418, 1196,  416, 1194,  420, 1194,  416, 1192,  418, 1194,  1152, 462,  416, 1196,  1152, 458,  418, 1196,  1152, 458,  418, 1194,  1154, 460,  418, 1194,  418, 1196,  418, 1196,  418, 1194,  1154, 460,  420, 1192,  418, 1194,  420, 1194,  418, 1194,  418, 1196,  1152, 460,  418, 1194,  1154, 458,  1154, 460,  1152, 458,  1152};  // UNKNOWN E366A1BC


Timestamp : 000520.499
Library   : v2.8.4

Protocol  : UNKNOWN
Code      : 0x606EAF1C (86 Bits)
uint16_t rawData[171] = {5850, 1156,  1150, 460,  1152, 464,  412, 1200,  414, 1200,  416, 1196,  416, 1198,  414, 1198,  416, 1196,  416, 1198,  416, 1198,  414, 1200,  416, 1196,  1150, 462,  1150, 462,  416, 1200,  412, 1198,  1152, 460,  414, 1198,  416, 1196,  1152, 462,  1150, 462,  414, 1198,  414, 1198,  416, 1198,  1148, 462,  1150, 464,  414, 1198,  416, 1198,  412, 1200,  414, 1196,  416, 1198,  412, 1200,  412, 1198,  414, 1200,  414, 1198,  414, 1198,  414, 1200,  1152, 462,  414, 1196,  414, 1198,  1152, 462,  414, 1200,  416, 1196,  414, 1198,  414, 1200,  416, 1196,  414, 1200,  412, 1200,  414, 1198,  416, 1198,  414, 1198,  414, 1198,  414, 1200,  1148, 462,  412, 1198,  414, 1198,  1152, 462,  414, 1198,  416, 1196,  416, 1198,  1148, 464,  1150, 464,  412, 1198,  414, 1198,  414, 1202,  414, 1196,  414, 1200,  412, 1200,  416, 1198,  1148, 464,  412, 1200,  414, 1198,  414, 1200,  1146, 464,  414, 1200,  414, 1198,  1148, 464,  1152, 462,  410, 1202,  412, 1200,  412, 1200,  1148, 464,  1146, 466,  1148, 464,  1146};  // UNKNOWN 606EAF1C

Unfortunately, auto_analyse_raw_data.py doesn't understand the protocol:

Found 171 timing entries.
Potential Mark Candidates:
[5850, 1152, 416]
Potential Space Candidates:
[1202, 466]

Guessing encoding type:
Sorry, it looks like it is Mark encoded. I can't do that yet. Exiting.

Any clue of what happend?

Petititi avatar Jan 04 '23 21:01 Petititi

Auto analyze only has support for the most common way to send data.

Can you collect more data with lowest to highest temperature setting?

Also do you have a model number of the remote?

NiKiZe avatar Jan 04 '23 23:01 NiKiZe

Looking at the raw data, it appears this protocol uses a constant bit-time transmission protool.

crankyoldgit avatar Jan 05 '23 08:01 crankyoldgit

I've got some half-arsed decoding working. But the data portion of the protocol appears to be 84 bits long. We can handle unusual bit lengths <= 64 bits. Over 64, we need it to be in nice 8-bit chunks to work without horrible hacks. e.g. 80 or 88.

Out best bet is if ALL the raw messages start with the same 4 bits. That means the rawData needs to have this pattern: (i.e Numbers roughly the same, not exactly. e.g With in +/- 200 of the corresponding array)

uint16_t rawData[171] = {5844, 1152,  1154, 462,  1152, 462,  418, 1194,  418, 1194, ...

Let me know how you go with your data collection.

crankyoldgit avatar Jan 05 '23 10:01 crankyoldgit

Thanks a lot for your interest ! I dumped some frames in this file: Reuploaded below (had some errors) ! Tell me if this is enough and/or if I can do something else.

For the remote, I have those number, not sure if this is what @NiKiZe you called "model number of the remote": 3021203 RR03-S-Remote Control.

Petititi avatar Jan 05 '23 18:01 Petititi

IR dump.xlsx I also highlighted differences of config (and reversed last lines) to easily understand what can be expected to change in the version:

IR dump, with change.xlsx

Petititi avatar Jan 05 '23 18:01 Petititi

I've cobbled together something that tries to match and send this odd-ball protocol. Can you please download & test out branch https://github.com/crankyoldgit/IRremoteESP8266/tree/Issue1943 / PR #1945

Let me know how it goes. It's very experimental, so don't rely on the data yet. Please capture a full temperature range as we have still to work out the bit ordering. (assuming it works enought to capture state[] data for it.

crankyoldgit avatar Jan 06 '23 06:01 crankyoldgit

Hi ! Thanks a lot for your help. I captured those frames:

Timestamp : 000038.590
Library   : v2.8.4
Temp : 10
Protocol  : CARRIER_AC84
Code      : 0x0C00C08C004800488498D4 (84 Bits)
uint16_t rawData[171] = {5846, 1140,  1166, 466,  1148, 464,  412, 1202,  410, 1202,  412, 1200,  412, 1200,  412, 1202,  410, 1202,  412, 1198,  412, 1202,  410, 1202,  410, 1202,  1146, 464,  1148, 464,  412, 1200,  412, 1202,  412, 1216,  398, 1200,  412, 1200,  412, 1200,  1148, 464,  412, 1200,  412, 1200,  414, 1198,  1148, 462,  1150, 464,  412, 1200,  412, 1200,  414, 1200,  412, 1200,  412, 1200,  412, 1200,  412, 1200,  412, 1200,  414, 1200,  412, 1202,  412, 1202,  1144, 468,  412, 1212,  400, 1200,  1146, 466,  412, 1200,  414, 1198,  412, 1200,  412, 1200,  412, 1200,  412, 1200,  412, 1200,  412, 1200,  412, 1200,  412, 1200,  412, 1200,  412, 1200,  1148, 464,  410, 1200,  412, 1200,  1148, 464,  412, 1200,  414, 1202,  410, 1198,  1150, 462,  412, 1210,  402, 1200,  414, 1200,  412, 1202,  1146, 466,  410, 1202,  412, 1200,  1146, 466,  412, 1202,  412, 1200,  1148, 464,  1150, 462,  414, 1200,  412, 1200,  412, 1200,  1148, 462,  1150, 462,  412, 1198,  1148, 462,  414, 1202,  1146, 466,  410, 1198,  414, 1198,  1148};  // CARRIER_AC84
uint8_t state[11] = {0x0C, 0x00, 0xC0, 0x8C, 0x00, 0x48, 0x00, 0x48, 0x84, 0x98, 0xD4};


Timestamp : 000040.917
Library   : v2.8.4
Temp : 11
Protocol  : CARRIER_AC84
Code      : 0x0C00C88C00480048849834 (84 Bits)
uint16_t rawData[171] = {5856, 1132,  1150, 464,  1150, 462,  412, 1200,  416, 1200,  414, 1200,  412, 1202,  412, 1208,  406, 1200,  416, 1198,  412, 1198,  416, 1200,  414, 1196,  1150, 464,  1150, 462,  414, 1200,  414, 1206,  1142, 464,  412, 1202,  410, 1202,  412, 1200,  1150, 464,  414, 1198,  414, 1200,  414, 1200,  1150, 464,  1148, 462,  416, 1198,  412, 1202,  414, 1198,  412, 1200,  412, 1200,  416, 1196,  416, 1200,  412, 1202,  412, 1200,  414, 1198,  414, 1198,  1148, 464,  414, 1200,  414, 1198,  1150, 462,  416, 1200,  412, 1200,  412, 1200,  416, 1198,  414, 1198,  416, 1198,  412, 1200,  412, 1200,  414, 1198,  414, 1202,  412, 1200,  412, 1200,  1150, 462,  414, 1200,  412, 1200,  1150, 462,  412, 1200,  414, 1200,  414, 1200,  1148, 464,  416, 1200,  414, 1198,  414, 1198,  412, 1202,  1148, 464,  410, 1202,  412, 1206,  1142, 462,  414, 1202,  412, 1200,  1148, 464,  1148, 464,  414, 1198,  416, 1198,  414, 1200,  414, 1198,  412, 1200,  1148, 464,  1152, 462,  414, 1198,  1150, 462,  412, 1200,  414, 1200,  1148};  // CARRIER_AC84
uint8_t state[11] = {0x0C, 0x00, 0xC8, 0x8C, 0x00, 0x48, 0x00, 0x48, 0x84, 0x98, 0x34};


Timestamp : 000042.848
Library   : v2.8.4
Temp : 12
Protocol  : CARRIER_AC84
Code      : 0x0C00C48C004800488498B4 (84 Bits)
uint16_t rawData[171] = {5852, 1150,  1150, 466,  1148, 464,  414, 1198,  416, 1196,  416, 1198,  412, 1202,  412, 1200,  412, 1200,  416, 1198,  412, 1198,  414, 1202,  412, 1200,  1148, 466,  1150, 462,  414, 1200,  414, 1200,  414, 1198,  1152, 462,  414, 1198,  412, 1202,  1148, 464,  412, 1202,  412, 1200,  414, 1200,  1152, 460,  1148, 466,  414, 1198,  414, 1200,  414, 1200,  414, 1200,  416, 1198,  412, 1200,  412, 1200,  412, 1202,  414, 1196,  414, 1200,  414, 1200,  1150, 462,  412, 1200,  412, 1200,  1150, 464,  412, 1200,  414, 1200,  412, 1200,  412, 1200,  414, 1198,  416, 1200,  414, 1196,  414, 1198,  412, 1200,  416, 1198,  412, 1202,  414, 1200,  1150, 464,  412, 1202,  412, 1200,  1148, 464,  412, 1200,  414, 1202,  410, 1202,  1148, 462,  414, 1200,  414, 1200,  414, 1198,  414, 1200,  1150, 462,  412, 1200,  412, 1200,  1148, 464,  414, 1200,  414, 1200,  1150, 462,  1150, 464,  414, 1198,  416, 1200,  412, 1200,  1146, 464,  412, 1200,  1148, 464,  1150, 462,  416, 1198,  1150, 462,  416, 1198,  412, 1200,  1148};  // CARRIER_AC84
uint8_t state[11] = {0x0C, 0x00, 0xC4, 0x8C, 0x00, 0x48, 0x00, 0x48, 0x84, 0x98, 0xB4};


Timestamp : 000044.505
Library   : v2.8.4
Temp : 13
Protocol  : CARRIER_AC84
Code      : 0x0C00CC8C00480048849874 (84 Bits)
uint16_t rawData[171] = {5872, 1130,  1154, 462,  1150, 464,  412, 1200,  416, 1198,  414, 1200,  412, 1202,  414, 1198,  412, 1202,  414, 1200,  414, 1200,  410, 1200,  414, 1200,  1148, 464,  1148, 466,  412, 1200,  414, 1202,  1148, 464,  1148, 464,  414, 1200,  412, 1200,  1148, 466,  414, 1200,  412, 1200,  412, 1202,  1150, 464,  1148, 462,  412, 1200,  412, 1200,  412, 1202,  414, 1196,  414, 1200,  414, 1200,  414, 1198,  412, 1202,  414, 1200,  412, 1200,  414, 1200,  1148, 464,  414, 1198,  414, 1200,  1148, 468,  412, 1200,  414, 1200,  414, 1200,  416, 1198,  412, 1202,  414, 1198,  414, 1200,  412, 1202,  412, 1202,  412, 1200,  412, 1200,  412, 1200,  1148, 466,  412, 1200,  410, 1202,  1148, 462,  414, 1200,  410, 1200,  416, 1196,  1148, 466,  414, 1200,  414, 1200,  412, 1200,  414, 1200,  1148, 464,  414, 1200,  410, 1200,  1152, 464,  412, 1200,  414, 1200,  1150, 462,  1148, 466,  414, 1198,  414, 1200,  412, 1202,  412, 1200,  1150, 462,  1150, 464,  1148, 464,  414, 1198,  1150, 462,  412, 1202,  412, 1198,  1152};  // CARRIER_AC84
uint8_t state[11] = {0x0C, 0x00, 0xCC, 0x8C, 0x00, 0x48, 0x00, 0x48, 0x84, 0x98, 0x74};


Timestamp : 000046.167
Library   : v2.8.4
Temp : 14
Protocol  : CARRIER_AC84
Code      : 0x0C00C28C004800488498F4 (84 Bits)
uint16_t rawData[171] = {5870, 1134,  1150, 462,  1148, 464,  414, 1200,  412, 1202,  412, 1196,  414, 1200,  412, 1200,  412, 1200,  414, 1200,  412, 1200,  414, 1200,  412, 1200,  1148, 464,  1148, 464,  412, 1202,  414, 1198,  414, 1200,  414, 1200,  1148, 464,  412, 1200,  1150, 464,  414, 1200,  412, 1200,  414, 1196,  1150, 464,  1148, 464,  412, 1198,  412, 1200,  414, 1200,  412, 1200,  412, 1200,  414, 1200,  414, 1200,  412, 1202,  412, 1200,  414, 1200,  414, 1200,  1150, 464,  412, 1200,  416, 1200,  1148, 466,  410, 1202,  412, 1200,  412, 1202,  412, 1200,  412, 1200,  412, 1200,  416, 1196,  416, 1200,  412, 1200,  414, 1200,  414, 1200,  412, 1200,  1148, 464,  412, 1202,  412, 1200,  1150, 464,  414, 1200,  412, 1200,  412, 1200,  1150, 464,  414, 1200,  412, 1200,  412, 1200,  414, 1200,  1150, 464,  412, 1202,  414, 1198,  1150, 466,  412, 1200,  414, 1200,  1152, 464,  1150, 464,  412, 1200,  416, 1202,  410, 1200,  1150, 464,  1150, 462,  1152, 462,  1148, 464,  412, 1198,  1150, 464,  414, 1202,  414, 1198,  1150};  // CARRIER_AC84
uint8_t state[11] = {0x0C, 0x00, 0xC2, 0x8C, 0x00, 0x48, 0x00, 0x48, 0x84, 0x98, 0xF4};


Timestamp : 000047.610
Library   : v2.8.4
Temp : 15
Protocol  : CARRIER_AC84
Code      : 0x0C00CA8C0048004884980C (84 Bits)
uint16_t rawData[171] = {5854, 1134,  1148, 464,  1148, 462,  414, 1200,  414, 1198,  414, 1200,  412, 1202,  412, 1200,  414, 1200,  412, 1202,  410, 1200,  414, 1198,  414, 1198,  1148, 464,  1150, 464,  414, 1200,  412, 1200,  1148, 464,  414, 1198,  1148, 464,  414, 1198,  1148, 464,  412, 1200,  412, 1200,  416, 1198,  1148, 462,  1150, 464,  410, 1200,  414, 1198,  414, 1200,  414, 1198,  414, 1200,  414, 1198,  412, 1200,  414, 1200,  412, 1200,  412, 1200,  412, 1200,  1148, 462,  412, 1200,  412, 1200,  1150, 462,  412, 1200,  416, 1196,  414, 1200,  412, 1200,  412, 1200,  412, 1200,  412, 1200,  414, 1200,  410, 1200,  414, 1200,  412, 1198,  414, 1200,  1146, 466,  412, 1198,  416, 1198,  1148, 464,  412, 1198,  414, 1200,  414, 1200,  1146, 464,  414, 1196,  414, 1202,  412, 1200,  414, 1200,  1146, 466,  410, 1200,  414, 1200,  1150, 462,  412, 1202,  412, 1200,  1148, 464,  1148, 464,  414, 1198,  412, 1200,  412, 1200,  412, 1198,  412, 1200,  412, 1200,  416, 1198,  1148, 464,  1148, 462,  416, 1198,  414, 1200,  1146};  // CARRIER_AC84
uint8_t state[11] = {0x0C, 0x00, 0xCA, 0x8C, 0x00, 0x48, 0x00, 0x48, 0x84, 0x98, 0x0C};


Timestamp : 000049.037
Library   : v2.8.4
Temp : 16
Protocol  : CARRIER_AC84
Code      : 0x0C00C68C0048004884988C (84 Bits)
uint16_t rawData[171] = {5868, 1132,  1152, 462,  1150, 464,  412, 1200,  414, 1200,  414, 1198,  416, 1200,  414, 1200,  412, 1200,  414, 1198,  414, 1202,  412, 1198,  416, 1196,  1150, 466,  1148, 466,  412, 1200,  414, 1198,  416, 1198,  1148, 464,  1148, 466,  410, 1202,  1148, 462,  412, 1200,  414, 1198,  412, 1200,  1152, 464,  1146, 466,  412, 1200,  412, 1200,  414, 1202,  412, 1200,  412, 1200,  412, 1202,  414, 1200,  412, 1200,  414, 1202,  414, 1198,  414, 1200,  1150, 462,  414, 1200,  414, 1200,  1150, 462,  414, 1202,  414, 1200,  412, 1200,  414, 1200,  414, 1200,  414, 1198,  412, 1200,  414, 1200,  414, 1198,  414, 1198,  414, 1200,  414, 1198,  1150, 464,  412, 1198,  414, 1200,  1148, 462,  416, 1198,  414, 1198,  416, 1198,  1148, 464,  412, 1200,  414, 1200,  412, 1200,  414, 1200,  1148, 464,  412, 1200,  412, 1200,  1152, 462,  414, 1200,  414, 1200,  1148, 464,  1148, 464,  412, 1200,  414, 1202,  410, 1208,  1142, 464,  412, 1206,  408, 1204,  408, 1206,  1142, 470,  1142, 464,  414, 1204,  406, 1206,  1142};  // CARRIER_AC84
uint8_t state[11] = {0x0C, 0x00, 0xC6, 0x8C, 0x00, 0x48, 0x00, 0x48, 0x84, 0x98, 0x8C};


Timestamp : 000050.650
Library   : v2.8.4
Temp : 17
Protocol  : CARRIER_AC84
Code      : 0x0C00CE8C0048004884984C (84 Bits)
uint16_t rawData[171] = {5848, 1150,  1150, 464,  1148, 462,  414, 1200,  412, 1202,  410, 1200,  414, 1200,  414, 1198,  414, 1200,  412, 1200,  414, 1200,  412, 1200,  412, 1200,  1150, 464,  1150, 462,  412, 1202,  414, 1200,  1148, 464,  1148, 464,  1150, 464,  410, 1200,  1150, 462,  414, 1200,  412, 1200,  410, 1200,  1146, 466,  1148, 462,  414, 1200,  414, 1200,  414, 1196,  414, 1202,  414, 1198,  412, 1200,  416, 1200,  410, 1200,  412, 1200,  412, 1200,  412, 1200,  1150, 462,  412, 1202,  412, 1200,  1150, 464,  410, 1200,  414, 1198,  414, 1198,  414, 1200,  412, 1200,  414, 1200,  412, 1200,  412, 1200,  412, 1200,  414, 1198,  414, 1200,  414, 1198,  1148, 464,  414, 1198,  416, 1198,  1148, 462,  414, 1202,  414, 1200,  410, 1200,  1150, 464,  412, 1200,  414, 1196,  414, 1200,  414, 1198,  1150, 462,  414, 1200,  414, 1198,  1150, 462,  412, 1200,  414, 1200,  1148, 464,  1150, 464,  414, 1198,  414, 1200,  412, 1200,  414, 1200,  1150, 462,  412, 1198,  416, 1198,  1148, 464,  1150, 464,  412, 1202,  412, 1198,  1150};  // CARRIER_AC84
uint8_t state[11] = {0x0C, 0x00, 0xCE, 0x8C, 0x00, 0x48, 0x00, 0x48, 0x84, 0x98, 0x4C};


Timestamp : 000051.919
Library   : v2.8.4
Temp : 18
Protocol  : CARRIER_AC84
Code      : 0x0C00C18C004800488498CC (84 Bits)
uint16_t rawData[171] = {5832, 1156,  1150, 462,  1150, 462,  414, 1200,  414, 1202,  414, 1202,  410, 1200,  416, 1200,  412, 1202,  412, 1200,  412, 1200,  414, 1200,  414, 1200,  1150, 462,  1150, 464,  414, 1200,  414, 1198,  414, 1198,  416, 1198,  414, 1198,  1150, 464,  1148, 466,  414, 1200,  414, 1198,  412, 1202,  1150, 462,  1152, 462,  412, 1200,  414, 1202,  410, 1200,  412, 1202,  412, 1200,  412, 1198,  416, 1198,  412, 1202,  412, 1200,  412, 1198,  416, 1198,  1148, 464,  414, 1200,  412, 1200,  1148, 464,  412, 1200,  414, 1200,  412, 1200,  414, 1200,  414, 1200,  412, 1200,  412, 1198,  414, 1200,  414, 1200,  412, 1202,  414, 1198,  412, 1202,  1148, 464,  412, 1200,  414, 1200,  1148, 464,  414, 1198,  412, 1200,  414, 1200,  1148, 464,  414, 1200,  410, 1202,  412, 1200,  412, 1200,  1150, 464,  414, 1198,  412, 1200,  1148, 464,  414, 1200,  412, 1200,  1148, 462,  1150, 464,  412, 1200,  414, 1202,  412, 1200,  1148, 464,  1150, 462,  414, 1198,  414, 1198,  1150, 464,  1150, 462,  414, 1200,  412, 1200,  1148};  // CARRIER_AC84
uint8_t state[11] = {0x0C, 0x00, 0xC1, 0x8C, 0x00, 0x48, 0x00, 0x48, 0x84, 0x98, 0xCC};


Timestamp : 000053.289
Library   : v2.8.4
Temp : 19
Protocol  : CARRIER_AC84
Code      : 0x0C00C98C0048004884982C (84 Bits)
uint16_t rawData[171] = {5828, 1154,  1148, 464,  1150, 462,  416, 1198,  414, 1200,  414, 1200,  412, 1200,  414, 1200,  412, 1200,  414, 1200,  412, 1200,  412, 1200,  416, 1198,  1152, 464,  1148, 464,  412, 1198,  414, 1200,  1150, 466,  412, 1198,  414, 1200,  1148, 464,  1150, 464,  410, 1200,  414, 1200,  414, 1198,  1148, 466,  1150, 462,  412, 1200,  412, 1200,  412, 1200,  414, 1200,  410, 1200,  414, 1202,  412, 1198,  414, 1200,  414, 1200,  412, 1200,  412, 1200,  1150, 466,  410, 1200,  414, 1200,  1146, 464,  414, 1200,  414, 1198,  414, 1198,  414, 1202,  414, 1198,  412, 1200,  416, 1198,  412, 1200,  416, 1198,  412, 1200,  414, 1200,  414, 1200,  1148, 464,  414, 1200,  412, 1202,  1148, 464,  412, 1200,  414, 1202,  414, 1200,  1150, 462,  412, 1200,  414, 1198,  414, 1198,  414, 1200,  1148, 464,  412, 1200,  414, 1200,  1150, 462,  414, 1202,  410, 1200,  1150, 462,  1150, 464,  412, 1202,  412, 1200,  414, 1198,  416, 1196,  416, 1198,  1152, 462,  414, 1200,  1148, 464,  1150, 462,  416, 1198,  414, 1200,  1148};  // CARRIER_AC84
uint8_t state[11] = {0x0C, 0x00, 0xC9, 0x8C, 0x00, 0x48, 0x00, 0x48, 0x84, 0x98, 0x2C};


Timestamp : 000055.080
Library   : v2.8.4
Temp : 20
Protocol  : CARRIER_AC84
Code      : 0x0C00C04C004800488498DC (84 Bits)
uint16_t rawData[171] = {5856, 1148,  1150, 464,  1150, 462,  416, 1198,  414, 1200,  412, 1200,  416, 1198,  414, 1202,  412, 1198,  414, 1200,  412, 1198,  414, 1200,  414, 1198,  1150, 464,  1146, 464,  414, 1198,  412, 1202,  414, 1200,  412, 1200,  412, 1200,  412, 1200,  414, 1202,  1146, 464,  412, 1200,  414, 1202,  1148, 464,  1150, 464,  414, 1202,  412, 1200,  416, 1200,  412, 1200,  412, 1202,  414, 1198,  414, 1200,  414, 1202,  412, 1200,  414, 1202,  412, 1202,  1150, 462,  414, 1200,  412, 1200,  1148, 466,  414, 1198,  414, 1200,  414, 1200,  412, 1200,  414, 1200,  414, 1198,  414, 1202,  412, 1198,  414, 1200,  412, 1202,  414, 1200,  410, 1202,  1150, 462,  412, 1200,  412, 1202,  1146, 464,  414, 1200,  412, 1200,  412, 1200,  1148, 464,  412, 1200,  414, 1200,  412, 1200,  412, 1200,  1148, 462,  414, 1198,  414, 1200,  1150, 464,  410, 1200,  414, 1198,  1148, 466,  1150, 462,  412, 1200,  414, 1198,  414, 1200,  1146, 466,  1150, 462,  414, 1200,  1148, 464,  1148, 464,  1148, 462,  414, 1198,  414, 1198,  1150};  // CARRIER_AC84
uint8_t state[11] = {0x0C, 0x00, 0xC0, 0x4C, 0x00, 0x48, 0x00, 0x48, 0x84, 0x98, 0xDC};


Timestamp : 000056.569
Library   : v2.8.4
Temp : 21
Protocol  : CARRIER_AC84
Code      : 0x0C00C84C0048004884983C (84 Bits)
uint16_t rawData[171] = {5842, 1158,  1150, 464,  1146, 466,  412, 1200,  412, 1202,  408, 1200,  412, 1200,  412, 1200,  414, 1202,  412, 1202,  412, 1200,  414, 1198,  412, 1202,  1148, 464,  1148, 458,  420, 1198,  414, 1200,  1146, 464,  414, 1198,  414, 1200,  412, 1200,  414, 1202,  1148, 466,  410, 1200,  414, 1200,  1146, 464,  1148, 466,  410, 1202,  412, 1202,  410, 1202,  412, 1200,  412, 1202,  408, 1204,  410, 1200,  412, 1204,  412, 1200,  410, 1202,  412, 1200,  1150, 464,  412, 1202,  412, 1200,  1148, 466,  412, 1200,  410, 1202,  412, 1202,  412, 1200,  412, 1202,  412, 1200,  412, 1200,  412, 1202,  412, 1202,  412, 1200,  412, 1200,  412, 1200,  1148, 468,  412, 1200,  412, 1200,  1146, 466,  412, 1200,  412, 1200,  412, 1200,  1146, 466,  412, 1198,  412, 1200,  414, 1200,  410, 1202,  1148, 466,  412, 1200,  414, 1200,  1146, 466,  412, 1200,  414, 1200,  1146, 464,  1150, 464,  410, 1202,  410, 1202,  412, 1200,  414, 1200,  410, 1200,  1148, 466,  1146, 464,  1148, 466,  1150, 462,  412, 1200,  412, 1212,  1138};  // CARRIER_AC84
uint8_t state[11] = {0x0C, 0x00, 0xC8, 0x4C, 0x00, 0x48, 0x00, 0x48, 0x84, 0x98, 0x3C};


Timestamp : 000058.060
Library   : v2.8.4
Temp : 22
Protocol  : CARRIER_AC84
Code      : 0x0C00C44C004800488498BC (84 Bits)
uint16_t rawData[171] = {5810, 1168,  1136, 464,  1148, 464,  412, 1202,  414, 1212,  398, 1202,  412, 1200,  414, 1212,  398, 1204,  410, 1200,  412, 1200,  412, 1214,  398, 1200,  1148, 464,  1146, 466,  412, 1200,  414, 1200,  412, 1200,  1146, 466,  412, 1200,  412, 1200,  410, 1202,  1146, 466,  412, 1200,  410, 1202,  1146, 466,  1146, 464,  410, 1202,  412, 1200,  412, 1200,  412, 1200,  414, 1202,  410, 1202,  412, 1200,  412, 1200,  410, 1202,  412, 1200,  412, 1200,  1150, 462,  414, 1200,  412, 1200,  1146, 464,  412, 1200,  412, 1200,  416, 1198,  412, 1200,  416, 1198,  414, 1198,  414, 1200,  414, 1200,  414, 1200,  412, 1200,  414, 1198,  414, 1198,  1148, 466,  410, 1200,  414, 1200,  1150, 464,  412, 1200,  414, 1198,  414, 1200,  1146, 466,  414, 1202,  412, 1198,  412, 1200,  412, 1200,  1150, 464,  412, 1200,  414, 1200,  1148, 464,  414, 1200,  412, 1198,  1148, 466,  1146, 464,  414, 1198,  414, 1202,  412, 1198,  1148, 466,  412, 1200,  1148, 464,  1148, 462,  1148, 466,  1146, 464,  410, 1202,  412, 1200,  1146};  // CARRIER_AC84
uint8_t state[11] = {0x0C, 0x00, 0xC4, 0x4C, 0x00, 0x48, 0x00, 0x48, 0x84, 0x98, 0xBC};


Timestamp : 000059.832
Library   : v2.8.4
Temp : 23
Protocol  : CARRIER_AC84
Code      : 0x0C00CC4C0048004884987C (84 Bits)
uint16_t rawData[171] = {5846, 1158,  1148, 468,  1148, 464,  414, 1198,  414, 1184,  428, 1202,  412, 1200,  412, 1200,  414, 1200,  414, 1200,  410, 1204,  410, 1202,  412, 1200,  1148, 464,  1150, 464,  414, 1202,  410, 1202,  1148, 466,  1150, 464,  410, 1202,  412, 1202,  412, 1200,  1148, 466,  410, 1200,  412, 1200,  1150, 466,  1148, 464,  410, 1202,  410, 1202,  412, 1184,  430, 1200,  412, 1202,  412, 1198,  414, 1200,  410, 1204,  410, 1202,  412, 1186,  428, 1202,  1146, 466,  412, 1200,  410, 1186,  1164, 452,  426, 1200,  414, 1200,  412, 1204,  410, 1202,  412, 1200,  412, 1202,  412, 1200,  414, 1202,  412, 1200,  412, 1200,  414, 1200,  414, 1184,  1164, 444,  432, 1200,  412, 1202,  1148, 466,  412, 1200,  412, 1200,  414, 1200,  1148, 466,  412, 1200,  412, 1200,  412, 1200,  414, 1182,  1168, 464,  414, 1200,  412, 1200,  1150, 466,  410, 1200,  412, 1202,  1150, 464,  1148, 464,  412, 1200,  414, 1202,  412, 1200,  412, 1200,  1150, 466,  1150, 462,  1150, 466,  1148, 464,  1148, 464,  414, 1200,  414, 1202,  1146};  // CARRIER_AC84
uint8_t state[11] = {0x0C, 0x00, 0xCC, 0x4C, 0x00, 0x48, 0x00, 0x48, 0x84, 0x98, 0x7C};


Timestamp : 000061.338
Library   : v2.8.4
Temp : 24
Protocol  : CARRIER_AC84
Code      : 0x0C00C24C004800488498FC (84 Bits)
uint16_t rawData[171] = {5826, 1160,  1148, 466,  1148, 462,  414, 1202,  412, 1200,  412, 1198,  414, 1202,  412, 1200,  414, 1200,  412, 1200,  414, 1202,  412, 1200,  412, 1202,  1146, 466,  1148, 466,  412, 1200,  414, 1200,  412, 1200,  410, 1202,  1148, 464,  412, 1204,  410, 1202,  1148, 464,  414, 1202,  410, 1202,  1146, 466,  1150, 464,  412, 1202,  410, 1202,  412, 1200,  412, 1202,  414, 1200,  412, 1200,  412, 1202,  410, 1202,  412, 1204,  410, 1202,  412, 1200,  1150, 466,  410, 1200,  414, 1200,  1150, 464,  410, 1202,  412, 1200,  414, 1200,  414, 1198,  414, 1202,  412, 1200,  412, 1202,  412, 1204,  412, 1200,  410, 1202,  412, 1202,  412, 1200,  1150, 462,  412, 1202,  414, 1200,  1148, 466,  410, 1200,  412, 1202,  410, 1202,  1148, 466,  412, 1200,  412, 1200,  414, 1200,  412, 1204,  1144, 466,  412, 1202,  410, 1204,  1146, 466,  412, 1200,  412, 1200,  1150, 464,  1150, 464,  412, 1200,  412, 1204,  412, 1200,  1150, 464,  1148, 464,  1148, 466,  1146, 476,  1138, 464,  1150, 462,  414, 1200,  414, 1200,  1148};  // CARRIER_AC84
uint8_t state[11] = {0x0C, 0x00, 0xC2, 0x4C, 0x00, 0x48, 0x00, 0x48, 0x84, 0x98, 0xFC};


Timestamp : 000062.937
Library   : v2.8.4
Temp : 25
Protocol  : CARRIER_AC84
Code      : 0x0C00CA4C00480048849802 (84 Bits)
uint16_t rawData[171] = {5828, 1156,  1150, 452,  1160, 464,  412, 1200,  412, 1202,  414, 1200,  412, 1200,  412, 1200,  414, 1200,  410, 1200,  414, 1200,  410, 1200,  414, 1200,  1148, 464,  1148, 464,  412, 1200,  414, 1200,  1148, 466,  412, 1200,  1150, 466,  410, 1202,  412, 1200,  1148, 466,  412, 1204,  410, 1200,  1148, 466,  1148, 464,  412, 1200,  414, 1200,  414, 1200,  414, 1200,  412, 1200,  412, 1202,  412, 1202,  410, 1202,  408, 1204,  412, 1200,  412, 1200,  1148, 466,  414, 1198,  414, 1198,  1148, 466,  412, 1202,  412, 1200,  414, 1200,  410, 1202,  412, 1200,  414, 1200,  410, 1202,  412, 1202,  412, 1204,  410, 1204,  410, 1200,  414, 1202,  1146, 466,  410, 1200,  410, 1202,  1146, 468,  412, 1200,  414, 1198,  414, 1200,  1146, 466,  412, 1200,  410, 1200,  412, 1200,  412, 1200,  1148, 468,  408, 1200,  414, 1198,  1148, 466,  412, 1198,  414, 1200,  1148, 464,  1148, 464,  414, 1198,  414, 1200,  414, 1200,  410, 1202,  412, 1200,  412, 1200,  412, 1200,  412, 1198,  416, 1198,  1148, 464,  414, 1200,  1150};  // CARRIER_AC84
uint8_t state[11] = {0x0C, 0x00, 0xCA, 0x4C, 0x00, 0x48, 0x00, 0x48, 0x84, 0x98, 0x02};


Timestamp : 000064.628
Library   : v2.8.4
Temp : 26
Protocol  : CARRIER_AC84
Code      : 0x0C00C64C00480048849882 (84 Bits)
uint16_t rawData[171] = {5846, 1158,  1148, 464,  1148, 466,  412, 1200,  412, 1202,  412, 1202,  412, 1200,  412, 1200,  412, 1202,  412, 1202,  410, 1202,  412, 1204,  410, 1200,  1150, 462,  1148, 464,  410, 1204,  410, 1200,  412, 1200,  1146, 466,  1146, 466,  412, 1200,  414, 1202,  1146, 468,  412, 1200,  414, 1200,  1148, 466,  1146, 466,  414, 1200,  412, 1200,  412, 1202,  412, 1200,  410, 1202,  414, 1200,  412, 1200,  412, 1202,  410, 1202,  412, 1202,  412, 1200,  1150, 464,  412, 1198,  414, 1198,  1150, 466,  412, 1198,  414, 1198,  412, 1202,  412, 1200,  412, 1200,  412, 1204,  412, 1200,  412, 1202,  412, 1200,  412, 1202,  408, 1204,  412, 1202,  1148, 464,  412, 1202,  410, 1204,  1148, 464,  412, 1200,  414, 1202,  410, 1202,  1148, 464,  412, 1202,  410, 1202,  412, 1200,  412, 1202,  1146, 466,  410, 1202,  412, 1200,  1148, 466,  412, 1202,  412, 1202,  1148, 464,  1146, 466,  412, 1202,  412, 1200,  414, 1202,  1148, 466,  410, 1202,  412, 1202,  412, 1200,  412, 1202,  410, 1202,  1150, 464,  414, 1200,  1146};  // CARRIER_AC84
uint8_t state[11] = {0x0C, 0x00, 0xC6, 0x4C, 0x00, 0x48, 0x00, 0x48, 0x84, 0x98, 0x82};


Timestamp : 000066.239
Library   : v2.8.4
Temp : 27
Protocol  : CARRIER_AC84
Code      : 0x0C00CE4C00480048849842 (84 Bits)
uint16_t rawData[171] = {5848, 1138,  1142, 464,  1150, 468,  406, 1200,  414, 1206,  404, 1208,  406, 1198,  416, 1204,  406, 1208,  406, 1206,  408, 1206,  408, 1208,  406, 1206,  1142, 470,  1142, 460,  416, 1204,  406, 1206,  1142, 472,  1144, 468,  1142, 470,  408, 1200,  412, 1206,  1142, 472,  408, 1204,  408, 1206,  1142, 472,  1142, 462,  414, 1208,  406, 1198,  414, 1198,  414, 1206,  406, 1206,  408, 1200,  414, 1208,  404, 1208,  408, 1204,  406, 1200,  414, 1206,  1142, 472,  406, 1206,  406, 1206,  1144, 468,  408, 1206,  406, 1200,  412, 1206,  408, 1198,  412, 1202,  414, 1206,  406, 1206,  408, 1198,  412, 1210,  404, 1200,  412, 1200,  414, 1208,  1140, 472,  408, 1204,  408, 1206,  1142, 462,  414, 1206,  406, 1206,  408, 1198,  1150, 464,  414, 1200,  414, 1200,  412, 1198,  414, 1208,  1142, 464,  414, 1198,  416, 1206,  1140, 470,  406, 1200,  414, 1206,  1142, 470,  1142, 462,  416, 1198,  414, 1200,  412, 1208,  404, 1208,  1142, 470,  406, 1198,  416, 1196,  416, 1198,  414, 1200,  1150, 462,  414, 1198,  1148};  // CARRIER_AC84
uint8_t state[11] = {0x0C, 0x00, 0xCE, 0x4C, 0x00, 0x48, 0x00, 0x48, 0x84, 0x98, 0x42};


Timestamp : 000067.782
Library   : v2.8.4
Temp : 28
Protocol  : CARRIER_AC84
Code      : 0x0C00C14C004800488498C2 (84 Bits)
uint16_t rawData[171] = {5854, 1130,  1150, 462,  1150, 464,  414, 1196,  416, 1196,  416, 1198,  412, 1202,  414, 1200,  414, 1198,  412, 1200,  414, 1200,  414, 1200,  414, 1200,  1148, 464,  1148, 462,  414, 1200,  414, 1200,  414, 1198,  414, 1200,  414, 1202,  1148, 462,  414, 1200,  1150, 462,  414, 1200,  414, 1200,  1150, 464,  1148, 464,  412, 1202,  410, 1202,  414, 1200,  414, 1200,  414, 1200,  416, 1200,  414, 1200,  414, 1200,  414, 1200,  414, 1200,  414, 1198,  1150, 464,  412, 1202,  412, 1200,  1150, 462,  414, 1200,  414, 1198,  414, 1202,  414, 1198,  416, 1198,  414, 1200,  414, 1198,  416, 1200,  412, 1200,  412, 1200,  412, 1200,  416, 1198,  1150, 462,  414, 1200,  414, 1198,  1152, 464,  412, 1200,  414, 1200,  414, 1200,  1150, 462,  414, 1200,  414, 1202,  412, 1198,  414, 1200,  1150, 464,  412, 1200,  414, 1200,  1148, 464,  412, 1200,  414, 1200,  1150, 462,  1148, 466,  414, 1198,  412, 1200,  414, 1198,  1150, 464,  1150, 462,  414, 1200,  414, 1198,  414, 1200,  414, 1198,  1150, 464,  412, 1200,  1150};  // CARRIER_AC84
uint8_t state[11] = {0x0C, 0x00, 0xC1, 0x4C, 0x00, 0x48, 0x00, 0x48, 0x84, 0x98, 0xC2};


Timestamp : 000069.359
Library   : v2.8.4
Temp : 29
Protocol  : CARRIER_AC84
Code      : 0x0C00C94C00480048849822 (84 Bits)
uint16_t rawData[171] = {5844, 1156,  1150, 464,  1148, 464,  412, 1200,  412, 1200,  414, 1200,  412, 1198,  414, 1200,  414, 1200,  412, 1200,  412, 1200,  412, 1200,  412, 1200,  1150, 464,  1148, 464,  412, 1200,  412, 1200,  1148, 464,  414, 1198,  412, 1200,  1150, 464,  414, 1200,  1148, 464,  414, 1198,  414, 1200,  1148, 464,  1148, 464,  414, 1200,  412, 1200,  412, 1204,  410, 1200,  414, 1200,  412, 1200,  414, 1198,  414, 1202,  414, 1198,  412, 1200,  412, 1200,  1150, 464,  412, 1200,  414, 1198,  1150, 464,  414, 1200,  412, 1200,  412, 1202,  412, 1198,  414, 1200,  412, 1200,  414, 1198,  414, 1202,  412, 1200,  414, 1198,  414, 1202,  414, 1200,  1150, 462,  412, 1200,  414, 1200,  1150, 466,  410, 1200,  414, 1198,  412, 1200,  1148, 466,  412, 1200,  412, 1200,  414, 1200,  412, 1202,  1150, 464,  410, 1200,  414, 1200,  1150, 462,  416, 1200,  412, 1200,  1148, 466,  1146, 464,  414, 1200,  414, 1198,  414, 1200,  414, 1198,  414, 1202,  1150, 464,  412, 1202,  410, 1198,  414, 1202,  1150, 462,  414, 1198,  1150};  // CARRIER_AC84
uint8_t state[11] = {0x0C, 0x00, 0xC9, 0x4C, 0x00, 0x48, 0x00, 0x48, 0x84, 0x98, 0x22};


Timestamp : 000070.656
Library   : v2.8.4
Temp : 30
Protocol  : CARRIER_AC84
Code      : 0x0C00C0CC004800488498D2 (84 Bits)
uint16_t rawData[171] = {5828, 1156,  1150, 466,  1148, 464,  412, 1200,  412, 1200,  414, 1198,  412, 1202,  414, 1200,  414, 1198,  412, 1200,  414, 1198,  412, 1202,  412, 1200,  1150, 466,  1148, 468,  410, 1200,  412, 1200,  412, 1200,  414, 1200,  412, 1200,  414, 1200,  1150, 466,  1146, 466,  412, 1200,  414, 1200,  1148, 464,  1150, 462,  412, 1200,  414, 1200,  412, 1200,  414, 1200,  414, 1200,  412, 1200,  414, 1198,  414, 1198,  416, 1200,  412, 1200,  414, 1202,  1150, 462,  414, 1200,  414, 1200,  1148, 464,  416, 1196,  416, 1200,  412, 1202,  410, 1200,  416, 1198,  414, 1200,  412, 1202,  412, 1200,  414, 1200,  414, 1200,  410, 1200,  414, 1198,  1148, 466,  412, 1202,  414, 1198,  1150, 462,  412, 1198,  414, 1200,  414, 1200,  1148, 464,  414, 1200,  412, 1200,  412, 1200,  412, 1200,  1148, 464,  412, 1200,  412, 1202,  1148, 464,  412, 1202,  412, 1200,  1148, 466,  1148, 464,  412, 1200,  414, 1200,  414, 1198,  1150, 464,  1148, 464,  412, 1200,  1148, 464,  412, 1202,  412, 1198,  1148, 466,  412, 1200,  1148};  // CARRIER_AC84
uint8_t state[11] = {0x0C, 0x00, 0xC0, 0xCC, 0x00, 0x48, 0x00, 0x48, 0x84, 0x98, 0xD2};

The signal seems quite noisy as I have to be very (very) close to the receptor to have a good response... Do you think we can have some tolerance (or increase it) around the bit-time ?

Petititi avatar Jan 06 '23 18:01 Petititi

I found that there is a const uint8_t tolerance parameter. I'll try to play a bit with it (as well as slightly modify kCarrierAc84XXX) edit: I try those setting:

const uint16_t kCarrierAc84Zero = 1175;
const uint16_t kCarrierAc84One = 430;

and it seems to be a lot better (no need to play with const uint8_t tolerance and I have a strong signal)

Petititi avatar Jan 06 '23 19:01 Petititi

I'll look at changing those parameters. I need to change the bit ordering as the data you've collected indicates it is LSBF, not MSBF order.

crankyoldgit avatar Jan 07 '23 07:01 crankyoldgit

Using your insights, I am now able to get data which seems correct, but I had to do something I don't fully understand: in matchGenericConstBitTime I had to change the bit shift from result <<= 1; to result <<= 2;. That way, I get something like that:

20°, à 9:43 =>
0x11, 0x00, 0x03, 0x32, 0x00, 0x12, 0x00, 0x12, 0x43, 0x09, 0x5C
           0     2       12:00       12:00      9:43            ??
16°, à 9:47 =>
0x11, 0x00, 0x63, 0x31, 0x00, 0x12, 0x00, 0x12, 0x47, 0x09, 0x92
           6     1       12:00       12:00      9:47            ??

Petititi avatar Jan 07 '23 08:01 Petititi

Please try the updated branch.

crankyoldgit avatar Jan 07 '23 09:01 crankyoldgit

That's perfect 😍 !!! For what I understand, the message is constructed like that (from left to right byte):

  • 0x03 => off ; 0x0C => on
  • 0xXY => X: fan speed (0:auto, 1-3); Y: mode (2:only fan, 3:heat, 4:cold, 0:auto)
  • 0xXY => X: small digit of consign temp; Y: In binary 0bABCD: A:timer on/off; B:Swing mode on/off; C & D always 1?
  • 0xXY => X: always '0011'? ; Y: big digit of consign temp
  • 0xXX => minute of the timer start
  • 0xXX => hour of the timer start
  • 0xXX => minute of the timer end
  • 0xXX => hour of the timer end
  • 0xXX => current minute
  • 0xXX => current hour
  • 0xXX => ??? A sort of CRC?

Petititi avatar Jan 07 '23 10:01 Petititi

As a side note, I still have sometimes burst that are not recognized. I can try to play with different values but as I don't fully understand the meaning behind those, I'll probably not do something correct. For instance, this one isn't recognized:

uint16_t rawData[171] = {5828, 1158,  1148, 464,  1148, 494,  384, 1200,  414, 1202,  412, 1202,  410, 1204,  408, 1204,  408, 1206,  408, 1228,  386, 1202,  408, 1232,  386, 1202,  1148, 464,  1146, 468,  412, 1200,  384, 1230,  412, 1200,  412, 1200,  410, 1204,  412, 1200,  412, 1202,  1146, 468,  410, 1202,  410, 1204,  1146, 466,  1146, 464,  410, 1230,  386, 1198,  414, 1200,  412, 1202,  410, 1202,  410, 1200,  410, 1204,  408, 1204,  410, 1202,  412, 1226,  386, 1202,  1144, 468,  408, 1204,  410, 1200,  1146, 468,  412, 1198,  410, 1206,  408, 1202,  410, 1228,  384, 1228,  386, 1202,  410, 1202,  412, 1202,  408, 1202,  410, 1202,  408, 1202,  410, 1204,  1146, 464,  412, 1202,  412, 1200,  1146, 468,  408, 1202,  412, 1200,  382, 1232,  1146, 488,  1122, 466,  410, 1228,  386, 1200,  1146, 492,  1118, 466,  412, 1202,  410, 1204,  1146, 464,  414, 1198,  410, 1204,  410, 1202,  1150, 464,  410, 1202,  412, 1202,  410, 1226,  386, 1200,  410, 1228,  1148, 440,  1148, 466,  1144, 468,  408, 1202,  1144, 470,  1144, 492,  1120};  // UNKNOWN 4CC7BE54

This one is correctly recognized (with the same meaning):

uint16_t rawData[171] = {5828, 1158,  1150, 466,  1148, 462,  414, 1200,  414, 1198,  414, 1198,  414, 1202,  414, 1200,  412, 1198,  414, 1200,  412, 1202,  414, 1200,  412, 1200,  1146, 468,  1146, 466,  412, 1198,  414, 1202,  412, 1200,  412, 1200,  414, 1200,  414, 1198,  416, 1198,  1150, 464,  414, 1198,  414, 1200,  1146, 466,  1148, 464,  416, 1198,  412, 1202,  414, 1200,  412, 1200,  412, 1198,  414, 1200,  412, 1202,  412, 1198,  414, 1200,  414, 1198,  414, 1200,  1150, 462,  412, 1202,  412, 1200,  1148, 466,  410, 1202,  412, 1200,  412, 1202,  412, 1200,  414, 1198,  414, 1200,  412, 1200,  416, 1198,  414, 1198,  414, 1200,  416, 1198,  414, 1198,  1156, 458,  414, 1200,  414, 1198,  1150, 462,  414, 1198,  414, 1198,  414, 1198,  1150, 462,  1150, 462,  416, 1198,  416, 1198,  1150, 464,  1148, 464,  414, 1200,  414, 1200,  1150, 462,  412, 1200,  416, 1198,  414, 1198,  1150, 464,  414, 1198,  416, 1198,  414, 1200,  412, 1198,  418, 1196,  1150, 464,  1148, 464,  1150, 462,  414, 1198,  1150, 464,  1150, 462,  1152};  // CARRIER_AC84
uint8_t state[11] = {0x03, 0x00, 0x03, 0x32, 0x00, 0x12, 0x00, 0x12, 0x33, 0x11, 0xDC};

Do you have some tips of how to proceed to be more robust? Adjusting kCarrierAc84Zero and kCarrierAc84One is the best way or do I have an other option?

(but I fully understand that at some point, we can't recognize the frame, I just want to be sure that we can't improve stability more).

Petititi avatar Jan 07 '23 10:01 Petititi

I'll look into improving the matching. You'll need to workout the checksum part/calculation as that will be critical to getting this supported. I suggest you focus on working out how to calculate it before everything else.

crankyoldgit avatar Jan 07 '23 11:01 crankyoldgit

I'll work on it, do you have any guess or other protocols which does a similar control bits?

Petititi avatar Jan 07 '23 12:01 Petititi

I'll work on it, do you have any guess or other protocols which does a similar control bits?

See/read: https://github.com/crankyoldgit/IRremoteESP8266/wiki/Adding-support-for-a-new-AC-protocol#integrity-checks

crankyoldgit avatar Jan 07 '23 13:01 crankyoldgit

Thanks a lot for your link, it help me a lot ! So that wasn't very easy, but I figured it out. Using the following code, I am able to compute the correct integrity check byte:

      u_int32_t CRC1 = 0, CRC2 = results->state[0];
      for (uint16_t i = 1; i < nbytes - 1; i++)
      {
        // 16 bit crc
        CRC1 = CRC1 + (results->state[i] & 0x0F);
        CRC2 = CRC2 + ((results->state[i]>>4) & 0x0F);
      }
      u_int8_t CRC = (CRC1<<4) + CRC2;

Petititi avatar Jan 07 '23 14:01 Petititi

I tried to send some datas ~~without success~~ (Edit, it was working, just need more power...).. Here is what I tried:

IRsend irSend(26/*PIN  NUMBER*/, true);
void setup() {
  irSend.begin();
  irSend.enableIROut(38);
}
void loop(){
  uint8_t stateTmp[11] = {0x0C, 0x00, 0xC0, 0x8C, 0x00, 0x48, 0x00, 0x48, 0x84, 0x98, 0xD4};
  irSend.sendCarrierAC84(stateTmp);
  sleep(1);
}

Petititi avatar Jan 08 '23 12:01 Petititi

I saw the IRCarrierAc64 class, I'll try to use inheritance and create an IRCarrierAc84, do you think it is the best way to do it?

Petititi avatar Jan 09 '23 21:01 Petititi

Unless a lot of the bits line up the same, I wouldn't bother with inheritance.

crankyoldgit avatar Jan 09 '23 22:01 crankyoldgit