Skip to content

Commit 1bab071

Browse files
authored
[BUG] Ensure IRCoolixAC::toCommon() returns kNoTempValue when no sensor temp is detected. (#2015)
It seems we were reporting an incorrect sensor temp (31) which normally means "There is no sensor temp.", instead of `kNoTempValue`. Fixes #2012
1 parent 75f9769 commit 1bab071

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

src/ir_Coolix.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -549,6 +549,9 @@ stdAc::state_t IRCoolixAC::toCommon(const stdAc::state_t *prev) const {
549549
result.mode = toCommonMode(getMode());
550550
result.degrees = getTemp();
551551
result.sensorTemperature = getSensorTemp();
552+
if (result.sensorTemperature == kCoolixSensorTempIgnoreCode) {
553+
result.sensorTemperature = kNoTempValue;
554+
}
552555
result.iFeel = getZoneFollow();
553556
result.fanspeed = toCommonFanSpeed(getFan());
554557
return result;

test/ir_Coolix_test.cpp

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -492,6 +492,9 @@ TEST(TestCoolixACClass, SetGetClearSensorTempAndZoneFollow) {
492492
EXPECT_EQ(
493493
"Power: On, Mode: 3 (Heat), Fan: 6 (Zone Follow), Temp: 24C, "
494494
"Zone Follow: On, Sensor Temp: 19C", ac.toString());
495+
// For #Issue2012
496+
EXPECT_EQ(19, ac.getSensorTemp());
497+
EXPECT_EQ(19, ac.toCommon().sensorTemperature);
495498
}
496499

497500
TEST(TestCoolixACClass, SpecialModesAndReset) {
@@ -1068,3 +1071,36 @@ TEST(TestDecodeCoolix48, SyntheticSelfDecode) {
10681071
"m552s5244",
10691072
irsend.outputStr());
10701073
}
1074+
1075+
// Test for issue https://github.com/crankyoldgit/IRremoteESP8266/issues/2012#issuecomment-1650098971
1076+
TEST(TestCoolixACClass, Issue2012) {
1077+
IRrecv irrecv(kGpioUnused);
1078+
IRCoolixAC ac(kGpioUnused);
1079+
1080+
ac.stateReset();
1081+
ac.setRaw(0xB21FD8);
1082+
EXPECT_EQ(
1083+
"Power: On, Mode: 2 (Auto), Fan: 0 (Auto0), Temp: 26C, "
1084+
"Zone Follow: Off, Sensor Temp: Off",
1085+
ac.toString());
1086+
EXPECT_EQ(kNoTempValue, ac.toCommon().sensorTemperature);
1087+
1088+
ac.setRaw(0xB21F98);
1089+
EXPECT_EQ(
1090+
"Power: On, Mode: 2 (Auto), Fan: 0 (Auto0), Temp: 27C, "
1091+
"Zone Follow: Off, Sensor Temp: Off",
1092+
ac.toString());
1093+
EXPECT_EQ(kNoTempValue, ac.toCommon().sensorTemperature);
1094+
1095+
ac.setRaw(0xB21F88);
1096+
EXPECT_EQ(
1097+
"Power: On, Mode: 2 (Auto), Fan: 0 (Auto0), Temp: 28C, "
1098+
"Zone Follow: Off, Sensor Temp: Off",
1099+
ac.toString());
1100+
EXPECT_EQ(kNoTempValue, ac.toCommon().sensorTemperature);
1101+
ac.setRaw(0xB27BE0);
1102+
EXPECT_EQ(
1103+
"Power: Off",
1104+
ac.toString());
1105+
EXPECT_EQ(kNoTempValue, ac.toCommon().sensorTemperature);
1106+
}

0 commit comments

Comments
 (0)