-
Notifications
You must be signed in to change notification settings - Fork 835
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 Haier YR-W02 #485
Comments
Looks like you have a longer variant. The one we have existing code for is 9 data bytes (72 bits) and yours is 14 data bytes (112 bits) I can probably knock something up in a day or so, that does basic sending/receiving but no decoding. |
Can you let us know what model the A/C unit is AND what model the remote is please! |
Remote is YR-W02, the unit is white, not sure how to find the exact model name. |
The remote is the most important bit, Thanks! Any idea roughly how old the unit is? Looking at your spreadsheet data ... I notice that every second bit seems to always be zero (0) and you have 28 bytes .. not 14. I think somehow you are doubling something somewhere with your calculations. |
* Basic sending and receiving support only. No state decoding. * Unit tests for YR-W02 support. Ref #485
Example dump from the new branch
|
Unit name is HSU-09HMC203 |
@non7top Thanks for the copy of the dump. It highlighted there was subtle error in it's display of the state code in the DumpV2 prog. i.e. it shouldn't display I've added two more commits to that branch/PR. Care to test it again please? |
Here are the captures, checksum seems to be just a sum of all previous bytes
|
Excellent. Thanks. Great news that you've worked out the checksum. That is typically the most challenging bit. In the meantime, I'll merge the PR into the master branch. |
* Basic sending and receiving support only. No state decoding. * Unit tests for YR-W02 support. * Add Haier YR-W02 support to IRMQTTServer example. Ref #485
I added spreadsheet to dropbox and here are the details: Bit 1-2 - header Bit 3 - temperature Bit 4 - swing Bit 8 - health Bit 9 - power Bit 11 - fan Bit 13 - turbo mode Bit 15 - mode Bit 17 - sleep mode Bit 26, 27 28 (+probably 25) - Checksum |
Correction: |
I think you mean Byte or Nibble (https://en.wikipedia.org/wiki/Nibble) e.g. There is no Byte 26, 27, & 28. There are only 14 bytes in the state/message. I concur that it looks like the last byte (i.e. state[13]) (Your 27-28) is the sum of the previous bytes. (well, all I checked was it behaves like it is, not verified) You need to work out what those bytes just before the checksum are, otherwise we can't calculate a new desired state. If the remote has a clock on it, it maybe be the time encoded into the signal. Check for that. It could also be timers or sleep modes etc etc. Basically there is something, maybe a mode, or some other data or state of the remote you need to workout before we can reproduce synthetically. |
Yup, you are right. state[12] is last button pressed And the checksum is two last octets of sum of all bytes. uint8_t state[14] = {0xA6, 0xEA, 0x00, 0x00, 0x40, 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x05, 0x75}; |
Wow. Excellent work. I would not have been able to work that out. Re: Checksum. Do you have a link to the manual for the device? |
Was only able to find it in russian https://mcgrp.ru/files/viewer/84556/16 |
Can you please re-verify your spreadsheet entry for |
Yup, apparently I mistyped that entry, correct one is (turbo button pressed) which seems to be correct |
Can you also please re-check that Fan 1 really is 6? I have a sneaking suspicion that it's 8. |
In the meantime, can you try the updated haier_yrw02 branch? It should allow construction of the state for the remote, and full mode decoding in IRrecvDumpV2. |
Ok, here are some findings. Fan is reproducible to be first nibble in bit 6. Current decoding works in all situations, except when Sleep mode is on. If Sleep mode is on, then first nibble still can decode fan state the same way as I provided, but second nibble seems to be random, at least I couldn't find any correlations. Considering this I'd rather skip setting Sleep mode at all (especially I don't find it usable).
More details about swing. One mode is only possible in heat, another one is only possible in other modes. This is how it can be set on remote, didn't try yet to set that manually. Following is possible in Heat mode: Following is possible in all other modes: Also turbo mode is not decoded, it sets fan to more high or more low speeds then standard values, like two additional fan modes. |
I've got a pending commit that fixes most of it, but I think your definition of what bits control Turbo is incorrect.
This has a
I think it's controlled only by the top 2 bits of nibble 13. (aka. top 2 bits of state[6]). The other odd-data detected when in sleep mode are possibly timer data. That's my guess. We are ignoring it for now, but we should probably work out what it is at some point. |
While I think of it, does setting Turbo mode affect the value of Fan at all? |
@non7top Friendly ping for you to try out the updated version and to give us some feedback. |
#487 has now been merged into the master branch. I'm considering this issue closed now. I'll leave it open for about a week to see if you've got any feedback on it before I close this issue out. |
## _v2.4.3 (20180727)_ **[Bug Fixes]** - Handle Space Gaps better in auto analyse tool. (#482) - Correct min repeat for GICABLE in IRMQTTServer. (#494) **[Features]** - Add static IP config option to IRMQTTServer (#480) - Full decoding/encoding support for the Haier YRW02 A/C. (#485 #486 #487) **[Misc]** - Update LG (28-bit) HDR mark and space timings. (#492) - Spelling and grammar fixes (#491)
FYI, the changes are now live in the new v2.4.3 release of the library. |
I was finally able able to get back to this project. Big thanks for making it happen and all your help with it. This worked:
|
Excellent. I'll mark this issue closed then. As it's now "live" in the latest version, if you find a problem please create a new issue for it. Hopefully you won't find any problems (haha .. yeah right! ;-) |
This seems to be a bit different from what's already present for Haier AC
Timestamp : 000176.865
Encoding : UNKNOWN
Code : 6BB7252B (115 bits)
Library : v2.4.2
Raw Timing[229]:
uint16_t rawData[229] = {2998, 3086, 2998, 4460, 568, 1640, 596, 492, 514, 1690, 590, 496, 566, 532, 592, 1596, 570, 1618, 518, 584, 590, 538, 524, 536, 568, 532, 590, 1596, 516, 612, 568, 538, 522, 1638, 586, 500, 512, 614, 568, 538, 520, 538, 586, 538, 566, 540, 520, 538, 586, 538, 522, 538, 588, 538, 568, 538, 520, 538, 586, 538, 566, 538, 520, 540, 588, 1596, 590, 536, 568, 538, 520, 1592, 640, 538, 520, 540, 588, 538, 568, 538, 516, 562, 566, 538, 518, 542, 586, 540, 566, 1596, 590, 538, 566, 538, 516, 544, 586, 538, 516, 542, 588, 540, 564, 540, 468, 590, 588, 538, 566, 540, 466, 590, 588, 538, 514, 544, 588, 538, 566, 538, 468, 1692, 606, 526, 466, 592, 588, 538, 568, 490, 588, 538, 566, 540, 466, 592, 588, 538, 566, 538, 466, 592, 588, 538, 568, 492, 586, 540, 566, 540, 468, 590, 588, 538, 568, 516, 488, 590, 588, 538, 568, 492, 588, 538, 566, 518, 488, 590, 588, 540, 564, 518, 490, 590, 588, 538, 562, 496, 588, 538, 566, 518, 488, 590, 588, 538, 562, 522, 488, 588, 590, 538, 560, 498, 588, 540, 564, 522, 486, 590, 590, 538, 560, 524, 488, 588, 588, 1598, 514, 608, 564, 1600, 548, 536, 586, 538, 568, 1594, 590, 1618, 578, 1606, 606, 1582, 590, 1596, 590, 1616, 580}; // UNKNOWN 6BB7252B
This is what I've come up with so far
https://www.dropbox.com/sh/w0bt7egp0fjger5/AADRFV6Wg4wZskJVdFvzb8Z0a?dl=0
Can't figure out about the last three bits, apparently there should be a checksum there. Some help would be appreciated.
The text was updated successfully, but these errors were encountered: