Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for Samsung AC to turn off #1648

Closed
gladson1990 opened this issue Oct 24, 2021 · 19 comments · Fixed by #1650
Closed

Support for Samsung AC to turn off #1648

gladson1990 opened this issue Oct 24, 2021 · 19 comments · Fixed by #1650
Assignees

Comments

@gladson1990
Copy link

Hi ,. I just tried the controlsamsungac example. First I did an on and off which worked. Then I tried off and again off , the second time the ac turned on. Now when I try to turn off the ac it's not turning off. The ac receives the code but doesn't turn off and I don't see any temperature on the display. Can someone tell me how can I make the AC off. All I wanted was to turn on, set temp and turn off. Now only the last part turn off is pending. Kindly help .

@crankyoldgit
Copy link
Owner

Why didn't you follow the template that was created when you opened this issue? That contains valuable info for us.

Are you using the "controlsamsungac example" completely unmodified?
Are you saying the 2nd time through the example code's loop it failed to turn off?
Do the other commands etc in the program work still? e.g. Have you tried turning it off with the actual remote to see if the program is still successfully sending?

@gladson1990
Copy link
Author

I wanted to provide more info , but since I am very new to this, some of them I did not understand.
I had used the "controlsamsungac example" unmodified at first to verify whether my AC is working fine or not, and it worked well. ie it turned ON and OFF as per the command it sent.
Next I tried to check what happens if we send the same command twice, So I had send turn on twice and checked - it worked well.
Next I tired turn OFF twice, The AC turned off at first and then turned on at the second time.
Now when I try to turn off the AC using the ac.off() code it is not turning off, I would get a beep sound from the AC and the temperature disappears , but the AC is still on.
I turned off using the AC remote and that time it turned off.
Set temp, set mode , set swing works well.

@crankyoldgit
Copy link
Owner

crankyoldgit commented Oct 24, 2021

Can you please include the entire code in which it fails to turn off, so we can try to reproduce the problem?

@crankyoldgit
Copy link
Owner

Also, what version of the library or master commit are you using?

@gladson1990
Copy link
Author

gladson1990 commented Oct 24, 2021

/* Copyright 2019 David Conran
*
* An IR LED circuit *MUST* be connected to the ESP8266 on a pin
* as specified by kIrLed below.
*
* TL;DR: The IR LED needs to be driven by a transistor for a good result.
*
* Suggested circuit:
*     https://github.com/crankyoldgit/IRremoteESP8266/wiki#ir-sending
*
* Common mistakes & tips:
*   * Don't just connect the IR LED directly to the pin, it won't
*     have enough current to drive the IR LED effectively.
*   * Make sure you have the IR LED polarity correct.
*     See: https://learn.sparkfun.com/tutorials/polarity/diode-and-led-polarity
*   * Typical digital camera/phones can be used to see if the IR LED is flashed.
*     Replace the IR LED with a normal LED if you don't have a digital camera
*     when debugging.
*   * Avoid using the following pins unless you really know what you are doing:
*     * Pin 0/D3: Can interfere with the boot/program mode & support circuits.
*     * Pin 1/TX/TXD0: Any serial transmissions from the ESP8266 will interfere.
*     * Pin 3/RX/RXD0: Any serial transmissions to the ESP8266 will interfere.
*   * ESP-01 modules are tricky. We suggest you use a module with more GPIOs
*     for your first time. e.g. ESP-12 etc.
*/
#include <Arduino.h>
#include <IRremoteESP8266.h>
#include <IRsend.h>
#include <ir_Samsung.h>

const uint16_t kIrLed = 4;  // ESP8266 GPIO pin to use. Recommended: 4 (D2).
IRSamsungAc ac(kIrLed);     // Set the GPIO used for sending messages.

void printState() {
  // Display the settings.
  Serial.println("Samsung A/C remote is in the following state:");
  Serial.printf("  %s\n", ac.toString().c_str());
}

void setup() {
  ac.begin();
  Serial.begin(115200);
  delay(200);

  // Set up what we want to send. See ir_Samsung.cpp for all the options.
  Serial.println("Default state of the remote.");
  printState();
  Serial.println("Setting initial state for A/C.");
  ac.off();
  ac.setFan(kSamsungAcFanLow);
  ac.setMode(kSamsungAcCool);
  ac.setTemp(25);
  ac.setSwing(false);
  printState();
}

void loop() {
  // Turn the A/C unit on
  Serial.println("Turn on the A/C ...");
  ac.on();
  ac.send();
  printState();
  delay(5000);  // wait 15 seconds
  // and set to cooling mode.
  Serial.println("Set the A/C mode to cooling ...");
  ac.setMode(kSamsungAcCool);
  ac.send();
 
  printState();
  delay(15000);  // wait 15 seconds


  // Turn the A/C unit off.
  Serial.println("Turn off the A/C ...");
  ac.off();
   ac.send()
 
  printState();
  delay(15000);  // wait 15 seconds
  // Turn the A/C unit off.
  Serial.println("Turn off the A/C ...");
  ac.off();
   ac.send()
 
  printState();
  delay(15000);  // wait 15 seconds
}

library is the latest
lib_deps = crankyoldgit/IRremoteESP8266@^2.7.19

I am using it in esp32. Let me know if there is any particular pin that I got to use for this to work.

@crankyoldgit
Copy link
Owner

// Turn the A/C unit off.
  Serial.println("Turn off the A/C ...");
  ac.off();
   ac.send()
 
  printState();
  delay(15000);  // wait 15 seconds
  // Turn the A/C unit off.
  Serial.println("Turn off the A/C ...");
  ac.off();
   ac.send()

Btw. You're missing ;s from the end of your ac.send() lines. I'm surprised it compiled.

Okay. The Samsung A/C class will not send a second special "Off" message when it thinks the A/C is already off.
So, the first ac.off(); ac.send(); should generate an extended "Off" message per the protocol as we understand it.
The next ac.send(); will only send a normal "Off" message, because it believes the A/C is already off. A normal message typically is not enough to tell the A/C unit to turn off or on reliably. Extended Samsung messages are required to make sure the unit powers on or powers off.

As long as the power state changes in the class between ac.send();s then it should do the correct thing and send the appropriate extended Samsung message.

See:

// Do we need to send a the special power on/off message? i.e. An Extended Msg
if (getPower() != _lastsentpowerstate || _forcepower) { // We do.
sendExtended(repeat, calcchecksum);
_forcepower = false; // It has now been sent, so clear the flag if set.

Or put another way, sending two "off" messages without turning the device "on" (via the class), the second off will never send the correct message because it believes it is already off.

@rg2k
Copy link
Contributor

rg2k commented Oct 24, 2021

Mine was working till I upgraded to 2.7.19 / 2.7.20 - Samsung AC will no longer turn off. I rolled back to version 2.7.18 and everything working as it used to. @gladson1990 - try forcing the version and check again?

crankyoldgit added a commit that referenced this issue Oct 25, 2021
* Remove "signature" checks, as they were flat out wrong. We were trying to use the checksum as a fixed signature. This caused some messages to fail to decode on the ESP.
* Streamline some code.
* Clean up some code style formatting.
* Remove bad assumptions of bits that controlled settings that were actually located in the checksum bytes.
* Write a huge unit test to simulate and verify the code in Issue #1648 should do the correct thing.

Fixes #1648 (Hopefully)
Ref #1277
@crankyoldgit
Copy link
Owner

@gladson1990 & @rg2k
I've created a branch that might address your issues. But I need to you test & check it does.
Please download & test the code in branch https://github.com/crankyoldgit/IRremoteESP8266/tree/Issue1648 / PR #1650 and let us know how it goes.

I've created a test to verify the code you submitted, and it seems to (now at least) do what I said it should in #1648 (comment)
e.g.

TEST(TestIRSamsungAcClass, Issue1648) {
IRSamsungAc ac(kGpioUnused);
IRrecv irrecv(kGpioUnused);
const uint8_t onState[kSamsungAcExtendedStateLength] = {
0x02, 0x92, 0x0F, 0x00, 0x00, 0x00, 0xF0,
0x01, 0xD2, 0x0F, 0x00, 0x00, 0x00, 0x00,
0x01, 0xC2, 0xFE, 0x71, 0x90, 0x15, 0xF0};
const String onText = "Power: On, Mode: 1 (Cool), Temp: 25C, Fan: 2 (Low), "
"Swing: Off, Beep: Off, Clean: Off, Quiet: Off, "
"Powerful: Off, Breeze: Off, Light: On, Ion: Off";
const uint8_t extended_offState[kSamsungAcExtendedStateLength] = {
0x02, 0xB2, 0x0F, 0x00, 0x00, 0x00, 0xC0,
0x01, 0xD2, 0x0F, 0x00, 0x00, 0x00, 0x00,
0x01, 0xC2, 0xFE, 0x71, 0x90, 0x15, 0xF0};
const uint8_t short_offState[kSamsungAcStateLength] = {
0x02, 0xB2, 0x0F, 0x00, 0x00, 0x00, 0xC0,
0x01, 0xC2, 0xFE, 0x71, 0x90, 0x15, 0xF0};
const String offText = "Power: Off, Mode: 1 (Cool), Temp: 25C, Fan: 2 (Low), "
"Swing: Off, Beep: Off, Clean: Off, Quiet: Off, "
"Powerful: Off, Breeze: Off, Light: On, Ion: Off";
const uint8_t coolState[kSamsungAcStateLength] = {
0x02, 0x92, 0x0F, 0x00, 0x00, 0x00, 0xF0,
0x01, 0xC2, 0xFE, 0x71, 0x90, 0x15, 0xF0};
// "setup()"" from provided code.
ac.begin(); // User code
ac.off(); // User code
ac.setFan(kSamsungAcFanLow); // User code
ac.setMode(kSamsungAcCool); // User code
ac.setTemp(25); // User code
ac.setSwing(false); // User code
// Go through "loop()" from provided code.
for (uint8_t i = 0; i < 2; i++) {
ac.on(); // User code
ac.send(); // User code
// Verify what was sent.
ac._irsend.makeDecodeResult();
EXPECT_TRUE(irrecv.decode(&ac._irsend.capture));
EXPECT_EQ(SAMSUNG_AC, ac._irsend.capture.decode_type);
EXPECT_EQ(kSamsungAcExtendedBits, ac._irsend.capture.bits);
EXPECT_STATE_EQ(onState, ac._irsend.capture.state, ac._irsend.capture.bits);
EXPECT_EQ(onText, IRAcUtils::resultAcToString(&ac._irsend.capture));
EXPECT_TRUE(ac._lastsentpowerstate);
ac._irsend.reset();
ac.setMode(kSamsungAcCool); // User code
ac.send(); // User code
// Verify what was sent.
ac._irsend.makeDecodeResult();
EXPECT_TRUE(irrecv.decode(&ac._irsend.capture));
EXPECT_EQ(SAMSUNG_AC, ac._irsend.capture.decode_type);
EXPECT_EQ(kSamsungAcBits, ac._irsend.capture.bits);
EXPECT_STATE_EQ(coolState, ac._irsend.capture.state,
ac._irsend.capture.bits);
EXPECT_EQ(onText, IRAcUtils::resultAcToString(&ac._irsend.capture));
ac._irsend.reset();
EXPECT_TRUE(ac._lastsentpowerstate);
EXPECT_FALSE(ac._forcepower);
ac.off(); // User code
ac.send(); // User code
// Verify what was sent.
ac._irsend.makeDecodeResult();
EXPECT_TRUE(irrecv.decode(&ac._irsend.capture));
EXPECT_EQ(SAMSUNG_AC, ac._irsend.capture.decode_type);
EXPECT_EQ(kSamsungAcExtendedBits, ac._irsend.capture.bits);
EXPECT_STATE_EQ(extended_offState, ac._irsend.capture.state,
ac._irsend.capture.bits);
EXPECT_EQ(offText, IRAcUtils::resultAcToString(&ac._irsend.capture));
EXPECT_FALSE(ac._lastsentpowerstate);
ac._irsend.reset();
ac.off(); // User code
ac.send(); // User code
// Verify what was sent.
ac._irsend.makeDecodeResult();
EXPECT_TRUE(irrecv.decode(&ac._irsend.capture));
EXPECT_EQ(SAMSUNG_AC, ac._irsend.capture.decode_type);
EXPECT_EQ(kSamsungAcBits, ac._irsend.capture.bits);
EXPECT_STATE_EQ(short_offState, ac._irsend.capture.state,
ac._irsend.capture.bits);
EXPECT_EQ(offText, IRAcUtils::resultAcToString(&ac._irsend.capture));
EXPECT_FALSE(ac._lastsentpowerstate);
ac._irsend.reset();
// End of "loop()" code.
}
}

FYI @xorbital @IceOnly ... That PR should address #1277 (comment)

@crankyoldgit crankyoldgit self-assigned this Oct 25, 2021
@crankyoldgit crankyoldgit added the Pending Confirmation Waiting for confirmation from user label Oct 25, 2021
@gladson1990
Copy link
Author

Sure @crankyoldgit I ll try and let u know. Appreciate your knowledge of fixing things fast!

@gladson1990
Copy link
Author

@crankyoldgit I tried with the branch, and it did not work for me.
then i used urs IRrecv and IRsend example, I was able to understand it well and now I am able to turn off with the following data.

// Example of data captured by IRrecvDumpV2.ino
uint16_t rawData[349] = {646, 17846, 3066, 8934, 556, 446, 552, 1442, 552, 446, 552, 444, 552, 444, 552, 446, 552, 444, 552, 446, 552, 446, 550, 1444, 550, 450, 548, 472, 526, 1468, 542, 1452, 552, 446, 552, 1442, 552, 1442, 552, 1442, 554, 1442, 552, 1442, 554, 446, 552, 446, 550, 446, 550, 448, 548, 448, 550, 472, 524, 472, 540, 456, 548, 448, 552, 446,
552, 444, 552, 444, 552, 444, 552, 444, 552, 446, 552, 446, 552, 444, 552, 446, 552, 444, 552, 446, 552, 446, 550, 448, 550, 448, 548, 472, 526, 472, 544, 452, 550, 448, 550, 446, 552, 446, 552, 446, 552, 446, 552, 444, 552, 444, 552, 446, 550, 1442, 554, 1442, 494, 3008, 3038, 8932, 556, 1440, 554, 472, 466, 530, 528, 468, 548, 448, 552, 444, 552, 446,
552, 446, 552, 444, 552, 1442, 552, 446, 552, 444, 552, 1442, 554, 446, 552, 1442, 552, 1442, 552, 1468, 468, 1526, 550, 1444, 554, 1442, 552, 446, 552, 444, 552, 444, 552, 444, 552, 444, 554, 444, 552, 444, 552, 446, 550, 446, 552, 446, 550, 448, 550, 472, 524, 472, 466, 530, 544, 452, 550, 446, 552, 444, 552, 446, 552, 444, 552, 444, 552, 444, 552, 444, 552, 444, 552, 446, 552, 446, 552, 446, 552, 446, 552, 446, 550, 448, 550, 470, 526, 472, 466, 530, 544, 454, 550,
446, 552, 444, 552, 446, 552, 2948, 3038, 8934, 558, 1440, 554, 444, 552, 444, 552, 444, 552, 444, 552, 446, 550, 446,
550, 446, 550, 472, 526, 1468, 468, 530, 546, 450, 552, 1442, 552, 446, 552, 444, 554, 444, 552, 1440, 554, 1440, 554, 1440, 554, 1442, 554, 446, 550, 1442, 552, 472, 526, 1468, 548, 1446, 552, 446, 552, 446, 552, 446, 552, 1440, 554, 1440, 554, 1440, 554, 446, 552, 444, 552, 446, 552, 446, 550, 446, 550, 448, 548, 472, 526, 472, 542, 1450, 552, 1442, 554, 444, 552, 1440, 554, 444, 552, 1442, 552, 444, 554, 444, 552, 446, 552, 446, 552, 446, 550, 446, 550, 448, 550, 472, 526, 470, 514, 1480, 550, 1444, 554};
// Example Samsung A/C state captured from IRrecvDumpV2.ino

const uint16_t kSamsungAcStateLengthlo =21;

uint8_t samsungState[kSamsungAcStateLengthlo] = {0x02, 0xB2, 0x0F, 0x00, 0x00, 0x00, 0xC0, 0x01, 0xD2, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x01, 0x12, 0xAF, 0x71, 0x80, 0x15, 0xC0};

@rg2k
Copy link
Contributor

rg2k commented Oct 25, 2021

I can also confirm that the branch did not work.

@crankyoldgit
Copy link
Owner

I can also confirm that the branch did not work.

Can you please capture the same sequence of signals/messages from the real remote? That way I can compare the two.

crankyoldgit added a commit that referenced this issue Oct 25, 2021
* Ground truth data indicates the initial analysis of the power setting bits was lacking. Power control seems to be located in two places. Same location in each of the two main 7 byte sections.
* Use user provided data to confirm we can sucessfully construct the same "Off" message.
* Update & extend Unit test coverage to support this.

Fixes #1648
FYI #1277
@crankyoldgit
Copy link
Owner

crankyoldgit commented Oct 25, 2021

I think I've found the issue. It seems the power setting is located in two places in the protocol message, not the single place the initial analysis had determined.
I've modified the code & branch to hopefully fix this. In the tests, I can exactly simulate/reconstruct the same samsungState[] code from #1648 (comment)
So I fairly confident that it should fix the problem for you.

Can you please re-download and test the latest revision of that branch and confirm please?

@gladson1990
Copy link
Author

@crankyoldgit The latest fix is working well.
Thank u so much on that.
Will u be pushing the fix to release ? or should i be using the temp branch.

@rg2k
Copy link
Contributor

rg2k commented Oct 26, 2021

Still no luck on my side. I suspect it has something to do with the 'beep' setting, but I'll only be able to go into deep troubleshooting later in the week. Will stay on ver .18 for now.

@crankyoldgit
Copy link
Owner

@crankyoldgit The latest fix is working well. Thank u so much on that. Will u be pushing the fix to release ? or should i be using the temp branch.

I'll be merging it into master shortly. I'm waiting till the end of Hacktoberfest before I create a new release. So, soon.

@crankyoldgit crankyoldgit added bug enhancement and removed Pending Confirmation Waiting for confirmation from user more info labels Oct 26, 2021
@crankyoldgit
Copy link
Owner

Still no luck on my side. I suspect it has something to do with the 'beep' setting, but I'll only be able to go into deep troubleshooting later in the week. Will stay on ver .18 for now.

@rg2k without data etc, I'm unable to help.

crankyoldgit added a commit that referenced this issue Oct 26, 2021
…hanges. (#1650)

* Remove "signature" checks, as they were flat out wrong. We were trying to use the checksum as a fixed signature. This caused some messages to fail to decode on the ESP.
* Add second location for Power setting that was missing.
  - Fixes Power Off problems.
* Streamline some code.
* Clean up some code style formatting.
* Remove bad assumptions of bits that controlled settings that were actually located in the checksum bytes.
* Write a huge unit test to simulate and verify the code in Issue #1648 should do the correct thing.

Fixes #1648
Ref #1277
crankyoldgit added a commit that referenced this issue Nov 19, 2021
_v2.8.0 (20211119)_

**[Bug Fixes]**
- Fix compilation issue when using old 8266 Arduino Frameworks. (#1639 #1640)
- Fix potential security issue with `scrape_supported_devices.py` (#1616 #1619)

**[Features]**
- SAMSUNG_AC
  - Change `clean` setting to a toggle. (#1676 #1677)
  - Highest fan speed is available without Powerful setting. (#1675 #1678)
  - Change `beep` setting to a toggle. (#1669 #1671)
  - Fix Beep for AR12TXEAAWKNEU (#1668 #1669)
  - Add support for Horizontal Swing & Econo (#1277 #1667)
  - Add support for On, Off, & Sleep Timers (#1277 #1662)
  - Fix power control. Clean-up code & bitmaps from Checksum changes. (#1277 #1648 #1650)
- HAIER_AC176/HAIER_AC_YRW02
  - Add support A/B unit setting (#1672)
  - Add support degree Fahrenheit (#1659)
  - Add support `Lock` function (#1652)
  - Implement horizontal swing feature (#1641)
  - Implement Quiet setting. (#1634 #1635)
- Basic support for Airton Protocol (#1670 #1681)
- HAIER_AC176: Add Turbo and Quiet settings (#1634)
- Gree: Add `SwingH` & `Econo` control. (#1587 #1653)
- MIRAGE
  - Add experimental detailed support. (#1573 #1615)
  - Experimental detailed support for KKG29A-C1 remote. (#1573 #1660)
- ELECTRA_AC: Add support for "IFeel" & Sensor settings. (#1644 #1645)
- Add Russian translation (#1649)
- Add Swedish translation (#1627)
- Reduce flash space used. (#1633)
- Strings finally in Flash! (#1493 #1614 #1623)
- Add support for Rhoss Idrowall MPCV 20-30-35-40 A/C protocol (#1630)
- Make `IRAc::opmodeToString()` output nicer for humans. (#1613)
- TCL112AC/TEKNOPOINT: Add support for `GZ055BE1` model (#1486 #1602)
- Support for Arris protocol. (#1598)
- SharpAc: Allow position control of SwingV (#1590 #1594)

**[Misc]**
- HAIER_AC176/HAIER_AC_YRW02
  - Replace some magic numbers with constants (#1679)
  - Small fix `Quiet` and `Turbo` test (#1674)
  - Fix `IRHaierAC176::getTemp()` return value description (#1663)
- Security Policy creation and changes. (#1616 #1617 #1618 #1621 #1680)
- IRrecvDumpV2/3: Update PlatformIO envs for missing languages (#1661)
- IRMQTTServer
  - Use the correct string for Fan mode in Home Assistant. (#1610 #1657)
  - Move a lot of the strings/text to flash. (#1638)
- Minor code style improvements. (#1656)
- Update Supported Devices
  - HAIER_AC176 (#1673)
  - LG A/C (#1651 #1655)
  - Symphony (#1603 #1605)
  - Epson (#1574 #1601)
  - GREE (#1587 #1588)
  - SharpAc (#1590 #1591)
- Add extra tests for LG2 protocol (#1654)
- Fix parameter expansion in several macros.
- Move some strings to `IRtext.cpp` & `locale/default.h` (#1637)
- RHOSS: Move include and defines to their correct places (#1636)
- Make makefile only build required files when running `run-%` target (#1632)
- Update Portuguese translation (#1628)
- Add possibility to run specific test case (#1625)
- Change `googletest` library ignore (#1626)
- Re-work "Fan Only" strings & matching. (#1610)
- Address `C0209` pylint warnings. (#1608)
crankyoldgit added a commit that referenced this issue Nov 19, 2021
## _v2.8.0 (20211119)_

**[Bug Fixes]**
- Fix compilation issue when using old 8266 Arduino Frameworks. (#1639 #1640)
- Fix potential security issue with `scrape_supported_devices.py` (#1616 #1619)

**[Features]**
- SAMSUNG_AC
  - Change `clean` setting to a toggle. (#1676 #1677)
  - Highest fan speed is available without Powerful setting. (#1675 #1678)
  - Change `beep` setting to a toggle. (#1669 #1671)
  - Fix Beep for AR12TXEAAWKNEU (#1668 #1669)
  - Add support for Horizontal Swing & Econo (#1277 #1667)
  - Add support for On, Off, & Sleep Timers (#1277 #1662)
  - Fix power control. Clean-up code & bitmaps from Checksum changes. (#1277 #1648 #1650)
- HAIER_AC176/HAIER_AC_YRW02
  - Add support A/B unit setting (#1672)
  - Add support degree Fahrenheit (#1659)
  - Add support `Lock` function (#1652)
  - Implement horizontal swing feature (#1641)
  - Implement Quiet setting. (#1634 #1635)
- Basic support for Airton Protocol (#1670 #1681)
- HAIER_AC176: Add Turbo and Quiet settings (#1634)
- Gree: Add `SwingH` & `Econo` control. (#1587 #1653)
- MIRAGE
  - Add experimental detailed support. (#1573 #1615)
  - Experimental detailed support for KKG29A-C1 remote. (#1573 #1660)
- ELECTRA_AC: Add support for "IFeel" & Sensor settings. (#1644 #1645)
- Add Russian translation (#1649)
- Add Swedish translation (#1627)
- Reduce flash space used. (#1633)
- Strings finally in Flash! (#1493 #1614 #1623)
- Add support for Rhoss Idrowall MPCV 20-30-35-40 A/C protocol (#1630)
- Make `IRAc::opmodeToString()` output nicer for humans. (#1613)
- TCL112AC/TEKNOPOINT: Add support for `GZ055BE1` model (#1486 #1602)
- Support for Arris protocol. (#1598)
- SharpAc: Allow position control of SwingV (#1590 #1594)

**[Misc]**
- HAIER_AC176/HAIER_AC_YRW02
  - Replace some magic numbers with constants (#1679)
  - Small fix `Quiet` and `Turbo` test (#1674)
  - Fix `IRHaierAC176::getTemp()` return value description (#1663)
- Security Policy creation and changes. (#1616 #1617 #1618 #1621 #1680)
- IRrecvDumpV2/3: Update PlatformIO envs for missing languages (#1661)
- IRMQTTServer
  - Use the correct string for Fan mode in Home Assistant. (#1610 #1657)
  - Move a lot of the strings/text to flash. (#1638)
- Minor code style improvements. (#1656)
- Update Supported Devices
  - HAIER_AC176 (#1673)
  - LG A/C (#1651 #1655)
  - Symphony (#1603 #1605)
  - Epson (#1574 #1601)
  - GREE (#1587 #1588)
  - SharpAc (#1590 #1591)
- Add extra tests for LG2 protocol (#1654)
- Fix parameter expansion in several macros.
- Move some strings to `IRtext.cpp` & `locale/default.h` (#1637)
- RHOSS: Move include and defines to their correct places (#1636)
- Make makefile only build required files when running `run-%` target (#1632)
- Update Portuguese translation (#1628)
- Add possibility to run specific test case (#1625)
- Change `googletest` library ignore (#1626)
- Re-work "Fan Only" strings & matching. (#1610)
- Address `C0209` pylint warnings. (#1608)
@crankyoldgit
Copy link
Owner

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

@gladson1990
Copy link
Author

Thank u much :)

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