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

GYKQ-52 TCl112AC remote is detected as various model depending on the mode #1896

Open
soosp opened this issue Oct 4, 2022 · 3 comments
Open
Assignees

Comments

@soosp
Copy link

soosp commented Oct 4, 2022

Version/revision of the library used

v2.8.4

Describe the bug

GYKQ-52 TCl112AC remote (e.g.: https://www.aliexpress.com/item/1005004519422388.html) is detected as various model depending on the mode:
Cool mode: TAC09CHSD
Dry mode: TAC09CHSD
Fan mode: TAC09CHSD
Heat mode: GZ055BE1
Auto mode: GZ055BE1

It seems that the bit 7 of byte 12 is changing mode by mode and fools the IRTcl112Ac::isTcl function. It is annoying because some status element in not displayed by IRTcl112Ac::toString in Heat and Auto modes.

To Reproduce

  1. Compile and upload IRrecvDumpV2
  2. Set modes an see the output

Example code used

IRrecvDumpV2

Expected behaviour

The type of remote does not change

Output of raw data from IRrecvDumpV2.ino or V3 (if applicable)

Timestamp : 001039.412
Library   : v2.8.4

Protocol  : TCL112AC
Code      : 0x23CB260100240808400000000089 (112 Bits)
Mesg Desc.: Model: 2 (GZ055BE1), Type: 1, Power: On, Mode: 8 (Auto), Temp: 23C, Fan: 0 (Auto), Swing(V): 0 (Auto), On Timer: Off, Off Timer: Off
uint16_t rawData[227] = {3038, 1652,  492, 1068,  496, 1066,  500, 320,  498, 320,  498, 322,  498, 1064,  500, 318,  500, 326,  492, 1070,  496, 1066,  498, 320,  498, 1064,  502, 318,  502, 318,  500, 1060,  494, 1076,  500, 320,  500, 1062,  492, 1070,  496, 324,  494, 324,  496, 1068,  496, 322,  496, 330,  500, 1062,  492, 328,  492, 328,  492, 328,  500, 318,  502, 318,  500, 320,  500, 328,  492, 328,  502, 318,  500, 320,  500, 318,  500, 320,  498, 322,  498, 322,  496, 328,  500, 320,  500, 320,  498, 1062,  492, 328,  502, 318,  502, 1060,  494, 326,  494, 332,  496, 324,  496, 324,  494, 326,  494, 1068,  498, 322,  498, 322,  496, 324,  496, 332,  498, 320,  498, 322,  496, 322,  496, 1066,  500, 320,  498, 320,  500, 320,  498, 328,  502, 318,  500, 320,  500, 320,  498, 322,  498, 322,  498, 322,  498, 1064,  500, 326,  492, 326,  492, 328,  502, 318,  502, 318,  500, 320,  500, 320,  500, 320,  498, 328,  502, 318,  500, 320,  500, 320,  498, 320,  498, 322,  498, 322,  498, 322,  496, 330,  500, 320,  500, 320,  498, 322,  498, 322,  496, 322,  496, 324,  496, 324,  496, 332,  498, 322,  498, 324,  496, 322,  496, 324,  496, 324,  494, 324,  494, 326,  492, 334,  496, 1066,  500, 320,  500, 320,  498, 1064,  502, 318,  502, 318,  500, 318,  500, 1064,  470};  // TCL112AC
uint8_t state[14] = {0x23, 0xCB, 0x26, 0x01, 0x00, 0x24, 0x08, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x89};


Timestamp : 001045.981
Library   : v2.8.4

Protocol  : TCL112AC
Code      : 0x23CB2601002403080000000080C4 (112 Bits)
Mesg Desc.: Model: 1 (TAC09CHSD), Type: 1, Power: On, Mode: 3 (Cool), Temp: 23C, Fan: 0 (Auto), Swing(V): 0 (Auto), Swing(H): Off, Econo: Off, Health: Off, Turbo: Off, Light: On, On Timer: Off, Off Timer: Off
uint16_t rawData[227] = {3036, 1652,  502, 1060,  494, 1068,  496, 322,  496, 324,  496, 324,  496, 1066,  498, 322,  498, 328,  502, 1060,  494, 1068,  496, 322,  498, 1064,  500, 320,  498, 320,  498, 1064,  502, 1068,  498, 322,  496, 1064,  500, 1062,  494, 326,  494, 326,  492, 1070,  494, 324,  494, 332,  498, 1064,  500, 318,  500, 320,  500, 320,  498, 320,  498, 322,  498, 322,  496, 330,  500, 320,  498, 322,  498, 322,  498, 322,  496, 322,  498, 322,  496, 324,  496, 332,  498, 322,  496, 324,  496, 1066,  500, 320,  498, 320,  498, 1062,  492, 328,  502, 324,  494, 1068,  498, 1066,  500, 320,  500, 320,  500, 320,  498, 322,  498, 322,  496, 330,  500, 320,  498, 320,  498, 322,  498, 1064,  500, 318,  502, 318,  500, 320,  498, 328,  502, 318,  500, 318,  500, 320,  500, 320,  500, 320,  498, 320,  498, 322,  496, 330,  500, 320,  500, 320,  498, 322,  498, 322,  496, 322,  496, 324,  496, 324,  494, 332,  498, 322,  498, 322,  496, 322,  496, 324,  496, 324,  496, 324,  494, 326,  492, 334,  496, 324,  494, 324,  494, 326,  494, 326,  494, 326,  492, 328,  492, 328,  502, 324,  494, 326,  494, 326,  492, 328,  492, 328,  502, 318,  502, 318,  500, 320,  500, 1068,  496, 322,  496, 324,  494, 1068,  498, 322,  498, 322,  496, 324,  496, 1066,  500, 1064,  470};  // TCL112AC
uint8_t state[14] = {0x23, 0xCB, 0x26, 0x01, 0x00, 0x24, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC4};


Timestamp : 001047.309
Library   : v2.8.4

Protocol  : TCL112AC
Code      : 0x23CB2601002402080000000080C3 (112 Bits)
Mesg Desc.: Model: 1 (TAC09CHSD), Type: 1, Power: On, Mode: 2 (Dry), Temp: 23C, Fan: 0 (Auto), Swing(V): 0 (Auto), Swing(H): Off, Econo: Off, Health: Off, Turbo: Off, Light: On, On Timer: Off, Off Timer: Off
uint16_t rawData[227] = {3030, 1660,  494, 1068,  498, 1064,  502, 318,  500, 318,  500, 320,  498, 1064,  492, 328,  502, 326,  494, 1068,  496, 1066,  500, 320,  500, 1062,  492, 326,  492, 328,  502, 1060,  494, 1076,  500, 318,  500, 1062,  492, 1068,  498, 322,  496, 324,  496, 1066,  498, 322,  498, 328,  502, 1060,  494, 326,  492, 326,  492, 328,  502, 318,  502, 318,  500, 320,  500, 326,  492, 328,  490, 330,  500, 318,  500, 318,  500, 322,  498, 320,  498, 322,  498, 328,  500, 320,  500, 320,  498, 1062,  492, 328,  492, 328,  502, 1060,  494, 326,  494, 332,  496, 324,  494, 1066,  498, 322,  498, 322,  496, 322,  498, 322,  496, 324,  496, 332,  498, 322,  498, 322,  496, 322,  496, 1066,  498, 320,  500, 320,  498, 322,  498, 330,  500, 320,  500, 320,  498, 320,  498, 320,  498, 322,  498, 322,  496, 324,  496, 332,  498, 320,  498, 322,  498, 322,  496, 324,  496, 324,  496, 324,  494, 324,  494, 332,  496, 324,  496, 324,  494, 324,  494, 324,  494, 326,  492, 326,  492, 328,  492, 334,  494, 326,  494, 326,  494, 326,  492, 326,  492, 328,  502, 318,  500, 318,  502, 326,  492, 326,  492, 328,  490, 328,  502, 318,  500, 320,  500, 320,  498, 322,  498, 1072,  494, 1068,  498, 1064,  500, 318,  502, 318,  500, 320,  500, 320,  498, 1064,  490, 1072,  472};  // TCL112AC
uint8_t state[14] = {0x23, 0xCB, 0x26, 0x01, 0x00, 0x24, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC3};


Timestamp : 001048.492
Library   : v2.8.4

Protocol  : TCL112AC
Code      : 0x23CB2601002407080500000080CD (112 Bits)
Mesg Desc.: Model: 1 (TAC09CHSD), Type: 1, Power: On, Mode: 7 (Fan), Temp: 23C, Fan: 5 (High), Swing(V): 0 (Auto), Swing(H): Off, Econo: Off, Health: Off, Turbo: Off, Light: On, On Timer: Off, Off Timer: Off
uint16_t rawData[227] = {3032, 1658,  496, 1066,  498, 1062,  492, 328,  492, 328,  502, 318,  500, 1062,  494, 326,  494, 334,  496, 1066,  500, 1062,  492, 328,  502, 1060,  494, 326,  494, 326,  492, 1068,  496, 1072,  492, 328,  492, 1070,  496, 1066,  500, 320,  498, 322,  498, 1064,  502, 318,  500, 326,  492, 1070,  496, 322,  496, 324,  494, 326,  494, 326,  494, 326,  492, 326,  492, 334,  494, 324,  494, 326,  494, 326,  492, 326,  492, 328,  490, 328,  502, 318,  502, 324,  494, 326,  492, 326,  492, 1072,  494, 324,  494, 326,  494, 1068,  498, 322,  496, 332,  498, 1062,  492, 1070,  496, 1066,  500, 320,  498, 322,  498, 322,  498, 322,  496, 330,  500, 320,  498, 322,  498, 322,  496, 1064,  500, 320,  500, 320,  498, 320,  498, 328,  502, 1060,  496, 324,  494, 1068,  498, 322,  496, 324,  496, 324,  496, 324,  494, 332,  498, 322,  496, 322,  496, 324,  496, 324,  494, 324,  494, 326,  492, 326,  494, 334,  494, 324,  494, 326,  494, 324,  494, 326,  492, 326,  492, 328,  502, 318,  502, 326,  494, 326,  492, 328,  490, 328,  502, 318,  502, 318,  500, 318,  500, 320,  498, 328,  492, 328,  502, 318,  500, 320,  500, 320,  500, 320,  498, 322,  498, 322,  498, 1072,  494, 1068,  496, 322,  498, 1064,  500, 1062,  492, 326,  492, 328,  492, 1070,  496, 1068,  466};  // TCL112AC
uint8_t state[14] = {0x23, 0xCB, 0x26, 0x01, 0x00, 0x24, 0x07, 0x08, 0x05, 0x00, 0x00, 0x00, 0x80, 0xCD};


Timestamp : 001049.989
Library   : v2.8.4

Protocol  : TCL112AC
Code      : 0x23CB260100240108000000000042 (112 Bits)
Mesg Desc.: Model: 2 (GZ055BE1), Type: 1, Power: On, Mode: 1 (Heat), Temp: 23C, Fan: 0 (Auto), Swing(V): 0 (Auto), On Timer: Off, Off Timer: Off
uint16_t rawData[227] = {3034, 1654,  500, 1062,  492, 1070,  496, 324,  496, 324,  494, 326,  494, 1068,  496, 324,  496, 330,  500, 1062,  492, 1070,  496, 324,  494, 1068,  498, 322,  496, 322,  498, 1064,  500, 1070,  496, 324,  496, 1066,  500, 1062,  492, 326,  502, 318,  502, 1060,  494, 326,  494, 334,  496, 1066,  498, 320,  498, 322,  498, 322,  498, 322,  498, 322,  496, 324,  496, 330,  498, 322,  498, 322,  498, 322,  496, 324,  496, 324,  496, 324,  494, 324,  494, 334,  496, 322,  496, 324,  496, 1066,  498, 320,  498, 322,  496, 1064,  502, 318,  500, 326,  492, 1070,  496, 324,  496, 324,  494, 326,  494, 326,  492, 326,  492, 326,  492, 334,  494, 326,  494, 326,  492, 326,  492, 1068,  496, 324,  494, 326,  494, 326,  494, 334,  496, 324,  496, 324,  494, 324,  496, 324,  494, 326,  494, 326,  492, 328,  492, 336,  494, 324,  494, 326,  492, 328,  492, 328,  492, 328,  500, 318,  502, 318,  500, 328,  492, 328,  492, 328,  502, 318,  502, 318,  500, 320,  500, 320,  498, 322,  498, 328,  500, 318,  500, 320,  500, 320,  500, 320,  498, 320,  498, 322,  498, 322,  496, 330,  500, 320,  498, 320,  498, 322,  496, 322,  496, 324,  496, 324,  496, 324,  494, 332,  498, 322,  496, 1064,  502, 318,  500, 320,  498, 320,  498, 322,  498, 1064,  502, 318,  470};  // TCL112AC
uint8_t state[14] = {0x23, 0xCB, 0x26, 0x01, 0x00, 0x24, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42};


Timestamp : 001051.165
Library   : v2.8.4

Protocol  : TCL112AC
Code      : 0x23CB260100240808000000000049 (112 Bits)
Mesg Desc.: Model: 2 (GZ055BE1), Type: 1, Power: On, Mode: 8 (Auto), Temp: 23C, Fan: 0 (Auto), Swing(V): 0 (Auto), On Timer: Off, Off Timer: Off
uint16_t rawData[227] = {3030, 1660,  494, 1066,  498, 1064,  502, 318,  500, 318,  500, 320,  500, 1062,  494, 326,  492, 308,  522, 1066,  500, 1062,  502, 318,  500, 1062,  494, 326,  492, 326,  492, 1070,  496, 1074,  492, 328,  502, 1060,  496, 1066,  498, 322,  496, 322,  496, 1066,  500, 318,  500, 328,  490, 1070,  496, 324,  494, 326,  494, 326,  494, 326,  494, 326,  492, 328,  502, 326,  494, 326,  494, 326,  492, 326,  492, 328,  502, 318,  502, 318,  500, 318,  500, 328,  490, 328,  490, 328,  502, 1060,  494, 326,  494, 326,  492, 1070,  496, 324,  496, 332,  498, 322,  498, 322,  496, 322,  498, 1064,  500, 320,  498, 322,  498, 322,  498, 328,  500, 320,  500, 320,  498, 320,  498, 1064,  492, 328,  502, 318,  500, 318,  500, 326,  492, 326,  492, 328,  502, 318,  502, 318,  500, 320,  500, 320,  500, 320,  498, 328,  502, 318,  500, 320,  500, 320,  500, 320,  500, 320,  498, 322,  498, 322,  496, 330,  498, 320,  500, 320,  498, 322,  498, 322,  496, 322,  496, 324,  496, 324,  496, 332,  498, 322,  498, 322,  498, 322,  496, 324,  496, 324,  494, 326,  494, 326,  492, 334,  496, 324,  496, 324,  496, 324,  494, 326,  494, 326,  492, 326,  492, 328,  492, 336,  494, 1068,  498, 322,  496, 322,  496, 1066,  500, 320,  498, 320,  498, 1064,  502, 318,  468};  // TCL112AC
uint8_t state[14] = {0x23, 0xCB, 0x26, 0x01, 0x00, 0x24, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49};

What brand/model IR demodulator are you using?

TSOP34838

Circuit diagram and hardware used (if applicable)

TSOP34834 on D5 pin of a NodeMCU V2

I have followed the steps in the Troubleshooting Guide & read the FAQ

Yes

Has this library/code previously worked as expected for you?

Not tested before.

Other useful information

It was tested with more remote controllers with same results.

@NiKiZe
Copy link
Collaborator

NiKiZe commented Oct 4, 2022

Is that an original remote? Or just a clone that works with your AC?

@soosp
Copy link
Author

soosp commented Oct 4, 2022

Yes, this remote model was shipped with both of my AC units. I tested them, and the results same as above.

@crankyoldgit
Copy link
Owner

Please see #1486 for some history.

So, if _.isTcl is not good enough to use as a model differentiator we need to come up with another way to tell the two protocols apart.

Can you please look over the state[] data and compare it with:

/// Native representation of a TCL 112 A/C message.
union Tcl112Protocol{
uint8_t raw[kTcl112AcStateLength]; ///< The State in IR code form.
struct {
// Byte 0~2
uint8_t :8;
uint8_t :8;
uint8_t :8;
// Byte 3
uint8_t MsgType :2;
uint8_t :6;
// Byte 4
uint8_t :8;
// Byte 5
uint8_t :2;
uint8_t Power :1;
uint8_t OffTimerEnabled :1;
uint8_t OnTimerEnabled :1;
uint8_t Quiet :1;
uint8_t Light :1;
uint8_t Econo :1;
// Byte 6
uint8_t Mode :4;
uint8_t Health :1;
uint8_t Turbo :1;
uint8_t :2;
// Byte 7
uint8_t Temp :4;
uint8_t :4;
// Byte 8
uint8_t Fan :3;
uint8_t SwingV :3;
uint8_t TimerIndicator :1;
uint8_t :1;
// Byte 9
uint8_t :1; // 0
uint8_t OffTimer :6;
uint8_t :1; // 0
// Byte 10
uint8_t :1; // 0
uint8_t OnTimer :6;
uint8_t :1; // 0
// Byte 11
uint8_t :8; // 00000000
// Byte 12
uint8_t :3;
uint8_t SwingH :1;
uint8_t :1;
uint8_t HalfDegree :1;
uint8_t :1;
uint8_t isTcl :1;
// Byte 13
uint8_t Sum :8;
};
};

To see if there is some other bit, bits or pattern we can use to tell the two message formats apart.

#1486 #619 & ir_Tcl_test.cpp hopefully contain enough data to compare with. It's all the data we have.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants