IRremoteESP8266 icon indicating copy to clipboard operation
IRremoteESP8266 copied to clipboard

Haier AC does not power on in correct mode

Open geertvda opened this issue 3 years ago • 1 comments

Version/revision of the library used

v2.8.4

Describe the bug

When sending a command to the airco via the MQTT server example using the detailed "Aircon" tab, the airco never goes in the desired "heat" mode, the unit shows a blue symbol which seems to indicate "cool". When sending the hex code captured from the original remote, it works fine.

To Reproduce

Send any command via the detailed "aircon" page on the mqtt server. Same behaviour via the Tasmota integration.

Expected behaviour

The airco should go to the selected mode

What brand/model IR demodulator are you using?

Wemos D1 mini with the IR shield.

Circuit diagram and hardware used (if applicable)

https://www.wemos.cc/en/latest/d1_mini_shield/ir.html

Has this library/code previously worked as expected for you?

Yes, works perfectly with an identical setup on a different brand of AC.

Other useful information

The AC unit is Haier AS25TAEHRA-CLC, installed a week ago. Same behaviour with a more powerful unit installed at the same time. Both remotes are YR-HE, as can be seen here: https://intech.cool/946-thickbox_default/pilot-bezprzewodowy-yr-he.jpg

The protocol is recognized as the 112-bit YRW02, and the power, mode, swing, fanspeed settings seem to decode correctly, but when sending via the library, the 8th byte is always "2" instead of "0" in the resulting hex code, no matter what other settings I choose. When sending the hex code with the "2" replaced by "0" it seems to work fine. For example, increasing temp from 17>18, mode heat with fan set to minimum: physical remote: 0xA62A0000406000800000000000F0 generated by the library for the same settings: 0xA62A0002406000800000000005F7

From reading here, I understand that the third to last byte is "last button pressed", but that doesn't seem to matter for correct operation, but the 2 instead of zero seems to prevent going to the correct mode. I'm trying to read into the code where I can change this myself, but I'm by no means a code expert, and it will take me time to figure out how to do it.

brgds, geert

geertvda avatar Sep 28 '22 09:09 geertvda

0xA62A0000406000800000000000F0 generated by the library for the same settings: 0xA62A0002406000800000000005F7

This equates to: 0xA6, 0x2A, 0x00 [Bytes 0 to 2] and the odd byte in question is Byte 3, 0x02 or 0x00 by your collected data.

0x02 is 0b00000010 in binary. According to: https://github.com/crankyoldgit/IRremoteESP8266/blob/e6ec73c3b9f959b1c6ae939d15d25b2b47ae4416/src/ir_Haier.h#L220-L224

That's the Health bit/setting. Health is set/on by default. I suggest you turn that bit/setting off. It should then fix your problem. If you look at: https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/IRac.cpp#L1508

You will see the "Health" setting is controlled by the "Filter" setting. So, set filter toOff and it should do what you want. My guess is your A/C doesn't have the "Health" setting, or at least, it doesn't like it.

crankyoldgit avatar Dec 25 '22 08:12 crankyoldgit