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
3k stars 833 forks source link

DAIKIN Remote ARC443A5 Dry mode negative degrees as 110/111C #2145

Open NiKiZe opened 2 months ago

NiKiZe commented 2 months ago

Version/revision of the library used

current master

Describe the bug

Remote Daikin ARC443A5 mentioned in #2138 has a Dry mode, where the temp can be set to -1 or -2 (will check if there is any other mode available as well) These show up as 111C and 110C respectively in the description text. Trying to set Temp 110 or 111 ends up setting temp to 32 due to the limitors in the setTemp function

To Reproduce

IRDaikinESP ac(kIrLed);
const uint8_t acstatedry2[35] = {0x11, 0xDA, 0x27, 0x00, 0xC5, 0x00, 0x50, 0x27, 0x11, 0xDA, 0x27, 0x00, 0x42, 0x00, 0x00, 0x54, 0x11, 0xDA, 0x27, 0x00, 0x00, 0x29, 0xDC, 0x80, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xF7};
ac.setRaw(acstatedry2);

Serial.printf("  %s\n", ac.toString().c_str());
// Power: On, Mode: 2 (Dry), Temp: 110C, Fan: 10 (Auto), Powerful: Off, Quiet: Off, Sensor: Off, Mould: Off, Comfort: On, Swing(H): Off, Swing(V): Off, Clock: 00:00, Day: 0 (UNKNOWN), On Timer: Off, Off Timer: Off, Weekly Timer: On
ac.setTemp(110);
Serial.printf("  %s\n", ac.toString().c_str());
// Power: On, Mode: 2 (Dry), Temp: 32C, Fan: 10 (Auto), Powerful: Off, Quiet: On, Sensor: Off, Mould: Off, Comfort: On, Swing(H): Off, Swing(V): Off, Clock: 00:00, Day: 0 (UNKNOWN), On Timer: Off, Off Timer: Off, Weekly Timer: On

Expected behaviour

ac.setTemp(111);
Serial.printf("  %s\n", ac.toString().c_str()); // Power: On, Mode: 2 (Dry), Temp: 111C, Fan: 10 (Auto), Powerful: Off, Quiet: Off, Sensor: Off, Mould: Off, Comfort: On, Swing(H): Off, Swing(V): Off, Clock: 00:00, Day: 0 (UNKNOWN), On Timer: Off, Off Timer: Off, Weekly Timer: On

Even better if these show as -1/-2, but that could be a breaking change? And this is the main reason for opening an issue

Output of raw data from [IRrecvDumpV2.ino]

  // 0x11DA2700C500502711DA27004200005411DA27000029DC80A0000000000000C00000F7 (280 Bits)
  // Power: On, Mode: 2 (Dry), Temp: 110C(-2), Fan: 10 (Auto), Powerful: Off, Quiet: Off, Sensor: Off, Mould: Off, Comfort: On, Swing(H): Off, Swing(V): Off, Clock: 00:00, Day: 0 (UNKNOWN), On Timer: Off, Off Timer: Off, Weekly Timer: On
  const uint8_t acstatedry2[35] = {0x11, 0xDA, 0x27, 0x00, 0xC5, 0x00, 0x50, 0x27, 0x11, 0xDA, 0x27, 0x00, 0x42, 0x00, 0x00, 0x54, 0x11, 0xDA, 0x27, 0x00, 0x00, 0x29, 0xDC, 0x80, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xF7};

  // 0x11DA2700C500502711DA27004200005411DA27000029DE80A0000000000000C00000F9 (280 Bits)
  // Power: On, Mode: 2 (Dry), Temp: 111C(-1), Fan: 10 (Auto), Powerful: Off, Quiet: Off, Sensor: Off, Mould: Off, Comfort: On, Swing(H): Off, Swing(V): Off, Clock: 00:00, Day: 0 (UNKNOWN), On Timer: Off, Off Timer: Off, Weekly Timer: On
  const uint8_t acstatedry1[35] = {0x11, 0xDA, 0x27, 0x00, 0xC5, 0x00, 0x50, 0x27, 0x11, 0xDA, 0x27, 0x00, 0x42, 0x00, 0x00, 0x54, 0x11, 0xDA, 0x27, 0x00, 0x00, 0x29, 0xDE, 0x80, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xF9};