crankyoldgit / IRremoteESP8266

Infrared remote library for ESP8266/ESP32: send and receive infrared signals with multiple protocols. Based on: https://github.com/shirriff/Arduino-IRremote/
GNU Lesser General Public License v2.1
2.96k stars 831 forks source link

Support for SHARP AC - Model AH-A12REVP-1 #1387

Closed GerardNL closed 3 years ago

GerardNL commented 3 years ago

Version/revision of the library used v2.7.14

Describe the bug

I would kindly request support for SHARP AC, Model AH-A12REVP-1. It seems to be this specific model of SHARP ACs is not yet fully/correctly included.

To Reproduce

I'm using Tasmoto 9.2.0(ir) with an Eachen IR module (which should include the IRremoteESP8266 v2.7.14 library) to control my Sharp Air Conditioner from Home Assistant 2021.1.x. Out of the box, several of the standard functions work just fine (temperature, mode, fan), but I'm unable to turn the AC unit ON and OFF through the build-in function of the HA. When the unit is off, it will not turn on with any other code until it received the regular "ON" command from the remote. (A totally different AC model in another room responds fine to the ON command from HA, so I don't think that's the issue)

So I have recorded the commands sent from the remote and worked out most of the digits in those command. My C++ knowledge is a bit rusty, but seems to match what is in ir_Sharp.h for the essential parts, so that seems all good.

When I press the "ON/OFF" button on the remote while the AC is on, I see this is recorded: {"Protocol":"SHARP_AC","Bits":104,"Data":"0xAA5ACF10CA212200088000F061","Repeat":0,"IRHVAC":{"Vendor":"SHARP_AC","Model":1,"Mode":"Off","Power":"Off","Celsius":"On","Temp":25,"FanSpeed":"Auto","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"Off","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}} So it looks like the command is well understood by the library.

When I use Home Assistant to send the "OFF" command, I see on MQQT command is sent: {"IRHVAC":{"Vendor":"SHARP_AC","Model":1,"Mode":"Off","Power":"Off","Celsius":"On","Temp":25,"FanSpeed":"Max","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"Off","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}} (But I can't see the (raw?) command send to the AC, so I don't know if it sends "0xAA5ACF10CA212200088000F061" Except for the FanSpeed, the parameters seems the same. The AC unit beeps, but doesn't turn off.

I've tried to send the commands recorded back to the AC unit, but here I seem to lack enough knowledge to get that to work. All I get is this --> MQT: stat/IR_Livingroom/RESULT = {"IRSend":"Done"} and no response from the AC. So I'm not yet able to send raw data to the AC.

Below are the details I have worked out so far and the recorded commands.

Would this something that makes sense to @crankyoldgit ? Or is there any other information I can provide that would get this AC unit included? As it's hopefully just a little tweaking of existing code, it might not be too difficult?

Many thanks in advance!

Gerard

Output of raw data from [IRrecvDumpV2.ino]Recorded commands from the remote.

(Sorry. I know Tasmoto output is not preferred, but not (yet) able to get others. Hopefully it's not a big problem in this case) Turn Off (No response from AC when sent from HA): 0xAA5ACF10CA212200088000F061 Turn On (No response from AC when sent from HA): 0xAA5ACF10CA112200088000F051 Temp 30 (AC responds to command send from HA): 0xAA5ACF10CF312200088004F061 Temp 26 (AC responds to command send from HA): 0xAA5ACF10CB312200088004F021 Temp 25 (AC responds to command send from HA): 0xAA5ACF10CA312200088004F031 Temp 24 (AC responds to command send from HA): 0xAA5ACF10C9312200088004F001 Temp 23 (AC responds to command send from HA): 0xAA5ACF10C8312200088004F011 Temp 16 (AC responds to command send from HA): 0xAA5ACF10C1312200088004F081 Fan Speed - Medium = Lowest on remote (AC responds to command send from HA): 0xAA5ACF10CA315200088005F051 Fan Speed - Max = Middle on remote (AC responds to command send from HA): 0xAA5ACF10CA317200088005F071 Fan Speed - Auto (AC responds to command send from HA): 0xAA5ACF10CA312200088005F021 Vertical Swing ON/OFF Toggle: 0xAA5ACF10CA3122000F8006F061 Mode Dry (AC responds to command send from HA): 0xAA5ACF1000312300088000F001 Mode Auto (AC responds to command send from HA): 0xAA5ACF1000312000088000F031 Mode Cool (AC responds to command send from HA): 0xAA5ACF10CA312200088000F071 Turbo On (AC responds to command send from HA): 0xAA5ACF10CA612200088001F031 Turbo Off (AC responds to command send from HA): 0xAA5ACF10CA712200088001F021 I don't have the Timer functions below in Home Assistant, so I don't know if the AC would respond Timer Cancel: 0xAA5ACF10CA8122400880C0F041 Timer On 0.5 hr: 0xAA5ACF10CA8122C00880DEF031 Timer On 1.0 hr: 0xAA5ACF10CA8122C10880C0F0D1 Timer On 1.5 hr: 0xAA5ACF10CA8122C10880DEF021 Timer On 2.0 hr: 0xAA5ACF10CA8122C20880C0F0E1 Timer On 2.5 hr: 0xAA5ACF10CA8122C20880DEF011 Timer On 3.0 hr: 0xAA5ACF10CA8122C30880C0F0F1 Timer On 3.5 hr: 0xAA5ACF10CA8122C30880DEF001 Timer On 4.0 hr: 0xAA5ACF10CA8122C40880C0F081 Timer On 4.5 hr: 0xAA5ACF10CA8122C40880DEF071 Timer On 5.0 hr: 0xAA5ACF10CA8122C50880C0F091 Timer On 5.5 hr: 0xAA5ACF10CA8122C50880DEF061 Timer On 6.0 hr: 0xAA5ACF10CA8122C60880C0F0A1 Timer On 6.5 hr: 0xAA5ACF10CA8122C60880DEF051 Timer On 7.0 hr: 0xAA5ACF10CA8122C70880C0F0B1 Timer On 7.5 hr: 0xAA5ACF10CA8122C70880DEF041 Timer On 8.0 hr: 0xAA5ACF10CA8122C80880C0F041 Timer On 8.5 hr: 0xAA5ACF10CA8122C80880DEF0B1 Timer On 9.0 hr: 0xAA5ACF10CA8122C90880C0F051 Timer On 9.5 hr: 0xAA5ACF10CA8122C90880DEF0A1 Timer On 10 hr: 0xAA5ACF10CA8122CA0880C0F061 Timer On 11 hr (double beep on AC. Remote sends command twice): 0xAA5ACF10CA8122CB0880C0F071 Timer On 12 hr (double beep on AC. Remote sends command twice): 0xAA5ACF10CA8122CC0880C0F001 Timer Off 0.5 hr: 0xAA5ACF10CA8122800880DEF071 Timer Off 1.0 hr: 0xAA5ACF10CA8122810880C0F091 Timer Off 1.5 hr: 0xAA5ACF10CA8122810880DEF061 Timer Off 2.0 hr: 0xAA5ACF10CA8122820880C0F0A1 Timer Off 2.5 hr: 0xAA5ACF10CA8122820880DEF051 Timer Off 3.0 hr: 0xAA5ACF10CA8122830880C0F0B1 Timer Off 3.5 hr: 0xAA5ACF10CA8122830880DEF041 Timer Off 4.0 hr: 0xAA5ACF10CA8122840880C0F0C1 Timer Off 4.5 hr: 0xAA5ACF10CA8122840880DEF031 Timer Off 5.0 hr: 0xAA5ACF10CA8122850880C0F0D1 Timer Off 5.5 hr: 0xAA5ACF10CA8122850880DEF021 Timer Off 6.0 hr: 0xAA5ACF10CA8122860880C0F0E1 Timer Off 6.5 hr: 0xAA5ACF10CA8122860880DEF011 Timer Off 7.0 hr: 0xAA5ACF10CA8122870880C0F0F1 Timer Off 7.5 hr: 0xAA5ACF10CA8122870880DEF001 Timer Off 8.0 hr: 0xAA5ACF10CA8122880880C0F001 Timer Off 8.5 hr: 0xAA5ACF10CA8122880880DEF0F1 Timer Off 9.0 hr: 0xAA5ACF10CA8122890880C0F011 Timer Off 9.5 hr: 0xAA5ACF10CA8122890880DEF0E1 Timer Off 10 hr: 0xAA5ACF10CA81228A0880C0F021 Timer Off 11 hr (double beep on AC. Remote sends command twice): 0xAA5ACF10CA81228B0880C0F031 Timer Off 12 hr (double beep on AC. Remote sends command twice): 0xAA5ACF10CA81228C0880C0F041 No other buttons on the remote.

What brand/model IR demodulator are you using?

Tasmoto 9.2.0(ir) with an Eachen IR module (which should include the IRremoteESP8266 v2.7.14 library) Hardware: Eachen Universal IR-DC6 Remote Control running Tosmoto I know it's a cheapy model (but popular) and there is a chance it's the cause of the problem, but doesn't seem too likely.

I have followed the steps in the [Troubleshooting Guide]

Yes. I've also tried different version of Tosmoto (which had different minor versions of the IRremoteESP8266 library and tried different ACs with the same IR controller

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

No. None of the previous versions I tried have worked. But if I understand the change logs correctly, the sharp AC code hasn't been changed since 2.6.1, and I have only tried version that were newer that that.

crankyoldgit commented 3 years ago

Hi there. As you've correctly mentioned, we typically don't take logs/data from Tasmota This is because there is a whole other layer of program involved which muddies the waters a lot. Tasmota doesn't give us data in a format that is always useful to us. e.g. Like your situation.

You're going to have to get more debug/info out of Tasmota or get another ESP board with an IR demodulator to decode what messages are really sent (e.g. using IRrecvDumpV3). Without more/better data it is not easy for us to help you.

I just browsed the code and the Sharp A/C support has some bizarreness with how it handles power on and off. i.e. It needs to track the previous state of the A/C to know exactly what command code to send. I don't know if/how Tasmota does this. i.e. How it calls/handles/invokes IRac::sendAc(etc) (Note: There are three very different ways it can be called/used.)

If you have the ability to flash your current ESP via serial (in case of emergency etc) you can try IRMQTTServer which I do support fully and can be updated OTA (but if you've only got 1M, you probably want serial access to it). As I know it intimately, I can work out what is going on better etc.

FYI, you say:

When I press the "ON/OFF" button on the remote while the AC is on, I see this is recorded: {"Protocol":"SHARP_AC","Bits":104,"Data":"0xAA5ACF10CA212200088000F061","Repeat":0,"IRHVAC":{"Vendor":"SHARP_AC","Model":1,"Mode":"Off","Power":"Off","Celsius":"On","Temp":25,"FanSpeed":"Auto","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"Off","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}}

and

Turn Off (No response from AC when sent from HA): 0xAA5ACF10CA212200088000F061

Those are the same message codes. So, your A/C really should be responding via Tasmota/HA etc. (Assuming the actual A/C was already on before it was sent via HA etc)

Sharp A/Cs supported by this library has different codes for Off and On. So see if your actual remote produces different codes etc.

GerardNL commented 3 years ago

Hi David,

Thanks for the quick reply!

I was afraid that my finding were not detailed enough yet. I don't have serial port yet but I do have an FT232RL FTDI Serial Adapter Module on order. Any particular hardware you'd recommend purchasing? I don't mind investing modestly to learn and contribute to the HA community. The only point would be that I'm currently in Mali, which makes shipping a bit difficult, so I usually pick new "toys" up while on a break. As my next break is scheduled in about 2 months, so there is plenty of time to order it online (e.g ali express) and have it arrive at family ahead of me. It would however take a while before I can provide the needed information. So if you want to close the topic (after your recommendations), I totally understand and will restart one hopefully in March.

crankyoldgit commented 3 years ago

Any particular hardware you'd recommend purchasing?

This is my off-the-top-of-my-head suggestion list for circuits like these:

All of that can be found on Aliexpress/Ebay/Amazon etc etc. Avoid the pre-built "Arduino IR boards". Often their IR range is terrible.

We can keep this open and see how we go with debugging/capturing. As the library already detects your signal, we can at least verify (albeit slowly) what the remote is sending, and I can verify that with what the library is doing etc. Alas, that doesn't account for the tasmota aspect. But if we can confirm the library works for your A/C, you can eventually point the Tasmota people to this issue to work out what might be wrong at their end, if it is at their end etc.

GerardNL commented 3 years ago

Thanks for that. I've just ordered a small assortment of these components. Some of different types to be sure. Now the long wait for the shipments to tiny non descript envelopes from China. Looking forward dipping my toes in some hardware. I've always been on the software side :-)

crankyoldgit commented 3 years ago

I've always been on the software side :-)

Ditto. I have very rudimentary electronics skills. Thankfully, the circuits required to operate IR are simple and work in most trivial scenarios.

crankyoldgit commented 3 years ago

In the meantime, can you capture a "OFF" message from the remote (when the A/C unit is on) and then an "ON" (when the unit is off).

lenkunz commented 3 years ago

Hi.

I have Sharp AC Model: AH-PR13 I also have this problem. The remote model starts with A903. IRrecvDumpV3 detect it as A907. Everything work fine except power command. It also refuse to respond when power is off.

The dump from IRrecvDumpV3 when I use the remote to turn the power off is

Protocol  : SHARP_AC
Code      : 0xAA5ACF10CC213200088000F451 (104 Bits)
Mesg Desc.: Model: 1 (A907), Power: Off, Mode: 2 (Cool), Temp: 27C, Fan: 3 (Medium), Turbo: Off, Swing(V) Toggle: Off, Ion: On, Econo: -, Clean: Off
uint16_t rawData[211] = {3852, 1872,  490, 472,  482, 1370,  486, 472,  484, 1368,  512, 446,  484, 1368,  488, 472,  482, 1370,  488, 472,  482, 1370,  488, 472,  482, 1370,  512, 1346,  488, 472,  482, 1370,  486, 472,  482, 1370,  488, 1368,  488, 1370,  486, 1370,  486, 472,  482, 472,  482, 1370,  488, 1368,  488, 472,  482, 472,  482, 474,  482, 472,  482, 1370,  512, 448,  482, 472,  482, 472,  482, 472,  482, 472,  482, 1370,  486, 1370,  488, 472,  482, 472,  482, 1370,  488, 1370,  486, 1370,  486, 472,  482, 472,  482, 472,  482, 472,  506, 1346,  486, 472,  482, 472,  482, 472,  482, 1370,  486, 472,  482, 472,  482, 1370,  488, 1368,  488, 472,  482, 472,  482, 472,  482, 472,  482, 472,  482, 472,  482, 472,  482, 472,  482, 472,  482, 472,  482, 472,  482, 472,  482, 472,  482, 1370,  488, 472,  482, 472,  482, 472,  482, 472,  482, 472,  482, 472,  482, 472,  482, 472,  482, 472,  482, 472,  482, 472,  484, 1368,  488, 472,  482, 472,  482, 472,  484, 470,  484, 472,  482, 472,  484, 470,  484, 470,  484, 472,  482, 472,  484, 1368,  488, 472,  484, 1368,  488, 1370,  488, 1370,  488, 1368,  488, 1370,  488, 470,  482, 472,  482, 472,  484, 1368,  486, 472,  484, 1370,  488, 470,  430};  // SHARP_AC
uint8_t state[13] = {0xAA, 0x5A, 0xCF, 0x10, 0xCC, 0x21, 0x32, 0x00, 0x08, 0x80, 0x00, 0xF4, 0x51};

And this is when I try to turn on with same setting.

Protocol  : SHARP_AC
Code      : 0xAA5ACF10CC113200088000F461 (104 Bits)
Mesg Desc.: Model: 1 (A907), Power: On, Mode: 2 (Cool), Temp: 27C, Fan: 3 (Medium), Turbo: Off, Swing(V) Toggle: Off, Ion: On, Econo: -, Clean: Off
uint16_t rawData[211] = {3850, 1874,  488, 470,  484, 1370,  486, 470,  484, 1370,  488, 470,  508, 1346,  486, 470,  484, 1370,  486, 472,  482, 1370,  486, 472,  484, 1370,  488, 1370,  486, 472,  482, 1370,  488, 470,  482, 1370,  510, 1346,  486, 1370,  512, 1346,  486, 472,  482, 472,  484, 1370,  486, 1370,  488, 472,  482, 472,  484, 470,  482, 472,  484, 1368,  512, 446,  484, 470,  482, 472,  484, 472,  482, 472,  484, 1370,  488, 1368,  488, 472,  482, 472,  484, 1370,  486, 1370,  488, 1370,  486, 472,  482, 472,  500, 454,  484, 1370,  486, 472,  482, 472,  484, 470,  482, 472,  484, 1370,  486, 472,  484, 470,  484, 1368,  488, 1368,  488, 472,  484, 470,  484, 472,  484, 470,  484, 472,  482, 472,  484, 470,  484, 470,  482, 470,  484, 470,  482, 472,  482, 472,  482, 472,  482, 1370,  488, 472,  484, 470,  484, 472,  484, 470,  484, 472,  484, 470,  484, 470,  484, 470,  484, 470,  484, 470,  484, 472,  484, 1368,  488, 470,  484, 470,  484, 470,  484, 472,  482, 472,  484, 470,  484, 470,  484, 470,  484, 470,  484, 472,  484, 1368,  488, 472,  482, 1370,  488, 1370,  488, 1368,  488, 1368,  488, 1368,  488, 470,  484, 470,  482, 472,  484, 470,  484, 1368,  488, 1370,  488, 470,  430};  // SHARP_AC
uint8_t state[13] = {0xAA, 0x5A, 0xCF, 0x10, 0xCC, 0x11, 0x32, 0x00, 0x08, 0x80, 0x00, 0xF4, 0x61};

I hope this will be helpful.

crankyoldgit commented 3 years ago

I hope this will be helpful.

Actually, it does. A lot.

I think I see how the A903 differs from the A907.

I need to know a bunch more about this model. eg. What features are reported incorrectly? (and hex codes for those that don't + description) Does this model have a light/LED button? What about Econo mode? What is the Full model number for the A/C unit & the remote please?

In the meantime, can you please download, test, & give feedback on this branch please: https://github.com/crankyoldgit/IRremoteESP8266/tree/Issue1387

Hopefully it should work for you if/when you set the model to 3.

lenkunz commented 3 years ago

I hope this will be helpful.

Actually, it does. A lot.

I think I see how the A903 differs from the A907.

I need to know a bunch more about this model. eg. What features are reported incorrectly? (and hex codes for those that don't + description) Does this model have a light/LED button? What about Econo mode? What is the Full model number for the A/C unit & the remote please?

Hi I'm here to report the result and provide extra info.

There is some data that incorrectly reported by Dump.

The fan in auto mode (2) reported correctly. But other is largely incorrect.

After tested with dump it is as following.

Auto

rotocol  : SHARP_AC
Code      : 0xAA5ACF10CC312200088005F401 (104 Bits)
Mesg Desc.: Model: 3 (A903), Power: On, Mode: 2 (Cool), Temp: 27C, Fan: 2 (Auto), Turbo: Off, Swing(V) Toggle: Off, Ion: On, Econo: -, Clean: Off
uint16_t rawData[211] = {3850, 1880,  482, 474,  480, 1376,  480, 474,  480, 1376,  480, 472,  482, 1376,  480, 474,  480, 1376,  482, 474,  482, 1374,  480, 474,  480, 1374,  482, 1374,  480, 474,  480, 1376,  482, 474,  482, 1376,  480, 1376,  480, 1376,  480, 1376,  480, 474,  482, 472,  480, 1376,  482, 1376,  480, 474,  480, 474,  480, 474,  480, 474,  482, 1376,  480, 474,  482, 472,  480, 474,  482, 474,  480, 472,  482, 1376,  480, 1376,  480, 474,  480, 474,  480, 1376,  482, 1374,  482, 1376,  480, 474,  480, 474,  482, 472,  480, 1376,  480, 1376,  482, 474,  480, 474,  480, 474,  482, 1376,  480, 474,  480, 474,  480, 474,  480, 1376,  482, 472,  482, 474,  480, 474,  480, 474,  482, 474,  480, 474,  480, 474,  480, 474,  482, 474,  480, 474,  480, 474,  482, 472,  480, 474,  482, 1376,  480, 474,  482, 472,  482, 474,  480, 472,  482, 474,  480, 474,  482, 472,  482, 474,  480, 474,  480, 472,  480, 474,  482, 1376,  480, 1376,  482, 472,  482, 1376,  480, 474,  506, 448,  480, 474,  482, 474,  480, 474,  480, 474,  482, 472,  482, 1376,  480, 474,  480, 1376,  482, 1376,  504, 1352,  482, 1374,  482, 1376,  482, 472,  480, 474,  482, 472,  482, 474,  480, 474,  480, 474,  482, 472,  428};  // SHARP_AC
uint8_t state[13] = {0xAA, 0x5A, 0xCF, 0x10, 0xCC, 0x31, 0x22, 0x00, 0x08, 0x80, 0x05, 0xF4, 0x01};

Low

Protocol  : SHARP_AC
Code      : 0xAA5ACF10CC313200088005F411 (104 Bits)
Mesg Desc.: Model: 3 (A903), Power: On, Mode: 2 (Cool), Temp: 27C, Fan: 3 (Medium), Turbo: Off, Swing(V) Toggle: Off, Ion: On, Econo: -, Clean: Off
uint16_t rawData[211] = {3850, 1880,  482, 472,  482, 1374,  482, 472,  480, 1376,  482, 472,  482, 1376,  480, 474,  480, 1374,  482, 474,  480, 1376,  482, 474,  480, 1376,  480, 1376,  482, 472,  482, 1374,  480, 474,  482, 1374,  482, 1374,  482, 1374,  480, 1376,  480, 474,  480, 474,  480, 1376,  456, 1400,  482, 474,  480, 474,  456, 496,  480, 474,  480, 1376,  480, 474,  480, 474,  478, 476,  458, 496,  456, 498,  480, 1376,  480, 1376,  458, 498,  480, 474,  480, 1376,  456, 1398,  470, 1388,  480, 474,  482, 472,  482, 472,  458, 1398,  458, 1398,  480, 476,  456, 498,  480, 474,  480, 1376,  458, 496,  482, 474,  480, 1376,  478, 1378,  478, 476,  458, 496,  458, 498,  456, 498,  480, 474,  480, 474,  458, 496,  480, 474,  458, 496,  480, 474,  480, 474,  480, 474,  458, 496,  480, 1376,  456, 498,  458, 496,  480, 476,  478, 476,  456, 496,  482, 474,  480, 476,  478, 476,  480, 474,  480, 474,  480, 474,  480, 1378,  480, 1376,  480, 474,  458, 1400,  480, 474,  480, 476,  456, 498,  458, 498,  480, 474,  480, 474,  458, 496,  478, 1378,  476, 478,  480, 1376,  458, 1398,  458, 1398,  458, 1398,  480, 1378,  480, 476,  478, 474,  480, 474,  456, 1400,  480, 474,  478, 474,  480, 474,  430};  // SHARP_AC
uint8_t state[13] = {0xAA, 0x5A, 0xCF, 0x10, 0xCC, 0x31, 0x32, 0x00, 0x08, 0x80, 0x05, 0xF4, 0x11};

Medium

Protocol  : SHARP_AC
Code      : 0xAA5ACF10CC315200088005F471 (104 Bits)
Mesg Desc.: Model: 3 (A903), Power: On, Mode: 2 (Cool), Temp: 27C, Fan: 5 (UNKNOWN), Turbo: Off, Swing(V) Toggle: Off, Ion: On, Econo: -, Clean: Off
uint16_t rawData[211] = {3824, 1902,  458, 496,  482, 1376,  458, 496,  480, 1376,  480, 474,  456, 1400,  480, 474,  480, 1376,  458, 498,  480, 1376,  458, 496,  480, 1376,  458, 1400,  458, 496,  480, 1376,  458, 496,  458, 1398,  456, 1400,  480, 1378,  456, 1400,  458, 496,  480, 476,  458, 1398,  480, 1378,  478, 474,  458, 496,  480, 474,  480, 474,  480, 1376,  458, 496,  458, 496,  480, 474,  480, 474,  480, 474,  482, 1376,  482, 1376,  456, 498,  480, 474,  480, 1376,  482, 1376,  480, 1376,  456, 498,  480, 474,  480, 474,  458, 1398,  456, 1398,  458, 498,  458, 496,  480, 474,  456, 1400,  480, 474,  480, 474,  480, 1374,  482, 474,  480, 1376,  480, 474,  478, 476,  480, 476,  480, 474,  478, 476,  480, 474,  482, 472,  480, 476,  480, 474,  462, 492,  480, 474,  480, 474,  478, 1378,  458, 496,  480, 474,  480, 474,  456, 498,  458, 496,  478, 476,  482, 474,  478, 476,  478, 476,  480, 474,  480, 474,  478, 1378,  482, 1374,  456, 498,  480, 1376,  478, 476,  456, 498,  480, 474,  456, 498,  480, 474,  480, 476,  478, 474,  480, 1376,  480, 476,  478, 1378,  456, 1400,  458, 1400,  478, 1378,  456, 1402,  476, 476,  478, 476,  456, 498,  454, 1402,  454, 1402,  480, 1378,  454, 500,  456};  // SHARP_AC
uint8_t state[13] = {0xAA, 0x5A, 0xCF, 0x10, 0xCC, 0x31, 0x52, 0x00, 0x08, 0x80, 0x05, 0xF4, 0x71};

High

Protocol  : SHARP_AC
Code      : 0xAA5ACF10CC317200088005F451 (104 Bits)
Mesg Desc.: Model: 3 (A903), Power: On, Mode: 2 (Cool), Temp: 27C, Fan: 7 (High), Turbo: Off, Swing(V) Toggle: Off, Ion: On, Econo: -, Clean: Off
uint16_t rawData[211] = {3828, 1876,  452, 504,  450, 1406,  508, 444,  476, 1382,  486, 470,  472, 1384,  508, 446,  508, 1348,  508, 446,  450, 1408,  484, 468,  474, 1382,  508, 1348,  510, 444,  474, 1382,  450, 504,  450, 1406,  484, 1372,  486, 1372,  484, 1374,  484, 470,  450, 504,  450, 1404,  452, 1406,  486, 466,  452, 504,  474, 480,  508, 446,  482, 1376,  508, 444,  452, 504,  484, 468,  452, 504,  474, 480,  508, 1348,  484, 1370,  486, 468,  512, 444,  484, 1372,  486, 1372,  484, 1370,  474, 480,  510, 444,  510, 444,  452, 1404,  486, 1372,  452, 502,  452, 502,  486, 466,  490, 1368,  450, 504,  508, 446,  484, 1372,  486, 1370,  450, 1406,  512, 444,  474, 482,  476, 476,  452, 504,  476, 478,  486, 470,  476, 478,  510, 444,  476, 480,  504, 450,  474, 480,  510, 446,  484, 1372,  506, 448,  484, 470,  506, 446,  474, 480,  508, 446,  486, 470,  482, 470,  474, 480,  512, 444,  486, 470,  450, 502,  486, 1370,  486, 1370,  510, 442,  486, 1372,  510, 444,  510, 444,  476, 478,  476, 480,  452, 504,  474, 480,  474, 480,  474, 1384,  484, 470,  484, 1372,  486, 1370,  484, 1372,  484, 1372,  506, 1352,  484, 470,  476, 480,  474, 480,  474, 1382,  506, 446,  476, 1382,  508, 446,  422};  // SHARP_AC
uint8_t state[13] = {0xAA, 0x5A, 0xCF, 0x10, 0xCC, 0x31, 0x72, 0x00, 0x08, 0x80, 0x05, 0xF4, 0x51};

The model does have LED toggle button.

Toggle LED from On => Off

 Protocol  : SHARP_AC
Code      : 0xAA5ACF10CC617200088004F411 (104 Bits)
Mesg Desc.: Model: 3 (A903), Power: -, Mode: 2 (Cool), Temp: 27C, Fan: 7 (High), Turbo: Off, Swing(V) Toggle: Off, Ion: On, Econo: Toggle, Clean: Off
uint16_t rawData[211] = {3848, 1880,  482, 474,  482, 1374,  480, 474,  482, 1374,  482, 472,  482, 1374,  482, 474,  480, 1376,  480, 474,  482, 1374,  482, 474,  482, 1374,  480, 1376,  480, 474,  480, 1376,  482, 474,  480, 1376,  480, 1376,  480, 1376,  482, 1376,  480, 474,  480, 474,  482, 1374,  482, 1374,  480, 474,  482, 472,  506, 448,  482, 474,  480, 1376,  482, 472,  482, 474,  480, 474,  480, 474,  480, 474,  482, 1374,  482, 1376,  482, 472,  482, 474,  480, 1374,  482, 1374,  506, 1350,  482, 472,  480, 474,  482, 472,  480, 474,  482, 1376,  480, 1376,  504, 452,  480, 474,  480, 1376,  482, 474,  482, 472,  480, 1376,  480, 1376,  480, 1376,  480, 474,  482, 474,  480, 474,  480, 474,  482, 472,  480, 474,  480, 474,  482, 474,  480, 474,  482, 472,  480, 474,  482, 474,  480, 1376,  480, 474,  480, 472,  480, 474,  480, 474,  482, 472,  482, 472,  482, 474,  482, 472,  482, 472,  482, 472,  480, 474,  480, 1376,  480, 474,  480, 474,  480, 1376,  480, 474,  482, 472,  482, 472,  482, 472,  480, 474,  482, 472,  480, 474,  482, 1376,  482, 472,  482, 1374,  482, 1374,  482, 1374,  482, 1376,  480, 1376,  482, 472,  482, 472,  480, 474,  480, 1376,  482, 472,  482, 474,  480, 474,  426};  // SHARP_AC
uint8_t state[13] = {0xAA, 0x5A, 0xCF, 0x10, 0xCC, 0x61, 0x72, 0x00, 0x08, 0x80, 0x04, 0xF4, 0x11};

Toggle LED from Off => On

Protocol  : SHARP_AC
Code      : 0xAA5ACF10CC617200088004F411 (104 Bits)
Mesg Desc.: Model: 3 (A903), Power: -, Mode: 2 (Cool), Temp: 27C, Fan: 7 (High), Turbo: Off, Swing(V) Toggle: Off, Ion: On, Econo: Toggle, Clean: Off
uint16_t rawData[211] = {3850, 1878,  482, 472,  482, 1376,  482, 472,  482, 1376,  480, 474,  482, 1374,  482, 472,  482, 1374,  482, 474,  482, 1374,  482, 472,  482, 1376,  480, 1376,  482, 472,  482, 1376,  480, 474,  482, 1374,  482, 1376,  480, 1376,  480, 1376,  506, 448,  482, 472,  480, 1376,  480, 1376,  480, 474,  482, 472,  482, 472,  480, 474,  482, 1374,  480, 474,  482, 474,  480, 474,  480, 474,  482, 472,  480, 1376,  480, 1376,  478, 476,  482, 472,  480, 1378,  480, 1376,  480, 1376,  482, 474,  478, 476,  480, 474,  480, 476,  480, 1376,  480, 1376,  478, 476,  480, 474,  478, 1378,  480, 474,  480, 474,  456, 1400,  480, 1376,  480, 1378,  458, 496,  480, 474,  458, 498,  478, 476,  478, 476,  480, 474,  480, 474,  480, 474,  458, 498,  480, 474,  480, 474,  480, 474,  458, 1398,  480, 474,  458, 496,  458, 498,  480, 474,  456, 498,  482, 474,  480, 474,  478, 476,  456, 498,  480, 474,  456, 496,  480, 1378,  478, 476,  478, 474,  480, 1378,  458, 496,  458, 496,  480, 476,  478, 476,  478, 476,  458, 498,  478, 476,  480, 1378,  480, 476,  482, 1374,  458, 1398,  482, 1374,  482, 1376,  456, 1400,  456, 498,  478, 476,  480, 476,  456, 1400,  480, 474,  456, 498,  478, 476,  404};  // SHARP_AC
uint8_t state[13] = {0xAA, 0x5A, 0xCF, 0x10, 0xCC, 0x61, 0x72, 0x00, 0x08, 0x80, 0x04, 0xF4, 0x11};

Turn Ion off

Protocol  : SHARP_AC
Code      : 0xAA5ACF10CC717208088000F081 (104 Bits)
Mesg Desc.: Model: 3 (A903), Power: -, Mode: 2 (Cool), Temp: 27C, Fan: 7 (High), Turbo: Off, Swing(V) Toggle: Off, Ion: Off, Econo: -, Clean: Off
uint16_t rawData[211] = {3850, 1880,  482, 474,  480, 1376,  482, 472,  480, 1376,  482, 474,  480, 1376,  480, 474,  480, 1376,  482, 474,  482, 1374,  482, 474,  480, 1376,  480, 1376,  480, 474,  482, 1374,  480, 474,  482, 1374,  482, 1376,  482, 1374,  480, 1376,  480, 472,  482, 474,  480, 1376,  480, 1376,  480, 472,  482, 474,  480, 474,  480, 474,  504, 1352,  482, 472,  482, 472,  482, 472,  482, 474,  480, 474,  482, 1374,  480, 1376,  480, 474,  480, 474,  482, 1374,  482, 1376,  480, 1376,  482, 472,  482, 474,  480, 474,  482, 1374,  504, 1352,  480, 1376,  482, 472,  482, 474,  482, 1374,  480, 474,  482, 472,  482, 1376,  482, 1374,  482, 1376,  480, 474,  480, 474,  482, 472,  482, 474,  480, 1376,  480, 474,  482, 472,  480, 474,  482, 474,  480, 474,  480, 474,  480, 474,  480, 1376,  480, 474,  480, 474,  482, 472,  480, 474,  506, 448,  480, 474,  480, 474,  482, 474,  480, 474,  480, 474,  480, 474,  480, 1376,  480, 474,  480, 474,  480, 474,  480, 474,  482, 474,  480, 474,  480, 472,  482, 472,  482, 474,  480, 474,  482, 472,  480, 474,  480, 1376,  480, 1376,  482, 1374,  482, 1376,  482, 1374,  482, 474,  480, 474,  482, 472,  482, 472,  482, 474,  480, 474,  482, 1374,  428};  // SHARP_AC
uint8_t state[13] = {0xAA, 0x5A, 0xCF, 0x10, 0xCC, 0x71, 0x72, 0x08, 0x08, 0x80, 0x00, 0xF0, 0x81};

Turn Ion On

Protocol  : SHARP_AC
Code      : 0xAA5ACF10CC617208088000F4D1 (104 Bits)
Mesg Desc.: Model: 3 (A903), Power: -, Mode: 2 (Cool), Temp: 27C, Fan: 7 (High), Turbo: Off, Swing(V) Toggle: Off, Ion: On, Econo: -, Clean: Off
uint16_t rawData[211] = {3848, 1880,  480, 474,  480, 1376,  480, 474,  480, 1376,  480, 474,  480, 1376,  480, 474,  482, 1376,  480, 474,  480, 1376,  482, 472,  482, 1376,  480, 1376,  480, 474,  480, 1376,  480, 474,  480, 1376,  506, 1350,  482, 1376,  480, 1376,  480, 474,  482, 472,  482, 1374,  480, 1376,  506, 450,  480, 472,  482, 474,  480, 474,  482, 1376,  480, 474,  482, 472,  506, 448,  482, 472,  482, 474,  480, 1376,  480, 1374,  482, 474,  480, 474,  498, 1358,  480, 1376,  482, 1376,  480, 474,  504, 450,  482, 474,  480, 474,  482, 1374,  482, 1374,  482, 474,  482, 472,  480, 1376,  480, 474,  480, 474,  482, 1374,  480, 1376,  482, 1376,  506, 448,  482, 472,  508, 448,  480, 474,  482, 1374,  480, 474,  480, 474,  482, 474,  480, 474,  480, 472,  482, 472,  482, 474,  480, 1376,  480, 474,  482, 472,  482, 474,  480, 474,  480, 474,  482, 472,  482, 472,  482, 474,  480, 474,  482, 472,  482, 472,  506, 1352,  506, 448,  482, 472,  482, 474,  480, 474,  480, 474,  482, 472,  482, 474,  480, 474,  480, 474,  482, 472,  504, 1352,  480, 472,  482, 1376,  506, 1350,  482, 1376,  480, 1376,  482, 1376,  480, 474,  482, 472,  506, 448,  482, 1374,  508, 448,  480, 1376,  482, 1374,  428};  // SHARP_AC
uint8_t state[13] = {0xAA, 0x5A, 0xCF, 0x10, 0xCC, 0x61, 0x72, 0x08, 0x08, 0x80, 0x00, 0xF4, 0xD1};

When AC turned off, press Ion button

Protocol  : SHARP_AC
Code      : 0xAA5ACF1001113400088000F411 (104 Bits)
Mesg Desc.: Model: 3 (A903), Power: On, Mode: 0 (Auto), Temp: 16C, Fan: 3 (Medium), Turbo: Off, Swing(V) Toggle: Off, Ion: On, Econo: -, Clean: Off
uint16_t rawData[211] = {3850, 1880,  482, 474,  482, 1374,  482, 474,  556, 1300,  480, 474,  480, 1376,  480, 474,  480, 1376,  480, 474,  480, 1376,  480, 474,  480, 1376,  480, 1376,  480, 474,  482, 1376,  480, 474,  482, 1374,  480, 1376,  482, 1374,  482, 1376,  480, 474,  480, 474,  480, 1374,  482, 1376,  482, 472,  482, 474,  480, 474,  480, 474,  482, 1374,  482, 474,  482, 472,  480, 474,  482, 1374,  482, 474,  480, 474,  480, 474,  480, 474,  480, 474,  480, 474,  482, 472,  482, 1374,  482, 474,  480, 474,  482, 472,  480, 1376,  482, 474,  480, 474,  480, 474,  480, 474,  480, 474,  480, 1376,  482, 472,  482, 1374,  482, 1374,  482, 474,  482, 474,  480, 474,  480, 474,  480, 474,  482, 474,  480, 472,  482, 472,  482, 472,  480, 474,  480, 474,  480, 474,  480, 474,  480, 1376,  480, 474,  480, 474,  480, 474,  480, 474,  480, 474,  480, 474,  480, 474,  480, 474,  482, 472,  480, 474,  482, 474,  480, 1376,  480, 474,  482, 472,  482, 474,  480, 474,  480, 474,  480, 474,  480, 474,  480, 474,  480, 474,  480, 474,  480, 1376,  480, 474,  480, 1378,  480, 1376,  482, 1376,  480, 1376,  480, 1376,  480, 472,  482, 474,  480, 474,  480, 1376,  480, 472,  482, 474,  480, 474,  428};  // SHARP_AC
uint8_t state[13] = {0xAA, 0x5A, 0xCF, 0x10, 0x01, 0x11, 0x34, 0x00, 0x08, 0x80, 0x00, 0xF4, 0x11};

The model does not have Eco button. But have Comfort, Kids and Jet button.

The model number

I tested it. However the result seems to be the same.

In the meantime, can you please download, test, & give feedback on this branch please: https://github.com/crankyoldgit/IRremoteESP8266/tree/Issue1387

Hopefully it should work for you if/when you set the model to 3.

I flashed my NodeMCU with DumpV3 to dump the output signal from the library. Somehow the DumpV3 can't detect the model. But the AC still respond to it.

When turn the power on.

Protocol  : UNKNOWN
Code      : 0x7B561C2F (106 Bits)
uint16_t rawData[211] = {3816, 1922,  494, 480,  488, 1386,  492, 482,  482, 1388,  492, 482,  488, 1384,  404, 566,  454, 1420,  412, 558,  410, 1464,  492, 480,  484, 1388,  494, 1378,  486, 486,  486, 1388,  486, 486,  486, 1386,  486, 1386,  410, 1464,  488, 1384,  384, 588,  454, 518,  384, 1488,  482, 1388,  508, 464,  490, 480,  492, 482,  488, 484,  492, 1380,  512, 460,  488, 486,  484, 488,  484, 490,  506, 470,  426, 1444,  436, 1436,  484, 488,  484, 488,  488, 1386,  504, 1368,  486, 1386,  482, 490,  484, 488,  482, 490,  492, 1382,  492, 1382,  436, 536,  468, 504,  410, 564,  442, 1430,  456, 516,  456, 516,  456, 516,  456, 1416,  440, 532,  510, 470,  484, 490,  492, 478,  484, 488,  482, 490,  488, 484,  488, 482,  488, 484,  492, 482,  486, 486,  488, 484,  486, 486,  512, 1358,  500, 476,  454, 518,  482, 490,  514, 468,  402, 562,  410, 562,  386, 586,  408, 564,  414, 558,  408, 566,  410, 562,  454, 1420,  438, 1434,  466, 504,  490, 1384,  494, 480,  492, 480,  488, 486,  488, 484,  486, 486,  482, 490,  482, 490,  482, 1390,  492, 480,  512, 1358,  454, 1418,  406, 1466,  486, 1388,  454, 1418,  492, 480,  482, 490,  482, 490,  484, 488,  492, 482,  486, 486,  482, 492,  482};  // UNKNOWN 7B561C2F

When turn the power off.

Protocol  : UNKNOWN
Code      : 0x5F9C8DC (106 Bits)
uint16_t rawData[211] = {3832, 1906,  484, 490,  486, 1386,  514, 458,  486, 1386,  482, 490,  492, 1382,  452, 520,  382, 1490,  424, 548,  470, 1402,  486, 486,  490, 1382,  488, 1388,  488, 484,  486, 1386,  492, 480,  488, 1386,  482, 1390,  436, 1438,  516, 1356,  430, 542,  384, 590,  454, 1418,  488, 1384,  480, 492,  456, 516,  510, 462,  488, 484,  492, 1380,  492, 482,  486, 488,  492, 480,  512, 460,  488, 484,  494, 1378,  408, 1464,  482, 490,  482, 490,  480, 1392,  452, 1422,  482, 1390,  486, 486,  492, 482,  486, 486,  482, 1390,  486, 1394,  482, 488,  484, 488,  488, 484,  484, 1388,  454, 520,  382, 588,  456, 518,  404, 1468,  404, 566,  440, 534,  458, 514,  484, 490,  482, 490,  492, 480,  484, 490,  486, 486,  492, 480,  482, 490,  482, 490,  482, 490,  482, 490,  482, 1390,  482, 492,  482, 490,  482, 490,  482, 490,  482, 488,  406, 568,  408, 564,  436, 534,  408, 564,  412, 560,  406, 566,  438, 1434,  490, 1384,  404, 566,  456, 1416,  480, 492,  482, 490,  514, 460,  482, 490,  482, 490,  492, 482,  488, 484,  488, 1384,  492, 480,  488, 1384,  430, 1442,  408, 1464,  482, 1390,  410, 1464,  494, 478,  482, 492,  484, 488,  482, 490,  484, 488,  484, 490,  482, 490,  488};  // UNKNOWN 5F9C8DC

This is the source code I modified from CommonAcControl

Board chip is esp32 (Node32s board)

#include <Arduino.h>
#include <IRremoteESP8266.h>
#include <IRac.h>
#include <IRutils.h>

#include <BlynkSimpleEsp32.h>

const char* WIFI_SSID = "";
const char* WIFI_PASSWORD = "";
const char* BLYNK_AUTH = "";

const uint16_t kIrLed = 4; // The ESP GPIO pin to use that controls the IR LED.
IRac ac(kIrLed);           // Create a A/C object using GPIO to sending messages with.

void setup()
{
  pinMode(2, OUTPUT);
  digitalWrite(2, HIGH);

  Serial.begin(115200);
  delay(200);
  acSetup();
  InitWiFi();
}

void acSetup()
{
  // Set up what we want to send.
  // See state_t, opmode_t, fanspeed_t, swingv_t, & swingh_t in IRsend.h for
  // all the various options.
  ac.next.protocol = decode_type_t::SHARP_AC;  // Set a protocol to use.
  ac.next.model = 3;                           // Some A/Cs have different models. Try just the first.
  ac.next.mode = stdAc::opmode_t::kCool;       // Run in cool mode initially.
  ac.next.celsius = true;                      // Use Celsius for temp units. False = Fahrenheit
  ac.next.degrees = 27;                        // 27 degrees.
  ac.next.fanspeed = stdAc::fanspeed_t::kAuto; // Start the fan at medium.
  ac.next.swingv = stdAc::swingv_t::kOff;      // Don't swing the fan up or down.
  ac.next.swingh = stdAc::swingh_t::kOff;      // Don't swing the fan left or right.
  ac.next.light = false;                       // Turn off any LED/Lights/Display that we can.
  ac.next.beep = false;                        // Turn off any beep from the A/C if we can.
  ac.next.econo = false;                       // Turn off any economy modes if we can.
  ac.next.filter = true;                       // Turn off any Ion/Mold/Health filters if we can.
  ac.next.turbo = false;                       // Don't use any turbo/powerful/etc modes.
  ac.next.quiet = false;                       // Don't use any quiet/silent/etc modes.
  ac.next.sleep = -1;                          // Don't set any sleep time or modes.
  ac.next.clean = false;                       // Turn off any Cleaning options if we can.
  ac.next.clock = -1;                          // Don't set any current time if we can avoid it.
  ac.next.power = false;                       // Initially start with the unit off.

  sendAc();
}

void loop()
{
  Blynk.run();
  checkAc();
}

BLYNK_WRITE(V0)
{
  float pinValue = param.asFloat(); 

  ac.next.celsius = true;
  ac.next.degrees = pinValue;
}

BLYNK_WRITE(V1)
{
  int pinValue = param.asInt(); 

  switch (pinValue)
  {
  case 2:
    ac.next.mode = stdAc::opmode_t::kCool;
    break;
  case 3:
    ac.next.mode = stdAc::opmode_t::kDry;
    break;
  case 4:
    ac.next.mode = stdAc::opmode_t::kFan;
    break;
  case 1:  
  default:
    ac.next.mode = stdAc::opmode_t::kAuto;
    break;
  }
}

BLYNK_WRITE(V2)
{
  int pinValue = param.asInt(); 

  switch (pinValue)
  {
  case 2:
    ac.next.fanspeed = stdAc::fanspeed_t::kHigh;
    break;
  case 3:
    ac.next.fanspeed = stdAc::fanspeed_t::kMedium;
    break;
  case 4:
    ac.next.fanspeed = stdAc::fanspeed_t::kLow;
    break;
  case 1:  
  default:
    ac.next.fanspeed = stdAc::fanspeed_t::kAuto;
    break;
  }
}

BLYNK_WRITE(V3)
{
  int pinValue = param.asInt(); 
  if (pinValue == 0) {
    ac.next.power = false;
  } else {
    ac.next.power = true;
  }
}

void checkAc() {
  if (ac.hasStateChanged()) {
    sendAc();
  }
}

void sendAc()
{
  digitalWrite(2, LOW);

  ac.sendAc();

  delay(1000);
  digitalWrite(2, HIGH);
}

void InitWiFi()
{
  Blynk.begin(BLYNK_AUTH, WIFI_SSID, WIFI_PASSWORD);
}
crankyoldgit commented 3 years ago

Okay, I've made some more changes to attempt to address most of those issue. Please re-download the branch and let me know how this goes.

GerardNL commented 3 years ago

In the meantime, can you capture a "OFF" message from the remote (when the A/C unit is on) and then an "ON" (when the unit is off).

Hi David, sorry for the slow reply. Work got in the way of more fun things. Glad to have another Sharp AC user in the thread.

Below is what captured by the MQT console on the IR module, when using the original remote of the AC.

Turn AC on (from Off):
{"IrReceived":{"Protocol":"SHARP_AC","Bits":104,"Data":"0xAA5ACF10CA112200088000F051","Repeat":0,"IRHVAC":{"Vendor":"SHARP_AC","Model":1,"Mode":"Cool","Power":"On","Celsius":"On","Temp":25,"FanSpeed":"Auto","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"Off","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}}}

Turn AC of (from Onn):
 {"IrReceived":{"Protocol":"SHARP_AC","Bits":104,"Data":"0xAA5ACF10CA212200088000F061","Repeat":0,"IRHVAC":{"Vendor":"SHARP_AC","Model":1,"Mode":"Off","Power":"Off","Celsius":"On","Temp":25,"FanSpeed":"Auto","SwingV":"Off","SwingH":"Off","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"Off","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}}}

So from that, it looks like whatever is translating the code, seems to understand "Power:On" and "Power:Off"

Anyway. Maybe it's already too late for this information. Let me read the rest of the thread. Seems interesting...

GerardNL commented 3 years ago

You didn't ask, and maybe not too usefull as I can't (don't know how to) tell you the A9xx model number, just the model number on the box: AH-A12REVP-1. But just in case...

I need to know a bunch more about this model. eg. What features are reported incorrectly? (and hex codes for those that don't + description) Only the on/off issue. The model is so basic (no light, no ion, no econo, no kids/comfort modes) Does this model have a light/LED button? What about Econo mode? None of these 2 features What is the Full model number for the A/C unit & the remote please? For the remote: CRMC-A863JBEZ

crankyoldgit commented 3 years ago

Thanks, I'll add that soon assuming the new version works for you.

You should try compiling Tasmota with the version of the library in that branch and see how it goes for you.

lenkunz commented 3 years ago

Okay, I've made some more changes to attempt to address most of those issue. Please re-download the branch and let me know how this goes.

Sorry for being late. My work got in my way. Turn off and Turn on working like a charm now.

I still can't neither test if temperature setting nor mode is right. But it seems right.

There is still fan setting problem. It seems like Medium setting works exactly like low setting. (or Auto?)

crankyoldgit commented 3 years ago

Turn off and Turn on working like a charm now.

Excellent. Thanks for confirming that.

There is still fan setting problem. It seems like Medium setting works exactly like low setting. (or Auto?)

I think I know what might be causing that. I've hopefully just added a fix for that to that branch. Please download/recompile etc and let me know how it goes.

lenkunz commented 3 years ago

I think I know what might be causing that. I've hopefully just added a fix for that to that branch. Please download/recompile etc and let me know how it goes.

I can confirm that fan command work correctly now for my remote control. ^^

GerardNL commented 3 years ago

Thanks, I'll add that soon assuming the new version works for you.

You should try compiling Tasmota with the version of the library in that branch and see how it goes for you.

That was an invitation for a deep dive into a new environment. A bit of trial and error, but after some reading, I managed to compile Tasmota with your new source code included.

I didn't doubt your skills, but honestly didn't expect I got the compiling right and was prepared to see that I bricked the IR module. But a big surpise: It worked on the first try!! So now the AC is responding to the ON and OFF commands send from HA, in the same way the AC of another brand does.

I'm very grateful for your support and pleased to see this is such an active community.

I hope the changes will make into the official branch, although there might be few users with this particular AC.

Once again, thank you so much and let me know if I can further contribute to this particular subject. The small parts are still on order, but I guess we'll not need them for this problem after all.

crankyoldgit commented 3 years ago

@GerardNL you can thank @lenkunz for providing the data needed, and making your purchase redundant. :-)

Thanks both of you for confirming it's working now.

It's now been merged into our master branch, so it will make it into Tasmota eventually.

crankyoldgit commented 3 years ago

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