-
Notifications
You must be signed in to change notification settings - Fork 840
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
Could you add TCL112AC protocol? #619
Comments
Yes, it can sort-of be added but the code you linked to doesn't/won't actually work. I could see some bugs with the linked code within a minute or two of looking at it. It also appears it was never merged into the IRremote library. Possibly for those reasons. I can implement what I think it is trying to do. Do you have a Raw Data capture from IRrecvDumpV2 that you can share? That would help immensely. |
I have a TCL manufactured AC unit, and assumed that the TCL112AC protocol works with it. I can dump the IR codes of my remote if it helps. |
Yes, it will help, and ultimately, it's what you want to emulate I'm guessing. |
Here are the captured data files. I tried to change only one thing in a file (e.g. change the temperature only). Most functions captured in cooling mode, and at 24 C, and with automatic fan settings. OnOff.txt |
Great. Thanks for that data. It's very useful. Here is a breakdown of the "on" message from the first file.
It looks like it should be easy enough to get the basic protocol supported. i.e. sending/capturing the 112 bit/14 byte message, but not decoding what they mean. The values collected seem to match up with what was in the PR you linked to. |
Add basic send/decode routines for TCL112AC protocol. Update example code to reflect addition. Add some basic unit tests. Note: Still need to confirm bit-ordering. e.g. LSB or MSB. Ref #619
@soosp Can you please test out the code in the Let me know how it goes. |
Add basic send/decode routines for TCL112AC protocol. Update example code to reflect addition. Add some basic unit tests. Note: Still need to confirm bit-ordering. e.g. LSB or MSB. Ref #619
* Add setTemp(), set/getPower(), set/getMode(). * Add checksum verification and calculation. * Unit Tests for the above. * Fix a missed git merge artifact. Ref #619
@soosp I've now added more decoding/support for the TCL protocol (power, mode, & checksum). Per FAQ/similar issues, you'll have to do the analysis work to work out which bits in each state byte control which functions for the remaining functions. i.e. When you change something on the remote, you need to be able to account for every bit/byte that changes. When you've worked that out, let me know. Otherwise I'll merge what we have and leave it at that. i.e. I won't be doing more message breakdown, it's up to you/someone else to work it out. You should only need to report/record the |
Thanks for your efforts! Currently I'm very busy, but I'll try to test your code in the next days. |
Experimental basic support for 112 bit TCL AC messages - Basic send/decode routines. - Partial support for message decoding/construction: - Power - Mode - Temperature - Checksum - Examples update with support for TCL - Unit test coverage for additions. For #619
I made a quick test with code below, and it works well.
|
Thanks for the confirmation! |
Do you mean values in these files? I copied only Display.Cooling.24.C.Auto.fan.txt |
Meanwhile the temperature values was tested succesfully with the code below.
|
Yes. To work out what a function/button does, you basically need to explain every bit-flip that happens between messages. The last byte of the state array (i.e. Let us know what you work out from your data. |
_v2.5.6 (20190316)_ **[Bug Fixes]** - Fix Coolix A/C Class to handle special states better. (#633, #624) **[Features]** - Fix case style for recent A/C protocols. (#631) - Update `IRsend::send()` to include all simple protocols. (#629, #628) - Experimental basic support for 112 bit TCL AC messages (#627, #619) - Add support for TECO AC (#622) - Experimental support for Samsung 36 bit protocol (#625, #621) **[Misc]** - Set Coolix to default to 1 repeat. (#637, #636, #624, #439) - Set Daikin2 modulation to 36.7kHz. (#635) - Refactor IRVestelAC class to use portable code. (#617) - Adjust Daikin2 timings and tolerance. (#616, #582)
_v2.5.6 (20190316)_ **[Bug Fixes]** - Fix Coolix A/C Class to handle special states better. (#633, #624) **[Features]** - Fix case style for recent A/C protocols. (#631) - Update `IRsend::send()` to include all simple protocols. (#629, #628) - Experimental basic support for 112 bit TCL AC messages (#627, #619) - Add support for TECO AC (#622) - Experimental support for Samsung 36 bit protocol (#625, #621) **[Misc]** - Set Coolix to default to 1 repeat. (#637, #636, #624, #439) - Set Daikin2 modulation to 36.7kHz. (#635) - Refactor IRVestelAC class to use portable code. (#617) - Adjust Daikin2 timings and tolerance. (#616, #582)
FYI, v2.5.6 has just been release which includes the changes/improvements mentioned. |
Thanks for the apprise! Display state:
Eco mode:
Fan mode:
Heath mode:
Horizontal swing:
Modes:
Note: on ventillating mode the remote controller turns the fan to max state too: state[8]: 0x05 with mask 0xF8 On/off:
Turbo mode:
Note: It seems that the remote controller sets the temperature to the end value (state[7] and state[12]) and turns fan to max value and turns on the vertical swing (state[8] for both). It has been tested in cooling mode only, but needs testing in other modes. Vertical swing:
Temperature: |
That's excellent work. Thanks. I'll try to add support for most of that in the next few days. |
Are you sure on that one? It differs from what I originally had. Just double checking before I change it. |
Add support for: - Turbo - Economy - Fan speed - Light/Display - Health - Vane Swing * Improve some function interactions. * Unit tests for the above. Ref: #619
Strange, because your code worked for me. It turned on/off my AC unit. I tested the remote controller in some different modes, and seems that the only difference between the on/off command sequences the bit 3 of the state[5]:
|
It seems that IRecvDumpV2 correctly identify the on/off state:
|
Okay, I think that it's just your hex/bit maths that is wrong then for this one case. The diff in If you want to try out the code in this branch: https://github.com/markszabo/IRremoteESP8266/tree/tcl_update it should support what you've listed/analysed thus far. |
Oh, it's my mistake. Thank you for correction. I'll test your code soon. |
Add support for: - Turbo - Economy - Fan speed - Light/Display - Health - Vane Swing * Improve some function interactions. * Unit tests for the above. Ref: #619
@Soops I've now merged those changes into the Thanks for you effort. |
FYI, this has been included in the newly released v2.6.0 of the library. |
There is an protocol driver for original IRremote library: https://github.com/z3t0/Arduino-IRremote/pull/259/files Is this possible to implement it?
The text was updated successfully, but these errors were encountered: