-
Notifications
You must be signed in to change notification settings - Fork 836
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
Suggestion for enhanced Midea Library (Coolix library) setSensorTemp not recognized by AC #1318
Comments
That already exists. See: https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/classIRsend.html#a37d91b3a77b36509abdc53e2fec20a67 I'll look at the rest of the issue later when I get some spare time. |
If you checked the Wiki page(s) for this project, you would have found: https://github.com/crankyoldgit/IRremoteESP8266/wiki/ESP01-Send-&-Receive-Circuit#sender |
Ok, many thanks, I will give a try in the next days to give a feedback. |
That should work, assuming you want to send it with a single repeat. i.e. two messages.
If the hexadecimal code ( |
Yes, the data is from IRrecvDump but from a forked version on IRremote that supports 48bit. That shows 0xBA45 as address and the rest as data. I suppose that's a trick to send 48bit message without full modification of the library. Sending that data (with IRremote) works. And probably all my problems with IRremoteESP8266 were from GPIO0-2 Issue. |
I can't speak for someone else's library. They may have a different bit order for how they construct the message. So, only if you capture it with this library can you be sure. But hey, try it. Good luck. |
Ok, thanks, I've made a mistake considering both library as the same.
The unit is recognized as Coolix with only 24 bit data. Follow me temperature is already reported! Unfortunatly Zone Follow remains off also if enabled. I'm using a NodeMCU v1 because with ESP-01 (tried gpio 0-2-3) I always get strange data, didn't know why. It's like something other happen on the gpio (Ir receiver led keeps blinking "randomly"). In my experience that the first time with a similiar issue with esp01. Next follow_up (probably for closing the issues) will be about transmission and confirmation of support for that remote and AC unit (Kaysun) midea Based (recognized as Coolix) Meanwhile, here the message from Follow Me Mode, recognized correctly.
|
Ok, all command works with Coolix integration, except for the one I need... The setSensorTemp is not accepted/used by the AC. It seems does nothing, probably i'm doing something wrong. Here the code I use and tested ok with on/off, mode, setTemp, etc.
In the other end the message sent appear correct:
Here the original remote one:
Tested a second remote (working with the same AC unit).
The moving part (last 2 byte) is: First declared issues (not corresponding data sent/received) is still there.
Curiosity: I've tried freezing both remotes, they still sends data at 0°C (not grabbed with IRremoteESP8266 library but with IR remote). Same about over 30°C. So also Colix integration (that fixes limit between 16-30°C) is not completely true. |
Can you please make it clear in your reports/data when you are NOT using our library? The raw data you collected ( I've verified that our library is correctly sending a full length |
Yes, sorry. Last two posts are with Your library only. For sending and receiving i'm using two esp8266 board (wemos clone), both with Your library, one with the sending sketch above (modified version of the argo example) and the other with IRreceiveDumpV3 or V2. |
Please post your code for that. You haven't provided that. As far as I can tell via my own testing, |
Here the code, I've seen now the error...
The fault I suppose is in However I can't understand why with Coolix Integration works flawlessly with all commands but not with the |
Corrected code now works, device responds correctly. Final report is: My Device KaysunAC works with Coolix Integration for all commands except FollowMe mode ( My Device also works correctly with Midea Integration for all commands, excpept FollowMe that is not implemented (more data below). The FollowMe code from the remote, if replied to the device, works and sets AC room temperature to sended value). Remote used for tests is RG57A6/BGEFU1. The FM mode is listed in the google-sheet from cpp (https://docs.google.com/spreadsheets/d/1TZh4jWrx4h9zzpYUI9aYXMl1fYOiqu-xVuOOMqagxrs/edit?usp=sharing) Thanks for the support, hope that can be helpfull for full integration |
Any chance you can provide us with the Model number for the actual Kaysun A/C so we can add it to the list of supported devices? |
Can you elaborate/expand on this please?
So |
* Verify `sendMidea(0xA4A3477F1979)` decodes properly. Ref: #1318 (comment) For #1318 * Update supported Kaysun remote models. For #1318
AC Unit is "Kaysun Casual CF". Addititional remote working with this is RG57B/BGE (the one supplied with the device), correctly reported from Your library as Coolix Byte[4], converting 17 from hex to dec gives me 23, that's 1 more of display °C (22) That's not my sheet, is the one listed in the ir_Midea.cpp from your library, I've supposed that it's for °F and so I've listed some data messages in °C to explain how I suppose it works. |
Thanks. I'll update that it supports it under Coolix in a moment.
Ah. Okay. I get it now. I was confused, obviously. This is the range we currently allowed for/assumed:
|
Have to re-test with your library but as per assumption 0°C would be I have to take some dump with your library to confirm that, but (testing with the other lib) I've seen that the device goes down and still trasmit at 0°C. For max temp I have to test it (max reached was 27°C but "limited by the environment"), I haven't found a secure way to heat the remote without damaging it. I suppose that 30 to 50°C can be reached The actual grabbed data is the following:
17°C packet was created manually and it works. Before tomorrow I can add other values (down to 0°C), and, if a good way is found, also values over 25. |
I've updated the branch so you shouldn't need to I'll try looking into the rest of it later today/tonight. |
Ok, tomorrow I will test. For FollowMe last byte I think that the problem is in last two bit. Also as reported here (#484) in FollowMe Messages last two bit are
|
Hopefully make ZoneFollow work better. Ref: #1318 (comment)
I've added setting the 2nd last bit (2nd least significant bit) to Zone Follow's control, to the branch. Let me know how it goes. |
* Move to Bit field notation. (FYI @siriuslzx) * Reduce code duplication. * Code & comment style cleanup. For #1318
All confirmed working:
In receiver is always reported Here the test code fully working:
Tell me if "timer on" and "timer off" mappings are needed. |
Okay. Thanks for the confirmation and feedback. I'll look at setting the ZoneFollow fan mode when ZoneFollow/Sensor Temp is set. And potentially reversing it when it's cleared/unset etc. As for Timers, they are really a low priority. But if you want to do the analysis, I can try to implement it somehow. |
Includes unit test for detection. Ref: #1318 (comment)
I should have improved ZoneFollow/FollowMe/SensorTemp etc setting and detection. Let me know how it goes etc. |
Sorry for the delay.
It seems that ignores the "fanMode" implementation.
About Timers: Data seems to not being recognized by the library, here some grabs of Timers ON and OFF, at this stage I can't decode the message logic.
|
* Add a unit test to verify ZoneFollow Fan speed is set when SensorTemp is set. * No code changes, just a unit test confirming all is working. For #1318 (comment)
I think you're not using the latest version of that branch. My tests indicate it's working as inspected. See 44ef381 for how I tested/verified it. I can also tell you're using an old version of that branch because it's listing "Zone Follow: Off" which was fixed a few commits back. i.e. I think you need to update, and rebuild your both your sender and decoder binaries. As for the timer messages. They (unfortunately) don't follow the Coolix protocol's integrity check, which is a byte, followed by the same byte but inverted. e.g.
Thus, we can't decode it as If we want to add native ability to send & decode these Coolix-like messages to the library, we will have to add it under a different protocol. Honestly, I think it will be a mess to shoe-horn support for them into the |
I think the same about timers, if it was easy (like in Midea) it would be a feature, but at this stage is a loss of time. |
Hopefully your rebuild went well, as per the unit test example I added, the following should build/send your
|
Confirmed working. Here the code and the result.
I think that now all the work is done. |
* Increase sensor temp range. * using `setSensorTemp()` now correctly sets up ZoneFollow mode. * ZoneFollow mode detection. * Misc code cleanup. * Refactor code to use bit fields. * Additional & updated Unit tests. * Add support for fan vane step commands. Fixes #1318 * Confirmed working by user in #1318 (comment)
@fraschizzato Thanks for the confirmation. Sorry it took so long to resolve it all. |
_v2.7.13 (20201125)_ **[Bug Fixes]** - Fix crash when `IRac::sendAc(state_t, *state_t)` called with SAMSUNG_AC & `NULL` (#1341 #1339) - Mitsubishi112 & 136: `setSwingV()` incorrectly sets mode. (#1337) - Typo preventing RC6 from compiling when other protocols disabled. (#1332 #1331) **[Features]** - Coolix: Improve Sensor(ZoneFollow) and add Vane Step support. (#1340 #1318) **[Misc]** - refactor ir_Coolix (#1340) - refactor ir_Mitsubishi (#1336) - refactor ir_MitsubishiHeavy (#1333)
## _v2.7.13 (20201125)_ **[Bug Fixes]** - Fix crash when `IRac::sendAc(state_t, *state_t)` called with `SAMSUNG_AC` & `NULL` (#1341 #1339) - Mitsubishi112 & 136: `setSwingV()` incorrectly sets mode. (#1337) - Typo preventing RC6 from compiling when other protocols disabled. (#1332 #1331) **[Features]** - Coolix: Improve Sensor(ZoneFollow) and add Vane Step support. (#1340 #1318) **[Misc]** - refactor ir_Coolix (#1340) - refactor ir_Mitsubishi (#1336) - refactor ir_MitsubishiHeavy (#1333)
FYI, the changes mentioned above have now been included in the new v2.7.13 release of the library. |
Can i manage to send this sensor temp via irmqttserver example file? I modded my AC so its using outside air to cool its compressor... but now.... the AC shuts off when the outside temperature is below 17°C... so i want to emulate like 25°C so that the compressor will never stop. |
By default, no. You will either have to send a pre-captured The Of course, you can alter the code add what ever you like (yay for Open Source): Lines 495 to 563 in ea5d911
Note: Sensor Temps normally need to be sent at regular intervals to the A/C in order for them to work. i.e. If the A/C doesn't see a sensor message in the last X minutes, it defaults to normal operation. |
@drschnalli |
I'm trying to add some commands to Midea library, but at this time I can't really understand how.
Tried to pass the single command modifying the Swing command but without success.
The commands are related to the follow_me function. The goal is to use an esp to send room temperature to the ac, acting as remote thermostat.
I've grabbed a lot of data and get it work with arduino (IRremote library) and attiny85.
The tipical messages is: 0xBA45 (address) and 0xD22D0EF1 (message)
The address is always the same, message is for half Room Temperature and the other half Temperature Setted.
In that case:
Byte1 (D2) is room temperature 18°C - Hex conversion of the Decimal RoomTemp+192
Byte2 (2D) is complementar value of Byte1 --> So FF-D2 =2D --> FF-Byte1 = Byte 2
Byte3 (0E) is Temperature setting and Mode --> first nibble is temperature accordingly to the midea table, second nibble is the mode accordingly the same table
Byte4 (F1) the same as byte2 but for byte 3
The setting in the message does not affect the ac operational mode, so if the messages says 30°C Cool but the AC is at 17°C Heat it will remain 17°C Heat.
The Remote used is a RG57A7/BGEF - The AC is a Kaysun (Midea). Other working remotes with the device are RG57A6/BGEFU1 and RG57B/BGE (the one supplied with the AC but without FollowMe function - however the AC supports It)
All the grabbed data is in this google sheet: https://docs.google.com/spreadsheets/d/1f4dTW9s5U7kJhvi8UtJVX93kKzXYAMLAMR5qrxaTaxc/edit?usp=sharing
The messages are used also if FollowMe Function is not enabled in the AC (If I enable the function in another room and then put the remote back the ac starts using remote temperature as ambient temp).
Remote RG57A7/BGEF was used because the messages logic seems to be more simple to understand.
The remote sends a message every 2 minutes, after 7 minutes without messages the AC unit starts using it's own room temperature, a new message will restart the follow me mode.
In the link, in "MyTable" sheet there's a list of all tested commands 0 to 40°C
The other sheet are all the grabbed data with mode/temp/special function for each remote, also with some decoding.
As the variety of commands (and remotes) it could be usefull to add a generic send to the Midea Library that accepts byte data. Something like the ir_AC library from that fork of IRremote (https://github.com/marceloburegio/Arduino-IRremote)
I've made a simple sender with esp-01 but the data sended is not working - checked with arduino receiver and messages are not the ones I send. I don't think is an hardware fault but it would be great If someone can post a working circuit schematic.
I was Using GPIO2 and TSAL6400, tried with/without 2n2222 transistor and/or different resistor.
Also the signal is too low and I can't reach distance over 1meter (neither the "bad" message can be received). Original remote does flawlessly about 7-8 meters (not tested over - end of the room XD)
The room temperature is achieved with DS18B20 using RX-Pin that I didn't use.
Any help is apreciated, thanks in advance.
The text was updated successfully, but these errors were encountered: