I recently updated my WeMos D1 Mini from v0.5.6 to v2.7.3 because I saw that it has an Home Assistant integration.
After I updated, I noticed that none of my IR commands that I used before to control my Electra A/C work.
I tried the new aircon menu and the main functions in it are working great but the Quiet, Turbo, Econo, Light, Filter, Clean, Beep functions do nothing.
My A/C has an option to toggle the display, turbo mode and clean mode and I was able to use them in the past with the old version (via A/C complex commands).
So, can you fix those commands please (in the aircon menu)?
And do I need to re-record the old "complex" commands I have so they would work again?
And is there a way to toggle options in the aircon menu with a URL?
FYI, v0.5.6 was the version of IRMQTTServer, not the library version (currently v2.7.3), Back then, the library was v2.5.1.
In the v2.6.0 release notes we had to change the bit ordering of the Electra protocol.
e.g. _"Change per byte bit-order in Electra protocol. (#648)"_
That's probably why your old codes no longer work. If you reverse the bit order of _each_ byte you send, you will probably get a working message again.
e.g. 0x01 (0b00000001)-> 0x80 (0b10000000), 0x02 (0b00000010) -> 0x40 (0b01000000), etc.
0x0102 -> 0x4080. i.e. Bit's with in the each byte are reversed, _not_ the order of the bytes.
"Detailed" Electra support wasn't added until v2.6.3 of the library. (#788)
You are now attempting to use the "Common A/C" API to control the Electra device. Different models and brands have different levels of support.
This is what is currently supported by the library for Electra: https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/IRac.cpp#L464-L488
i.e. Quiet, Turbo, Econo, Light, Filter, Clean & Beep are not (yet) supported for Electra.
So the library/code/example is working as intended at the moment.
My A/C has an option to toggle the display, turbo mode and clean mode and I was able to use them in > the past with the old version (via A/C complex commands).
So, can you fix those commands please (in the aircon menu)?
If you can work out what parts/bits of the uint8_t state[] change for those given modes, I can add code to support them. e.g. Follow the instructions/guide here: https://github.com/crankyoldgit/IRremoteESP8266/wiki/Adding-support-for-a-new-AC-protocol for how to work out which bits do what etc.
And do I need to re-record the old "complex" commands I have so they would work again?
Per earlier, yes (or no). The bit ordering changed for the Electra protocol, so you can either re-capture the messages with the current IRrecvDumpV2 example, or do the bit-math to reverse them yourself.
And is there a way to toggle options in the aircon menu with a URL?
It is just a html form. You should be able to construct & submit a URL with the correct arguments to make the changes you want.
Do some Googling, example the HTML page source, and you will work out how to do that.
e.g.
So I probably looked at the wrong version number.
How many codes will I need to record so you’ll add a more detailed support for my A/C?
Will it be enough to record a couple (with those options toggled on or off) or will I have to record everything?
How many codes will I need to record so you’ll add a more detailed support for my A/C?
How long is a piece of string? ;-)
Read: https://github.com/crankyoldgit/IRremoteESP8266/wiki/Adding-support-for-a-new-AC-protocol#working-out-the-details & https://github.com/crankyoldgit/IRremoteESP8266/wiki/Adding-support-for-a-new-AC-protocol#binary-settings
As you're probably looking at "binary" controls/settings, you are probably only looking at a couple of messages per setting.
Will it be enough to record a couple (with those options toggled on or off) or will I have to record everything?
It all depends. It will only take you as many as it takes you to understand what bits are changing & why.
Also, can you please provide the Brand & Model numbers for your A/C head unit and your remote?
A/C and remote brand: Electra
A/C Model: ELECTRA Classic INV 17 / AXW12DCS
Remote Model: YKR-M/003E
Thanks. Looking forward to your reverse-engineering/analysis of your capture data so I can add your missing features.
Btw, How can I select Electra A/C when controlling it through Home Assistant using MQTT?
Select ELECTRA on the HTML page, and the device (via MQTT retain) will remember it even beyond reboots.
via MQTT-only, read: https://github.com/crankyoldgit/IRremoteESP8266/blob/master/examples/IRMQTTServer/IRMQTTServer.ino#L182-L189
e.g. send ELECTRA to the MQTT topic ir_server/ac/cmnd/protocol etc.
Again, it only needs to be done once.
[Edit: fixed the link to the docs]
oh, ok, ty.
And last thing: How can I add my temperature sensor to it so it will show up correctly and know the room temp? (my temperature sensor is already connected and working in home assistant).
You will have to add the code to IRMQTTServer yourself for that if you want to do it on the same device.
Or use another device that reports the temp sensor results to where ever you've told HA's MQTT climate to look for it. e.g. https://www.home-assistant.io/integrations/climate.mqtt/#current_temperature_topic
FYI, all of that is out of scope for this library/support channel.
e.g. https://github.com/crankyoldgit/IRremoteESP8266/wiki/Frequently-Asked-Questions#i-want-to-change-the-example-code-to-make-it-do-something-different-but-i-dont-know-how-please-help-me
and it's really a Home Assistant config issue. ;-)
My temperature sensor is connected to my RPI's GPIO pins with the onewire protocol.
Then have it report it to MQTT to the topic you've setup in that HA doc I linked.
ok, I'll try that
Hmm, MQTT commands are doing nothing when I try to turn on the A/C (for example).
Here is the MQTT command wemos_d1_mini_ac_remote/ac/cmnd/ELECTRA_AC/power
The ESP is connected to my RPI
Sorry, I gave you the wrong link to the docs earlier. See: https://github.com/crankyoldgit/IRremoteESP8266/blob/master/examples/IRMQTTServer/IRMQTTServer.ino#L182-L189
e.g. Try sending on to wemos_d1_mini_ac_remote/ac/cmnd/power
still nothing
What does the ac page on the ESP running IRMQTTServer say?

And what is the "Climate Information" section say on the "info" tab/page?

According to that, the MQTT topic you need to send to is homeassistant/ac/cmnd/power and send it with a payload of on
ok, its working.
But can I change that topic?
and why doesn't it work if I add ELECTRA_AC?
But can I change that topic?
You set it in your initial setup. To reset it, you need to reset the config on the ESP device. e.g. https://github.com/crankyoldgit/IRremoteESP8266/blob/master/examples/IRMQTTServer/IRMQTTServer.ino#L58-L59
* If you need to reset the WiFi and saved settings to go back to "First Boot",
* visit: http://<your_esp's_ip_address>/reset
It will use the MQTT prefix. If it isn't set, it will use the hostname as the start of the MQTT topic.
and why doesn't it work if I add
ELECTRA_AC?
Because that isn't how MQTT topics work. It's only listening on certain ones. You just used a different topic that it isn't programmed to listen too.
and how do I update it? Do I need to create a bin file?
Go to the reset page (as I listed, or under the "Admin" page, "Wipe Settings".) It will take the ESP device back to first boot state of this software. i.e. It will give you the wifi & settings menu when the ESP access as a wifi access point. You can configure it there, and there only. You don't need to upload a new bin file.
Ok, I just wanted to know how to upgrade it OTA
Is this the line that sets the prefix?
char MqttPrefix[kHostnameLength + 1] = "";
No. It is set in the first boot wifi menu page.
oh, ok.
Btw, no one from the Home Assistant Discord server wants to help me integrate the temp sensor with the climate integration.
I had to ask the same question 4 times to get an answer (I waited the whole day) and the answer was that no one added that option to a mqtt climate integration.
Read the docs, and try it yourself. Also try posting on their (HA) forums.
They told me to publish the temp sensor to mqtt
https://www.home-assistant.io/docs/mqtt/service/
Do you have a clue on how to do it?
I managed to add it to the config and send the packets but I have no clue on how to make it automatic
Here is the line I added: current_temperature_topic: homeassistant/ac/stat/temp and when I am sending a number to it, it updates the current temperature.
got it to work with this automation:
```trigger:
That won't do what you want. You are using the stat topic of the temp command (cmnd). You need a different topic for the ambient temperature and you need to add it to your HA climate configuration.
This is beyond the scope for this issue/forum/library
its working fine. (I am not sending the command to the ESP)
I'll record the A/C commands tomorrow because its late rn.
@ShonP40 Friendly ping for that data/analysis.
Sorry for the delay.
I wasn't home yesterday.
A/C on - Cooling mode - 24° - Fan speed set to 1 - Light set to on - flaps off - turbo off - clean off
```Protocol : ELECTRA_AC
Code : 0xC387E0006000200000200005CF (104 Bits)
Mesg Desc.: Power: On, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), Swing(V): Off, Swing(H): Off
uint16_t rawData[211] = {9190, 4448, 666, 1604, 642, 1610, 666, 510, 666, 510, 720, 514, 640, 508, 664, 1608, 640, 1622, 692, 1606, 666, 1610, 692, 1610, 666, 514, 692, 508, 666, 516, 686, 512, 640, 1648, 684, 514, 694, 532, 666, 534, 666, 534, 666, 532, 666, 1634, 614, 1636, 666, 1646, 640, 540, 666, 534, 640, 540, 666, 534, 640, 540, 666, 536, 638, 540, 666, 546, 640, 538, 666, 534, 638, 542, 664, 536, 638, 540, 664, 1632, 640, 1640, 692, 546, 664, 536, 664, 534, 666, 536, 664, 534, 666, 536, 664, 536, 664, 536, 666, 546, 664, 536, 664, 536, 664, 534, 664, 536, 666, 534, 666, 1636, 638, 536, 638, 552, 664, 536, 638, 540, 664, 536, 638, 540, 664, 536, 638, 542, 664, 538, 638, 550, 664, 536, 638, 540, 664, 536, 640, 542, 662, 562, 612, 542, 664, 538, 636, 554, 662, 560, 612, 544, 662, 562, 612, 542, 662, 562, 612, 1642, 664, 562, 664, 572, 638, 536, 664, 538, 662, 538, 662, 562, 638, 562, 638, 564, 638, 538, 662, 572, 638, 1638, 610, 566, 636, 1638, 636, 540, 662, 562, 664, 538, 662, 540, 660, 546, 662, 1636, 610, 1638, 664, 1636, 636, 1642, 662, 562, 664, 562, 638, 1638, 610, 1642, 742}; // ELECTRA_AC
uint8_t state[13] = {0xC3, 0x87, 0xE0, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x05, 0xCF};
**A/C off - Cooling mode - 24° - Fan speed set to 1 - Light set to on - flaps off - turbo off - clean off**
```Protocol : ELECTRA_AC
Code : 0xC387E0006000200000000005AF (104 Bits)
Mesg Desc.: Power: Off, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), Swing(V): Off, Swing(H): Off
uint16_t rawData[211] = {9170, 4466, 638, 1634, 638, 1636, 692, 508, 692, 508, 664, 536, 612, 540, 666, 1612, 638, 1648, 690, 1636, 638, 1632, 636, 1640, 718, 510, 664, 536, 666, 536, 664, 534, 670, 1642, 638, 536, 636, 542, 664, 536, 646, 532, 664, 536, 638, 1638, 690, 1610, 664, 1622, 664, 536, 690, 538, 662, 536, 664, 536, 664, 536, 664, 538, 664, 538, 662, 546, 664, 536, 662, 536, 664, 536, 664, 536, 662, 536, 662, 1638, 610, 1642, 662, 548, 690, 534, 664, 538, 660, 538, 660, 538, 664, 538, 660, 540, 662, 538, 662, 550, 662, 538, 660, 540, 662, 538, 660, 562, 640, 560, 640, 1640, 608, 544, 662, 548, 638, 542, 664, 538, 632, 544, 664, 540, 634, 544, 658, 542, 610, 592, 642, 548, 634, 544, 636, 566, 608, 572, 662, 540, 606, 570, 662, 540, 634, 568, 612, 598, 614, 568, 612, 586, 588, 570, 662, 540, 608, 594, 612, 568, 634, 568, 638, 552, 608, 572, 656, 566, 612, 568, 636, 564, 612, 546, 652, 570, 610, 570, 612, 596, 606, 1672, 610, 586, 664, 1664, 558, 594, 612, 566, 632, 570, 626, 576, 584, 582, 658, 1660, 584, 1692, 638, 1688, 584, 1688, 586, 590, 638, 1664, 586, 592, 612, 1690, 718}; // ELECTRA_AC
uint8_t state[13] = {0xC3, 0x87, 0xE0, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, 0xAF};
A/C on - Cooling mode - 24° - Fan speed set to 1 - Light set to off - flaps off - turbo off - clean off
```Protocol : ELECTRA_AC
Code : 0xC387E0006000200000200015DF (104 Bits)
Mesg Desc.: Power: On, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), Swing(V): Off, Swing(H): Off
uint16_t rawData[211] = {9192, 4448, 638, 1634, 640, 1610, 692, 508, 718, 508, 666, 536, 690, 508, 666, 1636, 638, 1622, 690, 1608, 638, 1638, 690, 1612, 638, 542, 678, 522, 664, 514, 666, 534, 638, 1650, 664, 536, 690, 534, 664, 536, 664, 534, 672, 528, 666, 1634, 610, 1640, 664, 1648, 638, 540, 692, 508, 666, 514, 664, 536, 640, 540, 664, 538, 638, 576, 640, 534, 664, 536, 664, 536, 664, 536, 664, 536, 664, 536, 662, 1638, 610, 1642, 662, 548, 690, 534, 664, 536, 664, 536, 672, 528, 690, 512, 664, 538, 662, 538, 664, 546, 664, 538, 662, 536, 662, 536, 664, 538, 662, 536, 660, 1642, 610, 544, 662, 550, 634, 542, 664, 538, 636, 544, 660, 540, 636, 544, 662, 538, 610, 570, 650, 560, 636, 542, 636, 564, 636, 564, 638, 542, 634, 546, 636, 588, 614, 562, 586, 554, 636, 544, 608, 594, 634, 564, 588, 572, 660, 538, 632, 1668, 636, 550, 654, 576, 656, 566, 612, 584, 640, 562, 638, 562, 640, 540, 634, 590, 612, 590, 634, 574, 612, 1666, 582, 568, 634, 1688, 584, 590, 638, 1664, 608, 570, 612, 590, 610, 578, 612, 1686, 586, 1688, 664, 1642, 618, 1652, 608, 1692, 664, 540, 660, 1642, 634, 1664, 716}; // ELECTRA_AC
uint8_t state[13] = {0xC3, 0x87, 0xE0, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x15, 0xDF};
**A/C off - Cooling mode - 24° - Fan speed set to 1 - Light set to off - flaps off - turbo off - clean off**
```Protocol : ELECTRA_AC
Code : 0xC387E0006000200000000005AF (104 Bits)
Mesg Desc.: Power: Off, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), Swing(V): Off, Swing(H): Off
uint16_t rawData[211] = {9198, 4440, 674, 1600, 648, 1604, 700, 500, 728, 500, 700, 500, 704, 496, 700, 1602, 646, 1614, 698, 1600, 674, 1602, 702, 1600, 698, 480, 702, 500, 674, 506, 698, 502, 690, 1600, 724, 500, 724, 476, 726, 476, 722, 476, 724, 474, 700, 1602, 696, 1576, 698, 1590, 750, 474, 724, 476, 726, 474, 724, 478, 724, 476, 724, 478, 724, 478, 718, 490, 726, 476, 722, 476, 724, 476, 724, 478, 722, 476, 698, 1602, 694, 1580, 696, 490, 698, 502, 748, 478, 698, 502, 696, 504, 700, 500, 722, 480, 696, 504, 722, 488, 698, 502, 724, 476, 698, 502, 698, 504, 696, 502, 696, 1604, 644, 510, 696, 512, 696, 484, 698, 504, 670, 508, 696, 504, 670, 510, 720, 480, 696, 486, 696, 514, 670, 508, 696, 504, 694, 484, 712, 490, 668, 510, 696, 532, 648, 506, 696, 516, 668, 510, 716, 482, 670, 510, 696, 504, 670, 508, 696, 508, 668, 512, 694, 514, 670, 510, 696, 504, 668, 510, 696, 532, 642, 510, 696, 506, 668, 512, 694, 514, 668, 1610, 692, 504, 720, 1608, 642, 512, 694, 532, 642, 512, 694, 508, 666, 520, 694, 1604, 666, 1610, 718, 1606, 668, 1606, 668, 506, 694, 1608, 668, 512, 692, 1608, 798}; // ELECTRA_AC
uint8_t state[13] = {0xC3, 0x87, 0xE0, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, 0xAF};
A/C on - Cooling mode - 24° - Fan speed set to 1 - Light set to on - flaps off - turbo on - clean off
```Protocol : ELECTRA_AC
Code : 0xC387E00060402000002000050F (104 Bits)
Mesg Desc.: Power: On, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), Swing(V): Off, Swing(H): Off
uint16_t rawData[211] = {9190, 4448, 666, 1604, 640, 1610, 718, 534, 666, 534, 668, 508, 692, 508, 690, 1610, 640, 1620, 666, 1610, 718, 1606, 668, 1606, 666, 512, 692, 510, 716, 534, 666, 510, 676, 1634, 630, 526, 664, 534, 640, 564, 640, 538, 638, 540, 664, 1632, 638, 1638, 692, 1646, 638, 536, 638, 542, 664, 536, 638, 542, 664, 536, 638, 540, 666, 536, 638, 552, 664, 534, 638, 540, 666, 536, 640, 540, 666, 534, 640, 1636, 666, 1636, 640, 550, 666, 560, 614, 542, 664, 536, 638, 562, 644, 536, 638, 540, 666, 1634, 640, 548, 664, 534, 692, 560, 640, 536, 664, 536, 664, 536, 662, 1638, 612, 542, 664, 546, 640, 540, 664, 536, 638, 542, 664, 534, 640, 542, 664, 538, 664, 538, 638, 546, 666, 560, 638, 536, 664, 536, 664, 536, 664, 562, 640, 538, 662, 562, 640, 548, 662, 560, 638, 562, 638, 538, 662, 562, 638, 538, 662, 1638, 612, 544, 662, 572, 612, 542, 664, 538, 636, 542, 664, 562, 612, 568, 638, 540, 636, 568, 638, 548, 636, 1640, 664, 536, 688, 1638, 610, 568, 638, 562, 612, 568, 638, 564, 610, 576, 638, 1634, 638, 1638, 690, 1636, 636, 1636, 636, 566, 638, 562, 664, 564, 636, 566, 690}; // ELECTRA_AC
uint8_t state[13] = {0xC3, 0x87, 0xE0, 0x00, 0x60, 0x40, 0x20, 0x00, 0x00, 0x20, 0x00, 0x05, 0x0F};
**A/C on - Cooling mode - 24° - Fan speed set to 1 - Light set to on - flaps off - turbo off - clean off**
```Protocol : ELECTRA_AC
Code : 0xC387E0006000200000200008D2 (104 Bits)
Mesg Desc.: Power: On, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), Swing(V): Off, Swing(H): Off
uint16_t rawData[213] = {9222, 4418, 696, 1578, 670, 1582, 696, 480, 696, 480, 724, 478, 748, 476, 722, 1578, 696, 1564, 722, 1576, 696, 1578, 724, 1578, 698, 482, 722, 476, 698, 482, 724, 476, 696, 1592, 724, 476, 750, 478, 722, 478, 722, 478, 722, 476, 722, 1580, 670, 1582, 720, 1590, 696, 482, 724, 478, 696, 484, 722, 478, 696, 484, 722, 480, 696, 484, 722, 488, 696, 484, 722, 478, 694, 484, 720, 480, 694, 484, 722, 1578, 722, 1608, 668, 494, 722, 478, 694, 484, 722, 478, 694, 486, 694, 506, 694, 486, 720, 482, 694, 496, 720, 480, 668, 510, 720, 480, 694, 484, 696, 504, 668, 1612, 718, 484, 720, 516, 696, 504, 694, 506, 694, 506, 696, 506, 694, 506, 694, 508, 694, 508, 692, 518, 694, 506, 694, 506, 694, 506, 692, 508, 692, 508, 692, 510, 692, 508, 692, 518, 692, 508, 692, 508, 692, 508, 692, 510, 690, 506, 666, 1614, 690, 510, 690, 520, 638, 512, 664, 512, 664, 512, 690, 534, 692, 510, 690, 512, 690, 510, 690, 520, 690, 510, 690, 510, 688, 510, 688, 1612, 638, 516, 688, 512, 662, 518, 690, 522, 664, 514, 688, 1610, 662, 514, 666, 558, 690, 1614, 608, 568, 662, 1610, 662, 1618, 766, 42516, 122}; // ELECTRA_AC
uint8_t state[13] = {0xC3, 0x87, 0xE0, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x08, 0xD2};
A/C on - Cooling mode - 24° - Fan speed set to 1 - Light set to on - flaps off - turbo off - clean off
```Protocol : ELECTRA_AC
Code : 0xC387E0006000200000200019E3 (104 Bits)
Mesg Desc.: Power: On, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), Swing(V): Off, Swing(H): Off
uint16_t rawData[211] = {9162, 4476, 662, 1610, 610, 1642, 662, 536, 718, 512, 666, 532, 690, 510, 662, 1640, 610, 1650, 660, 1640, 634, 1636, 610, 1642, 686, 540, 664, 538, 662, 538, 660, 538, 664, 1652, 608, 564, 612, 544, 662, 540, 634, 566, 640, 560, 614, 1642, 660, 1640, 634, 1654, 662, 538, 660, 588, 638, 562, 612, 568, 660, 562, 638, 564, 638, 562, 638, 572, 638, 562, 638, 562, 612, 582, 644, 562, 638, 560, 638, 1662, 566, 1686, 638, 572, 666, 560, 612, 588, 638, 562, 638, 560, 638, 564, 630, 572, 612, 588, 612, 598, 638, 562, 638, 560, 638, 562, 640, 560, 638, 560, 638, 1664, 586, 568, 612, 598, 614, 566, 638, 562, 598, 582, 612, 588, 586, 594, 612, 590, 586, 594, 640, 572, 584, 594, 610, 588, 586, 594, 612, 588, 586, 594, 612, 590, 586, 594, 612, 600, 608, 570, 638, 562, 610, 570, 636, 564, 610, 566, 612, 1688, 586, 592, 610, 600, 636, 590, 636, 564, 560, 594, 610, 590, 612, 568, 612, 590, 586, 594, 636, 572, 584, 1694, 610, 588, 664, 560, 612, 1690, 558, 1694, 636, 562, 640, 588, 612, 596, 612, 1688, 586, 1666, 638, 562, 638, 588, 610, 588, 612, 1688, 558, 1692, 610, 1694, 716}; // ELECTRA_AC
uint8_t state[13] = {0xC3, 0x87, 0xE0, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x19, 0xE3};
**A/C on - Cooling mode - 24° - Fan speed set to 1 - Light set to on - flaps off - turbo off - clean on**
```Protocol : ELECTRA_AC
Code : 0xC387E0006000200000240019E7 (104 Bits)
Mesg Desc.: Power: On, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), Swing(V): Off, Swing(H): Off
uint16_t rawData[213] = {9192, 4448, 668, 1606, 642, 1610, 694, 504, 722, 506, 668, 616, 642, 510, 720, 1578, 668, 1620, 718, 1606, 668, 1602, 668, 1610, 744, 482, 692, 506, 694, 508, 692, 506, 690, 1622, 664, 508, 644, 556, 666, 534, 666, 512, 666, 534, 638, 1640, 690, 1612, 662, 1624, 664, 536, 698, 528, 664, 536, 664, 536, 666, 536, 664, 536, 664, 536, 664, 548, 664, 534, 664, 536, 690, 508, 664, 538, 664, 536, 662, 1638, 610, 1642, 664, 546, 690, 536, 664, 536, 664, 536, 664, 536, 664, 538, 664, 538, 662, 540, 636, 574, 662, 536, 664, 536, 662, 538, 664, 536, 664, 536, 662, 1640, 610, 544, 610, 550, 636, 540, 636, 540, 662, 538, 662, 566, 662, 538, 636, 588, 638, 538, 636, 576, 660, 538, 660, 540, 634, 564, 636, 564, 634, 566, 636, 566, 636, 564, 636, 574, 662, 540, 636, 562, 636, 1666, 582, 570, 636, 564, 608, 1670, 636, 566, 660, 576, 636, 562, 636, 564, 636, 566, 634, 506, 774, 508, 612, 508, 694, 566, 634, 574, 636, 1666, 582, 594, 610, 564, 608, 1668, 662, 1668, 582, 568, 608, 570, 608, 578, 634, 1664, 608, 1668, 634, 1666, 608, 572, 632, 564, 610, 1666, 636, 1666, 606, 1672, 712, 47880, 122}; // ELECTRA_AC
uint8_t state[13] = {0xC3, 0x87, 0xE0, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00, 0x24, 0x00, 0x19, 0xE7};
My A/C doesn't have the other options: Quiet, Econo, Filter and Beep.
Everything else except Light, Turbo and Clean works as intended.
I've managed to work out Clean & Light, but your Turbo data has two bytes (other than the last byte which is the checksum) changing. You are going to need to be sure why & when they change before I'll add them. Or be confident that they always change at the same time to the same values.
e.g. state[5] & state[11] in https://github.com/crankyoldgit/IRremoteESP8266/issues/1033#issuecomment-581132529
Typically Turbo is a single binary (bit) setting that changes. As your data seems to indicate it isn't that simple, you need to be triple sure.
Please download & test the following branch: https://github.com/crankyoldgit/IRremoteESP8266/tree/Electra_improvements for the new Light & Clean support for Electra.
When you've fully understood Turbo, let me know & I'll add it too.
Ty, I’ll be able to test it in ~2 hours.
Clean mode works but I still can't toggle the light
I _thought_ 'light' was being controlled by the first nibble of the 2nd last byte of the state code. i.e. state[11].
e.g. 0x1n for on, and0x0n for off in state[11].
But re-reading your own descriptions of the settings that now seems incorrect.
Can you please recompile IRrecvDumpV2 and capture and annotate new data concentrating on the light setting please? Or preferably & better still, you can isolate which bits/bytes control the light function and tell me.
Actually, the more I look at it, the more I need you to explain the behaviour of the second last byte of the state code. i.e. state[11]
You need to be able to explain what that does fully in all cases/values. If it changes, you need to understand why it changes. i.e. What settings affect it and how,
Ok, I’ll try to do it tomorrow.
The problem is that my ESP in not in an easy accessible place.
And every time I need to re-flash it, I need to bring a ladder to get it.
Thanks, and appreciated. Can I suggest buying a second ESP and IR receiver module? Should cost less than $5USD, and has less fall risk than ladders. ;-)
Well, if I do order one rn, I’ll receive it in a month, and I don’t need ESP’s lying around.
Sorry for the delay @crankyoldgit.
Here are the light commands:
A/C on - Cooling mode - 24° - Fan speed set to 1 - Light set to on - flaps off - turbo off - clean off
```Protocol : ELECTRA_AC
Code : 0xC387E0006000200000200015DF (104 Bits)
Mesg Desc.: Power: On, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), Swing(V): Off, Swing(H): Off, Light: On, Clean: Off
uint16_t rawData[211] = {9188, 4450, 666, 1606, 640, 1610, 666, 510, 668, 510, 692, 508, 718, 506, 692, 1608, 640, 1620, 694, 1606, 666, 1610, 692, 1608, 666, 514, 692, 526, 666, 514, 692, 508, 664, 1624, 692, 510, 710, 514, 668, 532, 666, 534, 666, 532, 666, 1634, 614, 1638, 666, 1646, 642, 536, 668, 534, 640, 538, 666, 534, 640, 540, 668, 534, 640, 540, 666, 544, 640, 538, 666, 534, 640, 540, 666, 536, 638, 538, 666, 1632, 640, 1640, 692, 544, 666, 534, 666, 534, 666, 534, 666, 534, 666, 536, 664, 538, 664, 536, 666, 544, 666, 534, 664, 534, 666, 534, 666, 534, 666, 534, 666, 1638, 638, 536, 640, 550, 666, 536, 638, 540, 666, 536, 638, 542, 664, 536, 638, 542, 664, 536, 638, 552, 664, 536, 638, 540, 664, 536, 638, 540, 666, 536, 638, 542, 664, 538, 638, 550, 666, 536, 638, 542, 664, 536, 636, 542, 664, 534, 638, 1642, 662, 538, 690, 546, 664, 536, 664, 536, 666, 536, 664, 536, 664, 536, 664, 538, 662, 538, 664, 546, 662, 1638, 610, 542, 662, 1636, 636, 536, 664, 1638, 638, 542, 664, 566, 610, 550, 664, 1632, 638, 1638, 690, 1636, 638, 1634, 636, 1640, 690, 536, 664, 1636, 638, 1638, 770}; // ELECTRA_AC
uint8_t state[13] = {0xC3, 0x87, 0xE0, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x15, 0xDF};
A/C on - Cooling mode - 24° - Fan speed set to 1 - Light set to off - flaps off - turbo off - clean off
```Protocol : ELECTRA_AC
Code : 0xC387E0006000200000200015DF (104 Bits)
Mesg Desc.: Power: On, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), Swing(V): Off, Swing(H): Off, Light: On, Clean: Off
uint16_t rawData[211] = {9190, 4446, 668, 1604, 640, 1610, 666, 508, 668, 508, 694, 508, 720, 506, 692, 1608, 640, 1620, 692, 1606, 666, 1608, 694, 1608, 666, 512, 694, 508, 666, 512, 694, 506, 666, 1624, 678, 522, 692, 532, 640, 534, 666, 536, 664, 532, 614, 1636, 640, 1636, 692, 1646, 614, 538, 666, 534, 640, 538, 666, 534, 640, 540, 666, 534, 640, 540, 666, 544, 640, 540, 666, 534, 640, 540, 666, 534, 640, 538, 666, 1632, 640, 1638, 694, 544, 666, 534, 664, 534, 666, 534, 666, 534, 666, 534, 666, 536, 666, 536, 666, 544, 666, 534, 666, 534, 666, 534, 666, 534, 666, 534, 664, 1636, 666, 534, 638, 544, 666, 534, 666, 534, 612, 540, 640, 540, 640, 542, 664, 536, 640, 540, 666, 546, 640, 540, 664, 536, 638, 540, 666, 536, 638, 542, 664, 536, 638, 542, 664, 546, 640, 540, 664, 536, 638, 540, 666, 538, 636, 542, 662, 1636, 638, 540, 664, 546, 690, 534, 666, 536, 664, 538, 662, 566, 636, 536, 664, 566, 636, 538, 664, 544, 664, 1640, 610, 540, 662, 1636, 638, 564, 636, 1640, 636, 542, 662, 538, 638, 550, 664, 1632, 638, 1640, 688, 1638, 636, 1634, 638, 1642, 690, 536, 664, 1638, 638, 1638, 768}; // ELECTRA_AC
uint8_t state[13] = {0xC3, 0x87, 0xE0, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x15, 0xDF};
I've noticed that my A/C is using the same command to turn on or off the light
Please download & test the following updated branch: https://github.com/crankyoldgit/IRremoteESP8266/tree/Electra_improvements for the new Light (toggle) support for Electra.
Ok, ty, I will download and test it today
Its still not toggling the light (the A/C beeps and nothing happens).
I re-recorded the Turbo mode commands
A/C on - Cooling mode - 24° - Fan speed set to 1 - flaps off - turbo off - clean off
```Protocol : ELECTRA_AC
Code : 0xC387E0006000200000200008D2 (104 Bits)
Mesg Desc.: Power: On, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), Swing(V): Off, Swing(H): Off, Light: -, Clean: Off
uint16_t rawData[211] = {9192, 4446, 668, 1602, 644, 1608, 668, 506, 670, 508, 694, 506, 722, 504, 694, 1608, 642, 1618, 694, 1604, 668, 1606, 696, 1608, 668, 510, 694, 506, 668, 512, 692, 508, 646, 1644, 690, 506, 696, 530, 670, 530, 670, 532, 668, 530, 668, 1632, 616, 1634, 668, 1644, 642, 536, 668, 532, 646, 534, 668, 532, 642, 538, 670, 532, 642, 538, 668, 542, 642, 536, 668, 532, 642, 538, 668, 532, 642, 536, 668, 1630, 642, 1638, 694, 542, 668, 532, 668, 532, 668, 532, 668, 532, 668, 532, 668, 534, 668, 534, 668, 542, 668, 532, 668, 532, 668, 532, 668, 532, 668, 532, 668, 1634, 642, 534, 642, 548, 666, 532, 642, 538, 668, 534, 640, 538, 668, 534, 640, 540, 666, 534, 640, 550, 666, 534, 640, 538, 692, 558, 666, 534, 666, 534, 668, 534, 666, 534, 666, 544, 666, 534, 666, 534, 666, 534, 666, 534, 666, 532, 666, 1638, 638, 536, 640, 550, 666, 534, 638, 540, 666, 534, 640, 540, 666, 536, 638, 540, 666, 536, 640, 550, 666, 534, 638, 540, 664, 534, 638, 1640, 664, 536, 690, 536, 664, 536, 664, 546, 666, 532, 664, 1636, 612, 540, 664, 536, 638, 1640, 664, 534, 690, 1638, 612, 1642, 742}; // ELECTRA_AC
uint8_t state[13] = {0xC3, 0x87, 0xE0, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x08, 0xD2};
A/C on - Cooling mode - 24° - Fan speed set to 1 - flaps off - turbo on - clean off
```Protocol : ELECTRA_AC
Code : 0xC387E000604020000020000812 (104 Bits)
Mesg Desc.: Power: On, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), Swing(V): Off, Swing(H): Off, Light: -, Clean: Off
uint16_t rawData[211] = {9188, 4442, 718, 1608, 692, 1608, 694, 506, 640, 512, 666, 514, 666, 512, 692, 1606, 666, 1620, 720, 1606, 666, 1604, 666, 1612, 718, 508, 690, 510, 684, 516, 666, 534, 668, 1644, 640, 532, 646, 532, 666, 534, 640, 540, 666, 534, 640, 1636, 666, 1634, 640, 1648, 614, 538, 640, 540, 640, 540, 666, 534, 640, 540, 666, 536, 640, 542, 664, 546, 638, 540, 666, 534, 638, 540, 666, 536, 638, 540, 664, 1632, 640, 1638, 692, 546, 664, 534, 666, 534, 666, 534, 664, 536, 664, 536, 666, 534, 664, 1638, 638, 548, 638, 540, 664, 536, 638, 542, 664, 538, 638, 540, 664, 1634, 638, 540, 664, 570, 666, 538, 662, 538, 662, 538, 662, 560, 666, 560, 588, 562, 612, 562, 586, 576, 614, 564, 614, 566, 640, 560, 614, 566, 640, 560, 614, 566, 640, 562, 612, 576, 642, 560, 614, 568, 638, 560, 614, 566, 640, 558, 614, 1642, 662, 562, 666, 570, 640, 560, 640, 560, 640, 560, 640, 560, 640, 560, 640, 562, 640, 562, 640, 572, 638, 560, 638, 562, 638, 562, 620, 1658, 608, 566, 618, 582, 612, 568, 614, 598, 588, 590, 614, 1660, 614, 586, 614, 586, 640, 1666, 582, 592, 614, 588, 586, 594, 692}; // ELECTRA_AC
uint8_t state[13] = {0xC3, 0x87, 0xE0, 0x00, 0x60, 0x40, 0x20, 0x00, 0x00, 0x20, 0x00, 0x08, 0x12};
- Its still not toggling the light (the A/C beeps and nothing happens).
Then you are going to need to do more analysis on exactly what changes, and why between the "changing the light" messages and other "normal" messages. e.g. A temp change.
- I re-recorded the Turbo mode commands
Thanks.
_Differences marked in bold._
turbo off:
_uint8_t state[13] = {0xC3, 0x87, 0xE0, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x08, 0xD2};_
turbo on:
_uint8_t state[13] = {0xC3, 0x87, 0xE0, 0x00, 0x60, 0x40, 0x20, 0x00, 0x00, 0x20, 0x00, 0x08, 0x12};_
The last byte is the checksum, so we can ignore that.
That leaves state[5] controlling turbo. Specifically the _5th_ Least Significant Bit(LSB) of state[5].
I'll code something up based on that soon.
Edit:
Sigh. Bit math fail! That should have been the _7th_ LSB.
@ShonP40 Turbo support added. Please redownload and test.
Ok, I’ll do it today
1. I re-recorded the light command:
A/C on - Cooling mode - 24° - Fan speed set to 1 - flaps off - turbo off - clean off - pressed light
```Protocol : ELECTRA_AC
Code : 0xC387E0006000200000200015DF (104 Bits)
Mesg Desc.: Power: On, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), Swing(V): Off, Swing(H): Off, Light: Toggle, Clean: Off, Turbo: Off
uint16_t rawData[211] = {9192, 4446, 670, 1604, 642, 1608, 696, 504, 720, 506, 696, 506, 694, 504, 694, 1606, 642, 1618, 694, 1606, 668, 1608, 694, 1608, 668, 510, 694, 506, 668, 512, 720, 506, 620, 1642, 718, 506, 668, 532, 668, 532, 668, 532, 668, 530, 670, 1632, 616, 1636, 642, 1646, 694, 532, 668, 532, 668, 532, 668, 532, 668, 532, 668, 534, 668, 534, 668, 542, 668, 532, 668, 532, 668, 532, 668, 532, 668, 532, 668, 1632, 642, 1632, 640, 546, 668, 530, 694, 532, 668, 532, 668, 532, 668, 532, 668, 534, 668, 534, 668, 544, 668, 532, 668, 532, 642, 532, 666, 534, 668, 530, 614, 1638, 640, 536, 642, 546, 668, 532, 694, 532, 668, 532, 668, 534, 666, 534, 666, 534, 668, 534, 666, 544, 666, 532, 666, 534, 666, 534, 666, 534, 666, 534, 666, 534, 666, 536, 666, 544, 666, 534, 666, 534, 666, 534, 666, 534, 666, 534, 666, 1638, 612, 540, 666, 546, 640, 538, 666, 534, 640, 538, 666, 536, 638, 540, 666, 536, 640, 542, 664, 544, 638, 1638, 690, 534, 612, 1638, 640, 536, 638, 1642, 688, 536, 664, 536, 664, 544, 664, 1634, 640, 1630, 640, 1638, 690, 1634, 638, 1634, 640, 536, 664, 1636, 638, 1642, 744}; // ELECTRA_AC
uint8_t state[13] = {0xC3, 0x87, 0xE0, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x15, 0xDF};
**2. Turbo is not working so I re-recorded its commands again**
A/C on - Cooling mode - 24° - Fan speed set to 1 - flaps off - turbo on - clean off
```Protocol : ELECTRA_AC
Code : 0xC387E000604020000020000812 (104 Bits)
Mesg Desc.: Power: On, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), Swing(V): Off, Swing(H): Off, Light: -, Clean: Off, Turbo: Off
uint16_t rawData[211] = {9190, 4448, 668, 1606, 642, 1610, 694, 506, 720, 506, 694, 506, 694, 506, 692, 1608, 640, 1620, 692, 1606, 666, 1608, 694, 1608, 666, 512, 692, 508, 660, 520, 692, 508, 648, 1640, 690, 510, 694, 532, 666, 534, 668, 532, 668, 532, 666, 1634, 614, 1636, 666, 1646, 640, 538, 666, 534, 640, 540, 666, 534, 640, 540, 666, 536, 640, 540, 666, 546, 640, 538, 666, 534, 640, 540, 666, 536, 638, 540, 666, 1630, 640, 1658, 692, 546, 666, 534, 664, 536, 664, 536, 664, 536, 664, 536, 664, 536, 664, 1638, 640, 570, 614, 564, 640, 538, 636, 566, 640, 560, 614, 564, 640, 1634, 638, 564, 640, 570, 666, 560, 640, 560, 640, 560, 640, 560, 640, 562, 640, 560, 640, 562, 640, 570, 640, 560, 640, 560, 640, 560, 640, 560, 640, 560, 640, 560, 640, 560, 640, 572, 640, 560, 638, 560, 640, 560, 640, 560, 640, 560, 640, 1640, 610, 566, 640, 570, 614, 566, 640, 560, 614, 566, 640, 562, 614, 566, 640, 584, 614, 568, 640, 570, 612, 568, 638, 562, 612, 564, 638, 1662, 610, 564, 640, 562, 664, 562, 636, 574, 638, 560, 638, 1640, 610, 566, 638, 562, 610, 1644, 660, 562, 658, 568, 622, 580, 688}; // ELECTRA_AC
uint8_t state[13] = {0xC3, 0x87, 0xE0, 0x00, 0x60, 0x40, 0x20, 0x00, 0x00, 0x20, 0x00, 0x08, 0x12};
A/C on - Cooling mode - 24° - Fan speed set to 1 - flaps off - turbo off - clean off
Protocol : ELECTRA_AC
Code : 0xC387E0006000200000200008D2 (104 Bits)
Mesg Desc.: Power: On, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), Swing(V): Off, Swing(H): Off, Light: -, Clean: Off, Turbo: Off
uint16_t rawData[211] = {9192, 4448, 666, 1606, 640, 1610, 666, 510, 666, 512, 664, 536, 692, 534, 666, 1636, 612, 1646, 692, 1608, 664, 1610, 692, 1610, 666, 514, 690, 510, 662, 516, 664, 534, 640, 1648, 692, 508, 716, 510, 690, 510, 664, 536, 666, 534, 670, 1652, 612, 1640, 664, 1646, 638, 540, 692, 508, 638, 540, 664, 536, 638, 540, 666, 536, 638, 542, 664, 546, 638, 540, 664, 536, 638, 542, 664, 538, 638, 540, 664, 1634, 636, 1642, 690, 546, 664, 536, 662, 536, 662, 538, 660, 540, 636, 542, 636, 538, 664, 538, 664, 546, 664, 536, 610, 540, 636, 542, 636, 540, 636, 562, 690, 1640, 608, 544, 664, 548, 636, 544, 662, 538, 610, 568, 664, 536, 636, 544, 662, 538, 636, 542, 662, 550, 636, 544, 662, 538, 636, 542, 658, 564, 614, 546, 634, 566, 632, 548, 662, 550, 620, 558, 636, 564, 636, 544, 662, 562, 614, 564, 638, 1638, 636, 542, 660, 550, 688, 562, 638, 538, 652, 548, 662, 562, 612, 590, 612, 562, 638, 542, 658, 552, 634, 564, 582, 572, 608, 578, 600, 1692, 612, 588, 664, 540, 636, 588, 638, 572, 636, 562, 636, 1642, 582, 594, 612, 586, 586, 1692, 612, 586, 638, 1666, 586, 1670, 712}; // ELECTRA_AC
uint8_t state[13] = {0xC3, 0x87, 0xE0, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x08, 0xD2};
Do I need to select another A/C model?
I've tried light and turbo with the Default model and with the model 6.
- Turbo is not working so I re-recorded its commands again
Okay, I utterly failed with my bit math for Turbo (See Edit: in https://github.com/crankyoldgit/IRremoteESP8266/issues/1033#issuecomment-583925240)
I've just pushed a fix for that, so please re-download and test etc.
Do I need to select another A/C model?
Nope. Electra doesn't (yet) have support for different models. It's all the same so far.
- I re-recorded the light command:
I'm not sure you get it. _You_ have to analyse and _isolate_ what has changed and be able to _predict/explain_ what should happen _(which bytes and bits change)_ when you set/toggle a feature.
You need to compare to previous known states to see what changes.
e.g.
IF Light is really a toggle switch, Messages 3 & 6 should be identical. If they are not, then it isn't a toggle. It's storing the information somewhere in the state[]. Isolate it!
Also, if it is a toggle Messages 1, 4, & 7 should be identical to each other. Same for Messages 2, 5, & 8.
Compare Messages 2 & 3 together. Describe/document/analyse what has changed between those states, because that's what controls the light setting. (See the _known & expected_ differences below. i.e. You can always ignore the last byte)
IF Light is not a toggle, Messages 3 & 6 will probably be different. Compare those two messages to see what changes.
In all cases, Messages 1 & 7, and Messages 2 & 8 should be identical, if not. We've got problems.
The _known & expected_ differences between those states are:
state[12] (i.e. the very last byte) will always change. You can ignore it. e.g. _uint8_t state[13] = {0xC3, 0x87, 0xE0, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x08, 0xD2};_state[9] (i.e. 4th last byte) will change with the Power setting. e.g. _uint8_t state[13] = {0xC3, 0x87, 0xE0, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x08, 0xD2};_ If you follow my example (and don't set clean) 0x20 means On, & 0x00 means Off.If anything other than state[9] and state[12] changes, it is some how involved with the light function.
When you've worked it out, get back to me with what you've worked out & the data.
P.S. You don't need to include the rawData line anymore.
Ok, ty.
I’ll do those things tomorrow or in 2 days.
1. Turbo is working!
2. Here are the commands you requested me to record (I really don't know that to look for in them. When you tell me to look at a specific state, nothing is different between the messages so idk how to find the one you meant):
1
```Protocol : ELECTRA_AC
Code : 0xC387E0006000200000000005AF (104 Bits)
Mesg Desc.: Power: Off, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), Swing(V): Off, Swing(H): Off, Light: -, Clean: Off, Turbo: Off
uint16_t rawData[211] = {9192, 4446, 668, 1606, 668, 1602, 694, 504, 720, 506, 722, 478, 696, 504, 694, 1606, 668, 1592, 694, 1606, 668, 1608, 694, 1606, 668, 510, 696, 506, 668, 510, 694, 506, 668, 1620, 694, 506, 720, 506, 694, 506, 692, 508, 694, 506, 694, 1606, 642, 1610, 694, 1618, 666, 512, 688, 512, 666, 512, 694, 508, 666, 512, 692, 510, 666, 512, 694, 518, 666, 512, 694, 506, 666, 512, 694, 528, 666, 510, 668, 1632, 666, 1612, 692, 544, 694, 508, 692, 506, 692, 508, 692, 508, 692, 510, 690, 510, 666, 536, 690, 520, 692, 506, 694, 506, 692, 508, 692, 590, 692, 534, 612, 1634, 690, 510, 636, 528, 690, 508, 638, 540, 692, 510, 662, 518, 666, 536, 638, 540, 688, 512, 640, 550, 664, 536, 638, 542, 664, 536, 638, 542, 664, 538, 638, 542, 664, 538, 636, 552, 664, 536, 636, 542, 690, 534, 638, 538, 662, 538, 662, 538, 610, 542, 636, 578, 614, 556, 648, 536, 636, 544, 660, 540, 636, 544, 662, 540, 636, 544, 662, 548, 610, 1688, 614, 562, 686, 1642, 608, 544, 662, 540, 636, 546, 660, 540, 634, 554, 660, 1636, 608, 1668, 686, 1638, 636, 1636, 610, 564, 636, 1666, 636, 542, 636, 1664, 742}; // ELECTRA_AC
uint8_t state[13] = {0xC3, 0x87, 0xE0, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, 0xAF};
2
```Protocol : ELECTRA_AC
Code : 0xC387E0006000200000200005CF (104 Bits)
Mesg Desc.: Power: On, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), Swing(V): Off, Swing(H): Off, Light: -, Clean: Off, Turbo: Off
uint16_t rawData[211] = {9192, 4446, 694, 1576, 668, 1582, 696, 482, 694, 480, 722, 478, 748, 478, 722, 1580, 670, 1590, 720, 1578, 696, 1580, 722, 1580, 696, 484, 722, 478, 696, 484, 724, 476, 696, 1592, 722, 476, 748, 478, 722, 478, 722, 478, 724, 474, 722, 1578, 670, 1582, 722, 1590, 696, 482, 724, 478, 696, 482, 722, 478, 696, 482, 724, 478, 696, 486, 722, 488, 698, 482, 722, 480, 696, 482, 722, 480, 694, 484, 720, 1578, 694, 1584, 746, 490, 722, 478, 722, 478, 722, 478, 720, 480, 720, 480, 722, 480, 722, 480, 720, 490, 720, 478, 722, 478, 722, 480, 720, 480, 720, 478, 720, 1582, 668, 506, 668, 520, 696, 506, 692, 488, 712, 512, 642, 512, 694, 508, 666, 512, 694, 506, 668, 522, 694, 506, 668, 512, 692, 508, 666, 512, 694, 506, 668, 514, 692, 508, 668, 524, 692, 508, 666, 512, 694, 508, 666, 514, 692, 506, 666, 1612, 692, 508, 718, 518, 692, 508, 692, 508, 690, 510, 690, 510, 692, 536, 664, 512, 690, 536, 666, 518, 690, 1612, 636, 514, 690, 1610, 662, 514, 688, 512, 716, 510, 690, 512, 688, 522, 688, 1610, 638, 1612, 690, 1610, 662, 1614, 690, 512, 716, 510, 688, 1612, 636, 1616, 770}; // ELECTRA_AC
uint8_t state[13] = {0xC3, 0x87, 0xE0, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x05, 0xCF};
3
```Protocol : ELECTRA_AC
Code : 0xC387E0006000200000200015DF (104 Bits)
Mesg Desc.: Power: On, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), Swing(V): Off, Swing(H): Off, Light: Toggle, Clean: Off, Turbo: Off
uint16_t rawData[211] = {9220, 4418, 696, 1574, 670, 1580, 696, 480, 696, 480, 724, 476, 748, 478, 720, 1580, 668, 1592, 722, 1576, 696, 1580, 724, 1576, 698, 482, 722, 478, 698, 484, 722, 476, 696, 1592, 722, 478, 748, 478, 722, 476, 724, 478, 722, 476, 722, 1580, 670, 1580, 722, 1590, 698, 482, 722, 478, 696, 482, 698, 504, 694, 484, 722, 478, 694, 486, 722, 488, 696, 484, 720, 478, 672, 508, 698, 502, 672, 506, 700, 1598, 672, 1606, 724, 512, 700, 500, 698, 500, 700, 504, 696, 502, 722, 480, 698, 504, 698, 506, 696, 514, 720, 478, 698, 502, 696, 504, 722, 478, 722, 478, 720, 1582, 694, 480, 670, 520, 696, 506, 690, 486, 718, 486, 668, 506, 696, 504, 718, 480, 696, 506, 642, 518, 666, 510, 666, 512, 690, 508, 718, 508, 692, 510, 688, 512, 690, 512, 662, 548, 664, 536, 664, 536, 664, 536, 664, 538, 662, 534, 666, 1640, 610, 542, 664, 546, 640, 540, 666, 534, 640, 538, 666, 534, 640, 538, 668, 534, 642, 538, 666, 542, 640, 1636, 694, 506, 718, 1610, 640, 512, 672, 1628, 664, 512, 688, 512, 690, 546, 662, 1638, 634, 1640, 636, 1664, 636, 1662, 638, 1664, 586, 564, 634, 1644, 664, 1668, 712}; // ELECTRA_AC
uint8_t state[13] = {0xC3, 0x87, 0xE0, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x15, 0xDF};
4
```Protocol : ELECTRA_AC
Code : 0xC387E0006000200000000005AF (104 Bits)
Mesg Desc.: Power: Off, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), Swing(V): Off, Swing(H): Off, Light: -, Clean: Off, Turbo: Off
uint16_t rawData[211] = {9202, 4436, 698, 1576, 698, 1578, 722, 476, 724, 476, 724, 476, 670, 480, 698, 1580, 696, 1590, 748, 1578, 696, 1574, 698, 1580, 750, 476, 724, 476, 724, 476, 724, 476, 724, 1588, 698, 476, 698, 482, 724, 476, 698, 482, 724, 476, 696, 1580, 724, 1576, 698, 1592, 722, 476, 750, 476, 724, 476, 724, 476, 724, 476, 724, 478, 724, 478, 724, 486, 724, 498, 672, 482, 722, 478, 698, 484, 722, 478, 696, 1580, 722, 1580, 696, 492, 722, 478, 698, 482, 724, 476, 696, 484, 722, 498, 696, 484, 722, 478, 696, 494, 722, 478, 698, 482, 722, 480, 696, 482, 724, 476, 696, 1584, 722, 478, 748, 490, 722, 478, 722, 478, 722, 478, 720, 478, 722, 478, 722, 478, 722, 478, 722, 490, 720, 480, 720, 480, 720, 480, 718, 482, 668, 534, 718, 480, 722, 480, 722, 490, 670, 528, 672, 528, 720, 480, 690, 512, 662, 538, 662, 538, 670, 532, 662, 548, 662, 538, 662, 536, 664, 538, 662, 538, 662, 538, 690, 512, 634, 566, 636, 546, 668, 1584, 634, 538, 662, 1616, 688, 538, 662, 538, 670, 560, 634, 540, 656, 554, 672, 1628, 628, 1640, 694, 1584, 686, 1640, 694, 478, 694, 1584, 720, 480, 746, 1582, 772}; // ELECTRA_AC
uint8_t state[13] = {0xC3, 0x87, 0xE0, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, 0xAF};
5
```Protocol : ELECTRA_AC
Code : 0xC387E0006000200000200005CF (104 Bits)
Mesg Desc.: Power: On, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), Swing(V): Off, Swing(H): Off, Light: -, Clean: Off, Turbo: Off
uint16_t rawData[211] = {9190, 4446, 668, 1604, 668, 1608, 694, 506, 694, 506, 694, 506, 642, 510, 666, 1610, 670, 1616, 720, 1604, 668, 1604, 668, 1610, 720, 506, 694, 508, 692, 508, 692, 508, 692, 1620, 664, 510, 644, 534, 670, 530, 640, 538, 666, 532, 640, 1636, 666, 1634, 640, 1648, 666, 532, 720, 532, 614, 534, 640, 534, 614, 540, 640, 538, 640, 540, 666, 544, 640, 538, 666, 534, 640, 540, 666, 534, 640, 538, 666, 1632, 640, 1640, 692, 544, 666, 534, 666, 534, 666, 534, 666, 534, 666, 534, 666, 536, 666, 534, 666, 546, 666, 534, 666, 534, 666, 534, 666, 534, 664, 534, 666, 1638, 638, 536, 638, 552, 664, 534, 638, 540, 664, 536, 638, 542, 664, 536, 638, 542, 664, 538, 638, 552, 664, 536, 638, 542, 664, 536, 638, 542, 664, 536, 636, 544, 662, 538, 636, 576, 640, 536, 638, 542, 662, 536, 638, 542, 662, 536, 636, 1640, 664, 538, 688, 572, 638, 556, 642, 562, 638, 562, 638, 562, 638, 562, 638, 562, 638, 562, 638, 570, 638, 1638, 610, 564, 638, 1638, 636, 564, 638, 562, 664, 562, 638, 562, 638, 570, 640, 1636, 610, 1660, 642, 1636, 636, 1644, 660, 560, 666, 560, 640, 1638, 610, 1644, 742}; // ELECTRA_AC
uint8_t state[13] = {0xC3, 0x87, 0xE0, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x05, 0xCF};
6
```Protocol : ELECTRA_AC
Code : 0xC387E0006000200000200015DF (104 Bits)
Mesg Desc.: Power: On, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), Swing(V): Off, Swing(H): Off, Light: Toggle, Clean: Off, Turbo: Off
uint16_t rawData[211] = {9190, 4448, 668, 1604, 640, 1610, 668, 508, 668, 510, 692, 506, 720, 506, 692, 1610, 640, 1620, 692, 1608, 666, 1610, 692, 1608, 666, 512, 692, 508, 668, 512, 694, 508, 664, 1624, 692, 508, 694, 532, 668, 532, 668, 534, 666, 532, 666, 1634, 614, 1636, 666, 1646, 640, 536, 668, 534, 640, 538, 666, 534, 642, 538, 666, 536, 640, 540, 666, 544, 642, 538, 666, 534, 640, 540, 666, 536, 640, 538, 666, 1632, 666, 1640, 640, 544, 666, 534, 614, 536, 640, 536, 640, 538, 666, 536, 690, 534, 666, 536, 664, 544, 666, 536, 664, 534, 668, 534, 666, 534, 666, 536, 664, 1636, 614, 540, 664, 546, 640, 538, 666, 534, 640, 540, 664, 536, 638, 540, 666, 536, 640, 540, 666, 546, 638, 540, 664, 536, 638, 540, 664, 536, 638, 542, 664, 536, 638, 542, 664, 546, 638, 540, 664, 536, 638, 542, 662, 536, 638, 540, 664, 1664, 610, 540, 664, 546, 690, 536, 664, 536, 664, 536, 664, 536, 664, 538, 662, 538, 664, 538, 662, 546, 664, 1638, 612, 540, 662, 1636, 636, 566, 634, 1640, 636, 542, 664, 536, 638, 550, 664, 1634, 636, 1638, 690, 1636, 638, 1634, 636, 1640, 690, 536, 664, 1638, 636, 1638, 768}; // ELECTRA_AC
uint8_t state[13] = {0xC3, 0x87, 0xE0, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x15, 0xDF};
7
```Protocol : ELECTRA_AC
Code : 0xC387E0006000200000000005AF (104 Bits)
Mesg Desc.: Power: Off, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), Swing(V): Off, Swing(H): Off, Light: -, Clean: Off, Turbo: Off
uint16_t rawData[211] = {9162, 4476, 664, 1634, 610, 1640, 690, 536, 612, 538, 638, 540, 664, 534, 690, 1638, 612, 1648, 664, 1636, 638, 1638, 662, 1638, 638, 542, 664, 536, 640, 542, 664, 536, 638, 1650, 660, 538, 690, 536, 664, 536, 664, 536, 664, 536, 662, 1636, 612, 1640, 664, 1648, 638, 540, 664, 536, 640, 540, 664, 536, 638, 542, 664, 538, 638, 544, 662, 566, 638, 540, 636, 564, 638, 542, 662, 538, 638, 540, 664, 1634, 636, 1642, 664, 572, 662, 538, 664, 536, 662, 538, 660, 540, 664, 538, 662, 538, 636, 566, 662, 548, 636, 564, 662, 538, 660, 540, 662, 538, 636, 562, 636, 1666, 608, 564, 610, 580, 662, 536, 630, 550, 638, 564, 636, 542, 664, 538, 636, 544, 636, 566, 610, 580, 636, 564, 612, 568, 636, 564, 612, 568, 636, 566, 636, 568, 634, 564, 636, 554, 636, 566, 608, 570, 636, 564, 608, 570, 636, 566, 634, 546, 636, 566, 608, 604, 636, 540, 608, 572, 634, 566, 634, 544, 636, 566, 610, 572, 636, 566, 608, 580, 634, 1664, 608, 566, 634, 1666, 610, 568, 636, 564, 610, 570, 636, 566, 610, 578, 636, 1662, 608, 1668, 660, 1666, 608, 1662, 610, 566, 636, 1666, 608, 570, 636, 1666, 740}; // ELECTRA_AC
uint8_t state[13] = {0xC3, 0x87, 0xE0, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, 0xAF};
8
```Protocol : ELECTRA_AC
Code : 0xC387E0006000200000200005CF (104 Bits)
Mesg Desc.: Power: On, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), Swing(V): Off, Swing(H): Off, Light: -, Clean: Off, Turbo: Off
uint16_t rawData[211] = {9194, 4444, 670, 1600, 642, 1610, 668, 506, 694, 482, 696, 504, 722, 504, 694, 1606, 642, 1618, 696, 1604, 670, 1606, 722, 1578, 730, 496, 668, 506, 722, 478, 700, 500, 670, 1594, 668, 508, 666, 508, 694, 506, 720, 506, 694, 506, 692, 1608, 640, 1610, 692, 1620, 666, 512, 692, 508, 666, 512, 666, 536, 638, 540, 692, 508, 666, 516, 664, 546, 664, 514, 692, 508, 660, 520, 690, 510, 638, 540, 664, 1658, 636, 1642, 690, 548, 688, 510, 664, 536, 664, 536, 662, 538, 664, 536, 664, 538, 664, 536, 664, 546, 690, 530, 638, 536, 612, 540, 638, 542, 638, 540, 664, 1636, 636, 540, 664, 548, 688, 536, 664, 536, 664, 536, 664, 538, 662, 536, 664, 538, 662, 538, 662, 548, 662, 536, 664, 538, 662, 538, 662, 538, 662, 540, 662, 540, 662, 540, 660, 550, 662, 538, 660, 540, 662, 538, 662, 538, 636, 562, 650, 1652, 608, 546, 662, 548, 610, 568, 638, 564, 610, 570, 660, 540, 610, 570, 636, 566, 610, 570, 636, 572, 636, 1668, 630, 538, 664, 1666, 584, 568, 636, 564, 610, 570, 636, 564, 612, 578, 636, 1660, 610, 1666, 662, 1664, 610, 1666, 608, 566, 638, 562, 662, 1666, 584, 1670, 714}; // ELECTRA_AC
uint8_t state[13] = {0xC3, 0x87, 0xE0, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x05, 0xCF};
So mesgs 1, 4, & 7 are the same. Mesgs 2, 5, & 8 are the same. And mesgs 3 & 6 are the same. So it is a toggle.
As I stated in my last update, state[9] changes as expected from 0x00 and 0x20 because that is the power setting, and state[12] changes because it's the checksum.
That leaves the only other change is state[11] (marked as bold above) changing from 0x05 to 0x15 for the light button etc.
Given we have seen weird values in state[11] at other times, I'm wondering if that byte, like some other aircon protocols, is the value of what button was just pressed on the remote.
To confirm this theory, can you try capturing the other buttons when pressed, and see if state[11 (i.e. the second last byte. e.g. _uint8_t state[13] = {0xC3, ..., 0x00, 0x15, 0xAF};_) changes with different buttons being press and record what the values are for each different button.
It _could_ be that 0x15 is light button, and 0x05 is the power button. We've seen other values in this byte of 0x08 & 0x19 but we are not sure why it's changing. In short we need to work out what that second last byte is doing to be able to emulate it correctly. At present, we don't understand it fully.
Sorry that I didn't respond yet.
I wasn't home.
I will try to do it in a couple of days.
The changes mentioned thus far have been included in the latest IRremoteESP8266 v2.7.4 release.
Light control is working!
Thank you so much!
@ShonP40 Thanks for confirming my _horrible_ hack works.
I'd still like us to get to the bottom of it as per https://github.com/crankyoldgit/IRremoteESP8266/issues/1033#issuecomment-585713902 if you can.
i.e. we've seen 4 possible values for that byte, and right now we are only guessing what it does. Future changes may break it etc.
I’ll try
Any progress?
I didn’t try it yet because I was busy with my smart room project.
It’s finally finished and running (I will add a couple more switches later).
I’ll try to do it tomorrow probably.
Any luck?
Any luck?
Nope
Oh well I guess we give up on it then until you find something.