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

Add support iFeel for Electra A/C remote #1644

Closed
Aculeasis opened this issue Oct 20, 2021 · 10 comments
Closed

Add support iFeel for Electra A/C remote #1644

Aculeasis opened this issue Oct 20, 2021 · 10 comments
Assignees
Labels
enhancement Pending Confirmation Waiting for confirmation from user wontfix

Comments

@Aculeasis
Copy link

I use Tuya IR remote on Tasmota and examined data value. For example:
0xC36FE000A00028640020001E7C - iFeel on
0xC36FE000A00020000020001E10 - iFeel off

I think iFeel flag is stored in byte 6 bit 5. The temp is stored in byte 7.
I wrote some code but It's not so easy because The stdAc has no iFeel and i think Tasmota checks IRElectraAc::toCommon.

It will be great if you implement support iFeel and Tasmota makes it controllable.

PS: Works on both of my cheap A/C (AUX manufactured):

  • Subtropic SUB-07HN1_18Y remote YKR-H/102E
  • Centek CT-65Q09 remote YKR-P/002E
@crankyoldgit
Copy link
Owner

crankyoldgit commented Oct 20, 2021

Thanks for the info. I'll look at adding "IFeel" support to the ELECTRA_AC protocol per your code.
However, stdAc, which Tasmota uses, does not support all the features of every A/C. It's meant to only cover the common basics allowing it to be universal as such. See: https://github.com/crankyoldgit/IRremoteESP8266/wiki/Frequently-Asked-Questions#the-irac-class-used-by-irmqttserver-tasmota-etc-doesnt-support-a-feature-of-my-ac-why

Alas, "IFeel" falls into that category. If you want to use that feature, you're going to need to use the IRElectraAc Class interface once we've added it.

crankyoldgit added a commit that referenced this issue Oct 20, 2021
* Add `(set|get)IFeel()` & `(set|get)IFeelTemp()` methods.
* Add and update Unit test coverage.

For #1644

Co-Authored-By: @Aculeasis
@crankyoldgit
Copy link
Owner

@Aculeasis I've added support for IFeel etc via the IRElectraAc class as discussed.
I mostly used your code with a number of fixes. i.e. You math seemed incorrect when using the data you provided, and you seemed off-by-one on one of the bit settings.

Please download and try out PR #1645 / Branch https://github.com/crankyoldgit/IRremoteESP8266/tree/Electra_Ifeel and let us know how it goes.

E.g. It decodes your:

0xC36FE000A00028640020001E7C - iFeel on

As:

Power: On, Mode: 1 (Cool), Temp: 21C, Fan: 5 (Auto), Swing(V): Off, Swing(H): Off, Light: -, Clean: Off, Turbo: Off, IFeel: On, IFeel Temp: 26C

@crankyoldgit crankyoldgit added the Pending Confirmation Waiting for confirmation from user label Oct 20, 2021
@Aculeasis
Copy link
Author

Thank you.
Receiving and sending (In Heat mode) work.

Also, I found and tested two other flags:
HeatWTF sets in Heat mode. I can't understand what it does. It has no effect.

    // 0xC39FE000A00080000030000597
    // Byte 9
    uint8_t         :2;
    uint8_t Clean   :1;
    uint8_t         :1;
    uint8_t HeatWTF :1;
    uint8_t Power   :1;
    uint8_t         :2;

NoBeepIFeel is used when the A/C remote send new temperature without beeping, but it's not the same as Beep because all other settings will be ignored.

    // 0xC39FE040A00088660030001E5E
    // Byte 3
    uint8_t         :6;
    uint8_t NoBeepIFeel :1;
    uint8_t         :1;

@crankyoldgit
Copy link
Owner

Ahh. So ifeel's temp is really a sensor temp.

@Aculeasis
Copy link
Author

Yes, from the a/c remote. And what were the options?

@crankyoldgit
Copy link
Owner

Some other A/Cs have a sensor temp feature. I'm use that text instead. They also have the silent update, so I'll try to use that to keep the class usage as similar.

crankyoldgit added a commit that referenced this issue Oct 23, 2021
* Change IFeelTemp to SensorTemp.
* Add support for the silent Sensor Temp updates.
* Update & add to the Unit Tests.

For #1644
@crankyoldgit
Copy link
Owner

I've added changes to that branch to change to Sensor Temp, and to support the silent sensor temp update-only messages.

As for the HeatWTF, you are going to have to provide test data for that, and describe what it does, and when it needs to do it. etc. before I add any support for it.

Please test and let let us know how it goes etc.

@Aculeasis
Copy link
Author

I tested new changes, it works fine.

As for the HeatWTF, you are going to have to provide test data for that, and describe what it does, and when it needs to do it. etc. before I add any support for it.

This doesn't matter for my A/C. I think this is for another A/C models or just means nothing.

Dump result:

Timestamp : 000011.499
Library   : v2.7.20

Protocol  : ELECTRA_AC
Code      : 0xC35FE000600088660030001E9E (104 Bits)
Mesg Desc.: Power: On, Mode: 4 (Heat), Temp: 19C, Fan: 3 (Low), Swing(V): Off, Swing(H): Off, Light: -, Clean: Off, Turbo: Off, IFeel: On, Sensor Temp: 28C
uint16_t rawData[211] = {9044, 4436,  620, 1658,  592, 1656,  592, 518,  592, 518,  592, 520,  588, 520,  590, 1656,  592, 1658,  590, 1658,  592, 1656,  592, 1632,  616, 1658,  590, 1656,  592, 520,  590, 1656,  592, 520,  590, 496,  616, 518,  590, 520,  590, 518,  592, 518,  590, 1658,  592, 1658,  592, 1656,  592, 520,  590, 522,  588, 520,  590, 518,  592, 518,  592, 520,  590, 520,  590, 494,  614, 518,  592, 520,  590, 518,  592, 520,  590, 518,  590, 1658,  592, 1658,  590, 518,  592, 518,  592, 520,  590, 518,  592, 520,  590, 520,  590, 518,  592, 518,  592, 518,  590, 522,  590, 518,  592, 518,  592, 1656,  592, 520,  590, 518,  590, 520,  592, 1656,  590, 520,  590, 1658,  592, 1656,  590, 518,  590, 520,  590, 1658,  590, 1658,  592, 520,  590, 520,  590, 518,  590, 520,  590, 518,  592, 518,  590, 518,  592, 520,  590, 520,  590, 518,  592, 518,  592, 518,  592, 518,  592, 1632,  616, 1658,  592, 492,  616, 520,  590, 518,  590, 520,  590, 520,  590, 520,  590, 520,  592, 518,  590, 520,  590, 520,  590, 520,  590, 1658,  590, 1656,  592, 1658,  592, 1656,  592, 520,  590, 518,  592, 494,  616, 518,  590, 1658,  592, 1632,  616, 1656,  592, 1656,  592, 520,  590, 520,  592, 1656,  592};  // ELECTRA_AC
uint8_t state[13] = {0xC3, 0x5F, 0xE0, 0x00, 0x60, 0x00, 0x88, 0x66, 0x00, 0x30, 0x00, 0x1E, 0x9E};


Timestamp : 000191.589
Library   : v2.7.20

Protocol  : ELECTRA_AC
Code      : 0xC35FE040600088660030001EDE (104 Bits)
Mesg Desc.: Sensor Temp: 28C
uint16_t rawData[211] = {9072, 4436,  622, 1654,  594, 1654,  594, 516,  592, 518,  592, 516,  594, 516,  594, 1654,  594, 1654,  594, 1656,  594, 1654,  592, 1654,  594, 1654,  594, 1654,  594, 516,  594, 1654,  592, 518,  594, 516,  594, 516,  592, 516,  594, 516,  594, 518,  592, 1656,  592, 1656,  594, 1656,  594, 516,  592, 516,  594, 518,  594, 516,  594, 516,  594, 516,  592, 1656,  594, 516,  594, 516,  594, 516,  594, 516,  594, 518,  592, 516,  592, 1656,  594, 1656,  592, 518,  592, 518,  592, 516,  594, 518,  592, 518,  592, 516,  594, 516,  594, 516,  592, 518,  592, 516,  594, 516,  594, 518,  592, 1654,  596, 516,  592, 518,  594, 516,  594, 1656,  592, 516,  594, 1654,  596, 1654,  592, 516,  594, 518,  592, 1654,  594, 1656,  594, 518,  594, 516,  592, 516,  594, 516,  594, 516,  594, 516,  594, 516,  594, 516,  594, 516,  592, 516,  594, 516,  592, 516,  594, 518,  592, 1654,  594, 1654,  594, 518,  594, 516,  594, 516,  592, 516,  596, 516,  594, 516,  594, 516,  592, 518,  594, 514,  596, 516,  592, 518,  592, 1654,  594, 1654,  594, 1654,  594, 1654,  596, 516,  594, 518,  594, 516,  594, 516,  594, 1628,  620, 1654,  594, 1656,  594, 1654,  594, 516,  594, 1654,  594, 1656,  594};  // ELECTRA_AC
uint8_t state[13] = {0xC3, 0x5F, 0xE0, 0x40, 0x60, 0x00, 0x88, 0x66, 0x00, 0x30, 0x00, 0x1E, 0xDE};


Protocol  : ELECTRA_AC
Code      : 0xC35FE040600088650030001EDD (104 Bits)
Mesg Desc.: Sensor Temp: 27C
uint16_t rawData[211] = {9086, 4442,  612, 1634,  614, 1660,  588, 522,  586, 522,  586, 522,  588, 524,  588, 1660,  588, 1658,  588, 1660,  588, 1638,  610, 1662,  586, 1660,  588, 1660,  588, 522,  588, 1660,  588, 522,  588, 522,  588, 522,  586, 522,  588, 522,  588, 522,  586, 1660,  588, 1660,  588, 1660,  588, 522,  588, 520,  588, 522,  588, 522,  588, 522,  588, 522,  588, 1660,  588, 520,  588, 522,  588, 522,  588, 522,  588, 522,  586, 522,  588, 1660,  588, 1660,  588, 522,  588, 522,  588, 522,  588, 522,  588, 522,  586, 522,  588, 520,  588, 524,  588, 522,  588, 522,  588, 522,  588, 522,  588, 1660,  588, 522,  588, 522,  588, 522,  588, 1660,  588, 1660,  588, 522,  586, 1660,  588, 524,  586, 522,  588, 1660,  588, 1658,  590, 522,  588, 522,  588, 522,  586, 522,  586, 522,  588, 524,  586, 522,  588, 522,  588, 522,  588, 522,  586, 522,  588, 522,  588, 522,  588, 1660,  588, 1660,  588, 522,  588, 522,  588, 522,  588, 522,  588, 522,  588, 522,  586, 524,  588, 522,  588, 522,  586, 522,  588, 522,  588, 1660,  590, 1660,  588, 1660,  588, 1660,  588, 522,  588, 522,  588, 522,  588, 1660,  586, 522,  588, 1660,  588, 1660,  588, 1660,  588, 522,  588, 1660,  588, 1660,  588};  // ELECTRA_AC
uint8_t state[13] = {0xC3, 0x5F, 0xE0, 0x40, 0x60, 0x00, 0x88, 0x65, 0x00, 0x30, 0x00, 0x1E, 0xDD};


Timestamp : 000326.751
Library   : v2.7.20

Protocol  : ELECTRA_AC
Code      : 0xC35FE040600088650030001EDD (104 Bits)
Mesg Desc.: Sensor Temp: 27C
uint16_t rawData[211] = {9064, 4442,  614, 1660,  588, 1662,  588, 522,  588, 522,  588, 522,  586, 522,  588, 1636,  612, 1660,  588, 1660,  590, 1660,  588, 1660,  588, 1660,  588, 1660,  590, 522,  588, 1658,  588, 522,  586, 524,  588, 520,  590, 522,  588, 522,  588, 522,  588, 1660,  590, 1660,  588, 1660,  588, 522,  586, 522,  588, 522,  588, 522,  588, 522,  588, 522,  588, 1660,  588, 520,  588, 522,  588, 520,  590, 522,  588, 522,  588, 522,  588, 1660,  590, 1660,  588, 522,  588, 520,  588, 524,  586, 522,  588, 522,  588, 522,  588, 522,  588, 522,  588, 522,  586, 524,  586, 522,  588, 520,  588, 1636,  612, 522,  588, 522,  588, 522,  588, 1660,  588, 1660,  588, 522,  588, 1636,  612, 522,  588, 522,  586, 1638,  612, 1658,  590, 498,  612, 522,  588, 522,  586, 522,  588, 522,  586, 522,  588, 522,  588, 522,  588, 520,  588, 522,  588, 522,  588, 522,  588, 522,  588, 1660,  588, 1660,  588, 520,  588, 522,  586, 522,  588, 522,  588, 522,  586, 522,  588, 522,  586, 500,  612, 522,  588, 522,  588, 522,  588, 1660,  588, 1660,  588, 1660,  588, 1660,  588, 498,  612, 522,  588, 522,  586, 1660,  590, 522,  588, 1660,  588, 1660,  590, 1660,  588, 524,  588, 1636,  612, 1660,  588};  // ELECTRA_AC
uint8_t state[13] = {0xC3, 0x5F, 0xE0, 0x40, 0x60, 0x00, 0x88, 0x65, 0x00, 0x30, 0x00, 0x1E, 0xDD};

@crankyoldgit
Copy link
Owner

Thanks for confirming it is working. \o/

As for the WTF thing, 🤷 If it isn't breaking anything not being set, and everything is working for you, then lets leave it alone for now.

I'll consider this fixed ones the PR is merged.

crankyoldgit added a commit that referenced this issue Oct 25, 2021
* Add `(set|get)IFeel()`, `(set|get)SensorTemp()`, & `(set|get)SensorUpdate()` methods.
* Add and update Unit test coverage.

For #1644

Co-Authored-By: @Aculeasis
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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Pending Confirmation Waiting for confirmation from user wontfix
Projects
None yet
Development

No branches or pull requests

2 participants