Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for CARRIER 42WM100CT #1943

Open
Petititi opened this issue Jan 4, 2023 · 20 comments
Open

Add support for CARRIER 42WM100CT #1943

Petititi opened this issue Jan 4, 2023 · 20 comments
Assignees
Labels
enhancement more info Pending Confirmation Waiting for confirmation from user

Comments

@Petititi
Copy link

Petititi commented Jan 4, 2023

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?

@NiKiZe
Copy link
Collaborator

NiKiZe commented Jan 4, 2023

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?

@crankyoldgit
Copy link
Owner

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

@crankyoldgit
Copy link
Owner

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.

@Petititi
Copy link
Author

Petititi commented Jan 5, 2023

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
Copy link
Author

Petititi commented Jan 5, 2023

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

crankyoldgit added a commit that referenced this issue Jan 6, 2023
* Add `sendCarrierAC84()` and `decodeCarrierAC84()` routines.
* Create some unit tests to cover the new code.
* Hack in some support for non-byte-aligned > 64 bit protocols.
* Update supported devices.

For #1943
@crankyoldgit
Copy link
Owner

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 crankyoldgit added more info Pending Confirmation Waiting for confirmation from user labels Jan 6, 2023
@Petititi
Copy link
Author

Petititi commented Jan 6, 2023

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
Copy link
Author

Petititi commented Jan 6, 2023

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)

@crankyoldgit
Copy link
Owner

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.

@Petititi
Copy link
Author

Petititi commented Jan 7, 2023

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

crankyoldgit added a commit that referenced this issue Jan 7, 2023
* Update timing info for better real-world matching.

For #1943
@crankyoldgit
Copy link
Owner

Please try the updated branch.

@Petititi
Copy link
Author

Petititi commented Jan 7, 2023

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
Copy link
Author

Petititi commented Jan 7, 2023

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).

@crankyoldgit
Copy link
Owner

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.

@Petititi
Copy link
Author

Petititi commented Jan 7, 2023

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

@crankyoldgit
Copy link
Owner

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

@Petititi
Copy link
Author

Petititi commented Jan 7, 2023

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
Copy link
Author

Petititi commented Jan 8, 2023

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
Copy link
Author

Petititi commented Jan 9, 2023

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?

@crankyoldgit
Copy link
Owner

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

crankyoldgit added a commit that referenced this issue Jan 18, 2023
* Increase tolerance for this protocol by 5%.
* Add unit test based on previously not-recognised capture.
* Fix typos in unit tests.
* Update decode status to STABLE.

For #1943
crankyoldgit added a commit that referenced this issue Jan 18, 2023
* Add `sendCarrierAC84()` and `decodeCarrierAC84()` routines.
* Create some unit tests to cover the new code.
* Hack in some support for non-byte-aligned > 64 bit protocols.
* Update supported devices.

For #1943
crankyoldgit added a commit that referenced this issue Mar 5, 2023
_v2.8.5 (20230305)_

**[Bug Fixes]**
- Missing argument in use of midea function (#1959 #1958)
- IRMQTTServer: Improve HA MQTT climate handling. (#1911)
- SEND_SANYO_AC88: Fix poor cut-n-paste error (#1905 #1897)

**[Features]**
- IRMQTTServer: SHT-3x Temperature Sensor Support (#1951)
- IRMQTTServer: HA multi output discovery (#1947)
- IRMQTTServer: extended with new A/C common fields (#1940)
- IRMQTTServer: Sync the on state to power from mode for HA (#1946)
- Experimental basic support for Carrier 84-bit protocol. (#1945 #1943)
- Add support the WowWee 11-Bit RoboRaptor-X protocol. (#1939 #1938)
- Added 'sensorTemperature' and 'iFeel' to IRac (common) (#1928)
- Added extra 'mid' option for Fan & SwingV to IRac (#1929)
- Added "commandType" to IRAc (#1921)
- Added support for Argo WREM-3 A/C remote protocol [part1] (#1920)
- Added Dutch (nl-NL) translation (#1907)
- ARGO: Improve code & add support for decoding 32bit sensor msgs. (#1906 #1859)
- Added support for Gorenje cooker hood IR protocol (#1888 #1887)

**[Misc]**
- Update `XMP` status to Stable (#1944)
- upgrade to a later version of `googletest` (#1936)
- MITSUBISHI128: Added model to supported protocol (#1924)
- Added Dutch (nl-NL) README (#1908)
- Added GMock to UT Makefile (#1902)
- Update HA example config for HA 2022.6+ (#1901 #1900)
crankyoldgit added a commit that referenced this issue May 8, 2023
_v2.8.5 (20230508)_

**[Bug Fixes]**
- Fix a bug where we never detached the timer interrupt on ESP32s. (#1984 #1983)
- Missing argument in use of midea function (#1959 #1958)
- IRMQTTServer: Improve HA MQTT climate handling. (#1911)
- SEND_SANYO_AC88: Fix poor cut-n-paste error (#1905 #1897)

**[Features]**
- Add support for a 40bit variant of the standard Panasonic protocol (#1977 @1976)
- Initial support for York AC protocol (#1889)
- IRMQTTServer: SHT-3x Temperature Sensor Support (#1951)
- IRMQTTServer: HA multi output discovery (#1947)
- IRMQTTServer: extended with new A/C common fields (#1940)
- IRMQTTServer: Sync the on state to power from mode for HA (#1946)
- Experimental basic support for Carrier 84-bit protocol. (#1945 #1943)
- Add support the WowWee 11-Bit RoboRaptor-X protocol. (#1939 #1938)
- Added 'sensorTemperature' and 'iFeel' to IRac (common) (#1928)
- Added extra 'mid' option for Fan & SwingV to IRac (#1929)
- Added "commandType" to IRAc (#1921)
- Added support for Argo WREM-3 A/C remote protocol [part1] (#1920)
- Added Dutch (nl-NL) translation (#1907)
- ARGO: Improve code & add support for decoding 32bit sensor msgs. (#1906 #1859)
- Added support for Gorenje cooker hood IR protocol (#1888 #1887)

**[Misc]**
- Add Electrolux YKR-H/531E as a supported device (#1981 #1980)
- Update `XMP` status to Stable (#1944)
- upgrade to a later version of `googletest` (#1936)
- MITSUBISHI128: Added model to supported protocol (#1924)
- Added Dutch (nl-NL) README (#1908)
- Added GMock to UT Makefile (#1902)
- Update HA example config for HA 2022.6+ (#1901 #1900)
- Add a `d1_mini_noMDNS` build option to `IRMQTTServer`. (#1985)
crankyoldgit added a commit that referenced this issue May 8, 2023
## _v2.8.5 (20230508)_

**[Bug Fixes]**
- Fix a bug where we never detached the timer interrupt on ESP32s. (#1984 #1983)
- Missing argument in use of midea function (#1959 #1958)
- IRMQTTServer: Improve HA MQTT climate handling. (#1911)
- SEND_SANYO_AC88: Fix poor cut-n-paste error (#1905 #1897)

**[Features]**
- Add support for a 40bit variant of the standard Panasonic protocol (#1977 @1976)
- Initial support for York AC protocol (#1889)
- IRMQTTServer: SHT-3x Temperature Sensor Support (#1951)
- IRMQTTServer: HA multi output discovery (#1947)
- IRMQTTServer: extended with new A/C common fields (#1940)
- IRMQTTServer: Sync the on state to power from mode for HA (#1946)
- Experimental basic support for Carrier 84-bit protocol. (#1945 #1943)
- Add support the WowWee 11-Bit RoboRaptor-X protocol. (#1939 #1938)
- Added 'sensorTemperature' and 'iFeel' to IRac (common) (#1928)
- Added extra 'mid' option for Fan & SwingV to IRac (#1929)
- Added "commandType" to IRAc (#1921)
- Added support for Argo WREM-3 A/C remote protocol [part1] (#1920)
- Added Dutch (nl-NL) translation (#1907)
- ARGO: Improve code & add support for decoding 32bit sensor msgs. (#1906 #1859)
- Added support for Gorenje cooker hood IR protocol (#1888 #1887)

**[Misc]**
- Add Electrolux YKR-H/531E as a supported device (#1981 #1980)
- Update `XMP` status to Stable (#1944)
- upgrade to a later version of `googletest` (#1936)
- MITSUBISHI128: Added model to supported protocol (#1924)
- Added Dutch (nl-NL) README (#1908)
- Added GMock to UT Makefile (#1902)
- Update HA example config for HA 2022.6+ (#1901 #1900)
- Add a `d1_mini_noMDNS` build option to `IRMQTTServer`. (#1985)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement more info Pending Confirmation Waiting for confirmation from user
Projects
None yet
Development

No branches or pull requests

3 participants