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

Need help: I am trying to decode one unknown protocol #1797

Open
MarkEvens opened this issue May 7, 2022 · 16 comments
Open

Need help: I am trying to decode one unknown protocol #1797

MarkEvens opened this issue May 7, 2022 · 16 comments
Assignees

Comments

@MarkEvens
Copy link

MarkEvens commented May 7, 2022

Version/revision of the library used

v2.8.2

Describe problem

I have one old carrier AC of the 2012 model, and the protocol remote is unknown, so I tried to decode it. Need help with decoding.

Spread sheet link

Images of Remote

Carrier2012-2
Carrier2012

@crankyoldgit
Copy link
Owner

Please follow the steps in the wiki for adding a new protocol: https://github.com/crankyoldgit/IRremoteESP8266/wiki/Adding-support-for-a-new-IR-protocol
We will need to the complete capture (especially the RawData) from the IRrecvDumpV2 (or V3) program.
Looking at the spreadsheet you provided, it looks like the data is in LSB format, but we will need to format it some more to make it useful.

i.e. In that wiki page, you don't have to proceed to the "Modifying the library ..." steps unless you want to.

@MarkEvens
Copy link
Author

Hi, I added Raw data to the sheet, please check, You can ask me if required more data or anything.

@crankyoldgit
Copy link
Owner

Looking at the timing data provided, it's not like the other carrier protocols thus far, so we will have to write a new send/decode routine for it.
I should have enough to go on to do that. I'll try to get to it soon.
FWIW, it looks like there is 128 bits of data being sent in two packets with some inter-packet headers too.
And the temperature seems to be stored in BCD format.

@MarkEvens
Copy link
Author

Hey I did a mistake in fan speed capture, so I am correcting sheet wait for a little

crankyoldgit added a commit that referenced this issue May 8, 2022
…col.

* Add `sendCarrierAC128()` & `decodeCarrierAC128()` methods.
* Basic unit test coverage for new protocol.
* Update supported model info.

For #1797
@crankyoldgit
Copy link
Owner

@MarkEvens I've created the following branch: carrier128_basic / PR #1798
Please download that branch and try it out. It should send & detect the protocol now.

You will need to recollect/capture your spreadsheet data using that, as it changes the byte order of the state[] array/hex code representation.

In theory, if it works correctly you should now be at this stage:
https://github.com/crankyoldgit/IRremoteESP8266/wiki/Adding-support-for-a-new-AC-protocol#analysing-the-data

Please note, we'd like you to test sending a state[] code to confirm the sending part works with a real device, and we also need the model info of the actual A/C unit please.

Let us know how it all goes.

@crankyoldgit crankyoldgit added the Pending Confirmation Waiting for confirmation from user label May 8, 2022
@MarkEvens
Copy link
Author

I test your brach It detects protocol as carrier128_basic, but it shows exact decoding no matter whatever command I am the fire.

It takes time to test with a real device, sorry for that I will let you know when it's done

@crankyoldgit
Copy link
Owner

I test your brach It detects protocol as carrier128_basic, but it shows exact decoding no matter whatever command I am the fire.

Can you please include an example? I.e. The full text from the dump program. As I'm not sure what you mean.

@crankyoldgit
Copy link
Owner

Chasing this up.

@MarkEvens
Copy link
Author

Here is the received data using dump program for ON and OFF command

IRrecvDump is now running and waiting for IR input on Pin 19
Timestamp : 000003.516
Library   : v2.8.2

Protocol  : CARRIER_AC128
Code      : 0x16223800939125B811220800000000E0 (128 Bits)
uint16_t rawData[267] = {4604, 2610,  330, 424,  338, 994,  336, 998,  334, 422,  330, 1002,  328, 426,  336, 418,  336, 418,  334, 420,  332, 1000,  330, 424,  328, 426,  336, 416,  336, 996,  334, 420,  332, 422,  330, 424,  328, 426,  338, 416,  336, 996,  334, 998,  332, 1002,  330, 426,  338, 416,  336, 418,  336, 418,  334, 420,  332, 422,  330, 424,  328, 426,  338, 416,  336, 418,  336, 998,  332, 1000,  330, 424,  338, 416,  338, 996,  334, 420,  332, 422,  332, 1002,  328, 1004,  336, 418,  334, 420,  332, 422,  332, 1002,  328, 426,  338, 416,  338, 996,  334, 998,  332, 422,  330, 1002,  338, 416,  336, 418,  334, 998,  332, 422,  330, 424,  330, 424,  338, 416,  336, 418,  334, 998,  384, 950,  382, 952,  388, 366,  388, 928,  382, 20594,  4628, 6702,  9314, 4958,  356, 1002,  338, 418,  336, 418,  334, 420,  332, 1002,  330, 424,  338, 416,  336, 418,  334, 420,  334, 998,  332, 424,  330, 424,  338, 416,  336, 996,  334, 420,  332, 422,  330, 424,  328, 424,  338, 416,  336, 996,  334, 420,  332, 422,  330, 424,  328, 426,  338, 416,  336, 418,  334, 418,  366, 388,  364, 390,  362, 392,  360, 394,  358, 396,  358, 396,  368, 386,  366, 388,  364, 390,  362, 392,  360, 394,  360, 394,  358, 396,  368, 386,  366, 388,  364, 390,  362, 392,  360, 394,  360, 394,  358, 396,  370, 384,  366, 388,  364, 390,  362, 392,  360, 394,  360, 394,  358, 396,  368, 386,  366, 388,  364, 390,  364, 390,  362, 392,  360, 394,  360, 394,  358, 974,  336, 998,  332, 982,  338, 20638,  4624};  // CARRIER_AC128
uint8_t state[16] = {0x16, 0x22, 0x38, 0x00, 0x93, 0x91, 0x25, 0xB8, 0x11, 0x22, 0x08, 0x00, 0x00, 0x00, 0x00, 0xE0};


Timestamp : 000006.839
Library   : v2.8.2

Protocol  : CARRIER_AC128
Code      : 0x16223800939125B811220C0000000020 (128 Bits)
uint16_t rawData[267] = {4598, 2616,  336, 418,  334, 998,  332, 1002,  330, 426,  336, 996,  334, 420,  332, 422,  330, 424,  330, 424,  328, 1006,  336, 418,  334, 420,  332, 420,  332, 1002,  330, 424,  338, 416,  336, 418,  334, 420,  334, 420,  332, 1002,  328, 1004,  338, 996,  334, 420,  332, 422,  332, 422,  330, 424,  328, 426,  338, 416,  336, 418,  334, 420,  334, 420,  332, 422,  330, 1004,  338, 994,  336, 418,  334, 420,  332, 1000,  330, 424,  330, 424,  338, 996,  336, 998,  332, 422,  332, 422,  330, 424,  338, 994,  336, 418,  334, 420,  332, 1000,  330, 1002,  338, 416,  336, 996,  334, 420,  332, 422,  330, 1002,  328, 426,  336, 418,  336, 418,  334, 420,  332, 422,  330, 1002,  380, 952,  388, 944,  334, 420,  384, 930,  390, 20586,  4626, 6704,  9312, 4960,  406, 952,  336, 418,  334, 420,  332, 422,  332, 1002,  328, 426,  338, 416,  336, 418,  334, 420,  332, 1000,  330, 424,  328, 426,  338, 416,  336, 996,  334, 420,  332, 422,  330, 424,  328, 424,  338, 994,  336, 996,  334, 422,  332, 422,  330, 424,  338, 416,  336, 418,  336, 418,  334, 420,  332, 422,  332, 422,  330, 424,  358, 396,  368, 386,  366, 388,  366, 388,  364, 390,  362, 392,  362, 392,  360, 394,  358, 396,  366, 388,  366, 388,  364, 390,  364, 390,  362, 392,  360, 394,  358, 396,  366, 388,  366, 388,  364, 390,  362, 392,  362, 392,  360, 394,  358, 396,  366, 386,  366, 388,  364, 390,  364, 390,  362, 392,  360, 394,  358, 394,  358, 396,  366, 966,  334, 420,  332, 406,  338, 20636,  4626};  // CARRIER_AC128
uint8_t state[16] = {0x16, 0x22, 0x38, 0x00, 0x93, 0x91, 0x25, 0xB8, 0x11, 0x22, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x20};

But there is all state are same

@crankyoldgit
Copy link
Owner

But there is all state are same

No. They are not both the same.
uint8_t state[16] = {0x16, 0x22, 0x38, 0x00, 0x93, 0x91, 0x25, 0xB8, 0x11, 0x22, 0x08, 0x00, 0x00, 0x00, 0x00, 0xE0};
uint8_t state[16] = {0x16, 0x22, 0x38, 0x00, 0x93, 0x91, 0x25, 0xB8, 0x11, 0x22, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x20};

@MarkEvens
Copy link
Author

MarkEvens commented May 16, 2022

Yeah, it is different,
But I am confused that When I capture all data using remote and analyse it by script, the first byte is constantly changing.
So what is the explanation for it?

@crankyoldgit
Copy link
Owner

the first byte is constantly changing.

If you're looking at it in the wrong bit order, then the first byte will be the last (sent) byte. That is usually the checksum byte/value.
See: https://github.com/crankyoldgit/IRremoteESP8266/wiki/Adding-support-for-a-new-AC-protocol#example-analysis
& https://github.com/crankyoldgit/IRremoteESP8266/wiki/Adding-support-for-a-new-AC-protocol#check-bytes

Regardless, now that the library decodes it which your output appears to do, you need to do all of your analysis using the state[] codes.
As per: https://github.com/crankyoldgit/IRremoteESP8266/wiki/Adding-support-for-a-new-AC-protocol#raw-data-should-no-longer-be-needed-now

crankyoldgit added a commit that referenced this issue May 17, 2022
…col.

* Add `sendCarrierAC128()` & `decodeCarrierAC128()` methods.
* Basic unit test coverage for new protocol.
* Update supported model info.

For #1797
crankyoldgit added a commit that referenced this issue May 17, 2022
…col. (#1798)

* Add `sendCarrierAC128()` & `decodeCarrierAC128()` methods.
* Basic unit test coverage for new protocol.
* Update supported model info.

For #1797
@crankyoldgit
Copy link
Owner

FYI, that branch has now been merged into the master branch.

@crankyoldgit
Copy link
Owner

Just checking in. How are you going with this?

@crankyoldgit
Copy link
Owner

Friendly ping.

crankyoldgit added a commit that referenced this issue Sep 15, 2022
_v2.8.3 (20220915)_

**[Bug Fixes]**
- Fix `#if` for DECODE_COOLIX48 (#1796)
- Add missing `prev`s to `decodeToState()` (#1783)

**[Features]**
- Add `pause()` function to ESP32 when receiving. (#1871)
- ARGO: Argo add `sendSensorTemp()` (#1858 #1859)
- HAIER_AC160: Experimental detail support. (#1852 #1804)
- BOSCH144: Add IRac class support (#1841)
- Mitsubishi_AC: update left vane in `IRac` class (#1837)
- Basic support for Daikin 312bit/39byte A/C protocol. (#1836 #1829)
- Experimental basic support for Sanyo AC 152 bit protocol. (#1828 #1826)
- GREE: Add model support for `YX1FSF`/Soleus Air Windown A/C (#1823 #1821)
- Experimental basic support for Bosch 144bit protocol. (#1822 #1787)
- Experimental basic support for TCL AC 96 bit protocol. (#1820 #1810)
- Add basic support for clima-butler (52bit) RCS-SD43UWI (#1815 #1812)
- TOTO: An experimental _(s)wipe_ at support for Toto Toilets. (#1811 #1806)
- CARRIER_AC128: Experimental Basic support for Carrier AC 128bit protocol. (#1798 #1797)
- HAIER_AC160: Add basic support for Haier 160bit protocol. (#1805 #1804)
- DAIKIN: Add basic support for 200-bit Daikin protocol. (#1803 #1802)
- FUJITSU: Improve handling of 10C Heat mode. (#1788 #1780)
- FUJITSU: Improve handling of short (command only) messages. (#1784 #1780)

**[Misc]**
- Improve the `_IRREMOTEESP8266_VERSION_VAL` macro (#1875 #1870)
- SONY: Update supported devices. (#1872)
- SAMSUNG: Update supported devices (#1873)
- NEC: Update supported devices (#1874)
- Give IRmacros.h smaller scope to avoid impacting projects using IRremoteESP8266 (#1857 #1853 #1851)
- Inhibit protocol names for not-included protocols (#1853 #1851)
- Test out codeql static analysis (#1842)
- Remove pylint disable=no-self-use (#1817)
- Fujitsu General: update supported devices (#1813)
- DAIKIN: Update supported devices (#1808 #1807)
- Fujitsu: Update supported remote info. (#1801 #1794)
- DAIKIN128: Update supported devices (#1754)
- Voltas: Add link to manual for 122LZF A/C. (#1800 #1799 #1238)
- Daikin128: Additional unit test. (#1795 #1754)
- MIDEA: Update supported devices (#1791 #1790)
crankyoldgit added a commit that referenced this issue Sep 16, 2022
**_v2.8.3 (20220915)_**

**[Bug Fixes]**
- Fix `#if` for DECODE_COOLIX48 (#1796)
- Add missing `prev`s to `decodeToState()` (#1783)

**[Features]**
- Add `pause()` function to ESP32 when receiving. (#1871)
- ARGO: Argo add `sendSensorTemp()` (#1858 #1859)
- HAIER_AC160: Experimental detail support. (#1852 #1804)
- BOSCH144: Add IRac class support (#1841)
- Mitsubishi_AC: update left vane in `IRac` class (#1837)
- Basic support for Daikin 312bit/39byte A/C protocol. (#1836 #1829)
- Experimental basic support for Sanyo AC 152 bit protocol. (#1828 #1826)
- GREE: Add model support for `YX1FSF`/Soleus Air Windown A/C (#1823 #1821)
- Experimental basic support for Bosch 144bit protocol. (#1822 #1787)
- Experimental basic support for TCL AC 96 bit protocol. (#1820 #1810)
- Add basic support for clima-butler (52bit) RCS-SD43UWI (#1815 #1812)
- TOTO: An experimental _(s)wipe_ at support for Toto Toilets. (#1811 #1806)
- CARRIER_AC128: Experimental Basic support for Carrier AC 128bit protocol. (#1798 #1797)
- HAIER_AC160: Add basic support for Haier 160bit protocol. (#1805 #1804)
- DAIKIN: Add basic support for 200-bit Daikin protocol. (#1803 #1802)
- FUJITSU: Improve handling of 10C Heat mode. (#1788 #1780)
- FUJITSU: Improve handling of short (command only) messages. (#1784 #1780)

**[Misc]**
- Improve the `_IRREMOTEESP8266_VERSION_VAL` macro (#1875 #1870)
- SONY: Update supported devices. (#1872)
- SAMSUNG: Update supported devices (#1873)
- NEC: Update supported devices (#1874)
- Give IRmacros.h smaller scope to avoid impacting projects using IRremoteESP8266 (#1857 #1853 #1851)
- Inhibit protocol names for not-included protocols (#1853 #1851)
- Test out codeql static analysis (#1842)
- Remove pylint disable=no-self-use (#1817)
- Fujitsu General: update supported devices (#1813)
- DAIKIN: Update supported devices (#1808 #1807)
- Fujitsu: Update supported remote info. (#1801 #1794)
- DAIKIN128: Update supported devices (#1754)
- Voltas: Add link to manual for 122LZF A/C. (#1800 #1799 #1238)
- Daikin128: Additional unit test. (#1795 #1754)
- MIDEA: Update supported devices (#1791 #1790)
@crankyoldgit
Copy link
Owner

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

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

2 participants