-
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
Supporting Panasonic AC/Heat pump indoor unit CS-E9CKP remote A75C2295 #1307
Comments
It looks like we already support Panasonic CKP A/Cs. Line 147 in 3787433
Have you tried setting the model to IRremoteESP8266/examples/TurnOnPanasonicAC/TurnOnPanasonicAC.ino Lines 55 to 61 in 3787433
|
Yeah, I should have mentioned that in the original post, I've tested all variants of Panasonic in that enum But to eliminate any other issues with my previous attempts, I took the sample code and added it to a simple PIO project and tested that again and didn't get any reaction on the heat pump. There is a lot of listed CKP/5 units with their remotes here: I could try to take a stab at this, but I am afraid it's a little bit over my head. |
Can you record your remote with DumpV2+? |
Thanks for confirming you've tried it. I'd like to start with you (@taxx) capturing some raw data from the actual remote. e.g. We are going to follow https://github.com/crankyoldgit/IRremoteESP8266/wiki/Adding-support-for-a-new-IR-protocol and then https://github.com/crankyoldgit/IRremoteESP8266/wiki/Adding-support-for-a-new-AC-protocol Because of the existing work by the HeatpumpIR code, we can save a lot of reverse engineering effort, but I'd like to collect real data to be able to verify against etc. So, provide some of that and we can then begin to add support for it. |
Thanks! |
Finally managed to get some data in the serial monitor while sending signals from the remote, using the IRrecvDumpV2 code. But I must say I am a bit lost, been reading the details in the links. Especially in regards to "Get basic support for the new IR protocol working first". As panasonicAC is implemented there are probably changes to that needed? Anyway I started recording with everything set to auto (mode, fan, swings) on the remote and then adjusted the temperature from lowest (16) to highest (30). Took the results and ran the python tool (auto_analyze_raw_data.py). Not really understanding what I am doing, I went on following the guide to add a protocol. The generated code was referencing a constant called But when I came to the changes in My ugly changes compiles now but I can't see anything fancy in the decode. Attached temp.txt with the recordings from changing the temperature. I am obviously lost here :-) |
Nice to see some data. |
The problems I had before was that I didn't get any signals at all when I was running my TSOP4838 with 3.3V from the ESP32/ESP8266. I've since switched over to a Wemos D1 mini with the IR receiver powered from 5V. Good tips in the troubleshooting guide! I was very close last time and using a empty box as a tunnel to shield the receiver from any other signals. I've ran the same sampling as before (16-30 C, all other in auto) all lights turned of and waiting a couple of seconds between each transmission. Is it better now? |
I've had a detailed look at the signals captured in You may need to wait to try it against a better hardware IR demodulator. As for the issue in |
Can I identify how good the captures are by myself somehow? What are the telltales? (To be able to improve my setup) |
It's hard to quantify exactly. It's a good signal when the values (depending on their position) are close to one another. BTW, Panasonic uses a frequency of 36.7kHz, most IR demodulators are expecting 38kHz. Depending on the quality of the demodulator, sometimes it works okay-ish, or sometimes (probably yours) it doesn't behave well. It's hit and miss. I'd suggest getting a demodulator that is specific for the Panasonic protocol/frequencies. |
The demodulators arrived today and I've hooked up a 36Khz variant (TSOP4836) to my setup. I do notice that the number of bits is more static (136 bits) than before. Took the generated code from the python tool (auto_analyze_raw_data.py) and switched out my attempts on a protocol decoder. Running the commands again against a IRrecvDumpV2, I can't see any apparent differences in the outputs. |
Good news. Those readings are clean/good. I'll take a look at building a basic sender/decoder soon. |
* `sendPanasonicAC64()` & `decodePanasonicAC64()` added * Unit tests for the above. * LSBF order determined by Temperature ranges. For #1307
@taxx Can you please download and test branch: https://github.com/crankyoldgit/IRremoteESP8266/tree/PanasonicAC64 Hopefully, it should decode and send the messages for your A/C.
There is a LOT of duplication in the messages you collected. It is possible we may be able to shrink it further to 32 bits, because even the resulting code detected seems to have every second 8-bit chunk of data be a repeat of the preceding 8 bits. I need you to play around with your remote to see if some assumptions are correct. e.g.: |
Like magic! I'll see if I can solve the logistics of sending signals to the wall unit this weekend. Meanwhile, I've started playing around with it and recording things to a spreadsheet. About the on/off command, I wonder if there is anything with that timer thing from the HeatPumpIR library, the on/off sends the same command: Noticed that there are some signals that are not being decoded, and shows a different length of 101 bits. Again huge thanks for taking a look at this! About the duplication, could there be some redundancy in how the remote sends the signals to ensure reception? |
Just taking a look at your spreadsheet now. In other words, your alignment into bytes is wrong: https://docs.google.com/spreadsheets/d/1V7Z4edgjPXNH9vbu0QUJQzha7eIfboO-I2pNhITKtEQ/edit#gid=0&range=D2:K2 |
FYI, don't go crazy recording the codes yet. The data you've collected shows it can be compressed further, so the values will change soon. |
e.g. swing, quiet, & powerful. For #1307
I've updated that branch to handle "short" messages (e.g. swing, quiet, & powerful) |
Thanks for your patience with this noob I am :-) The shorter commands seems to decode into |
* Rename the protocol: - 64 bits to 32 bits. - from `PANASONIC_AC64` to `PANASONIC_AC32` - now `sendPanasonicAC32()` & `decodePanasonicAC32()` - Rename all the constants. * De-duplicate the encoded data to reduce the bit size to half. Do the reverse for sending. * Update unit tests accordingly. * Remove use of `address` & `command` in the decoded results. Note: All previous collected data/codes will need to be redone/recaptured/converted. e.g. `0x0D0DF2F23636FCFC` becomes `0x0DF236FC` & `0x35358686` becomes `0x3586` etc. For #1307
Okay, I've updated the branch again (same name/url) but it's now 32bits/16bits instead of 64/32bits. The codes/values reported from the captures should now be stable. i.e. Go forth onto the analysis phase of |
Managed to do some the Things look good overall on the 32/16 bit protocol, but there are some oddities. // Quiet declared as: const uint32_t Quiet = 0x3381;
// From the loop() part
irsend.sendPanasonicAC32(Quiet);
// Wall unit turns off if it was on
delay(10000);
irsend.sendPanasonicAC32(Quiet);
// Wall unit turns on if it was off
delay(10000); I'll do some more hands-on later today when I am actually in front of the wall unit. |
If it is a 16bit code, you'll need to tell |
Great now it works to send those codes! |
Running the
(Temp: 22 C, Mode: Auto, Fan: Auto, H swing: Auto, V swing: Auto, Clock: Blinking) Should I be getting something like |
You need to rebuild & upload using the latest commits in that branch, it should be reporting as 32 |
* `sendPanasonicAC32()` & `decodePanasonicAC32()` added. * Support the short (16 bit) version of the messages used for swing, quiet, & powerful. * Unit tests for the above. * LSBF order determined by Temperature ranges. For #1307
Started recording data to the spreadsheet, starting to see some patterns, I think. I did however encounter "commands" related to timer logic that isn't being decoded, 210 bit length messages. Attached a sampling of those messages below. From my point of view it's nothing I intend to use though, but I can of course try to decode them as well. |
Sigh. This is information I wish I had had much sooner. I can't fit that into the way I've currently designed the code for this protocol. In short, it boils down to 96 bits of information. i.e. Larger than 64 bits. To support those messages natively, it would require a major redesign & rewrite of the code. That's not something I want to do for a feature that probably won't get used much. (i.e. Timers) So, I'm going to say, lets forget about timers. :-/ |
Any tips on how to implement code changes to the I also need some eyes on my spreadsheet to get feedback if I am on the right track or not. |
You can leave that to us, once you've got a firmer understanding of what bits control what etc.
You can ignore that. This "protocol" won't use the same
To me it seems you're on the right track so far.
I concur. The remote might have a temperature sensor in it and tell the A/C what "auto" mode to be in. Try putting the remote in the refrigerator or neat a heater to see if the values change based on the temp the remote thinks it is. If not, we can construct a table or the needed logic to work out what "auto" value to use based on the requested temp. |
_v2.7.12 (20201113)_ **[Bug Fixes]** - `defaultBits()` returned incorrect result for `PANASONIC_AC` (#1307 #1314) - Fix LG2 timings and refactor `decodeLG()` (#1298 #1304) **[Features]** - Midea: Add support for "Follow Me"/Sensor, Turbo, Light, & Timers (#1318 #1327) - SharpAc: Add model support for A705 (#1309 #1313) - Add basic support for Panasonic A/C 32bit/16bit protocol. (#1307 #1316) - Add support for Elite Screens protocol. (#1306 #1310) - IRrecvDumpV2+: Add tolerance setting. (#1292) - Add basic support for the Mirage Protocol. (#1289 #1291) - Internationalisation Support - pt-BR: Add Portuguese/Brazilian support. (#1303) - de-DE: Backfill missing strings (#1294) - de-DE: update for recent addition of 'tolerance' (#1293) - de-DE: Translate root README.md into German (#1297) **[Misc]** - refactor ir_LG (#1325) - refactor ir_Kelvinator (#1317) - refactor ir_Hitachi (#1308) - refactor ir_Goodweather (#1295) - refactor ir_Electra (#1290) - refactor ir_Daikin (#1288) - Update Kaysun supported models. (#1322) - fix typos/spelling mistakes (#1301) - Add some missing Doxygen class/data-type descriptions. (#1287)
_v2.7.12 (20201113)_ **[Bug Fixes]** - `defaultBits()` returned incorrect result for `PANASONIC_AC` (#1307 #1314) - Fix `LG2` timings and refactor `decodeLG()` (#1298 #1304) **[Features]** - Midea: Add support for "Follow Me"/Sensor, Turbo, Light, & Timers (#1318 #1327) - SharpAc: Add model support for A705 (#1309 #1313) - Add basic support for Panasonic A/C 32bit/16bit protocol. (#1307 #1316) - Add support for Elite Screens protocol. (#1306 #1310) - IRrecvDumpV2+: Add tolerance setting. (#1292) - Add basic support for the Mirage Protocol. (#1289 #1291) - Internationalisation Support - `pt-BR`: Add Portuguese/Brazilian support. (#1303) - `de-DE`: Backfill missing strings (#1294) - `de-DE`: update for recent addition of 'tolerance' (#1293) - `de-DE`: Translate root README.md into German (#1297) **[Misc]** - refactor ir_LG (#1325) - refactor ir_Kelvinator (#1317) - refactor ir_Hitachi (#1308) - refactor ir_Goodweather (#1295) - refactor ir_Electra (#1290) - refactor ir_Daikin (#1288) - Update Kaysun supported models. (#1322) - fix typos/spelling mistakes (#1301) - Add some missing Doxygen class/data-type descriptions. (#1287)
FYI, the changes mentioned above have now been included in the new v2.7.12 release of the library. |
I'm going to close this issue. When you've finished your analysis/breakdown of the message bits, please create a new issue and reference this old one. |
Any progress on this? I've got the same setup at home can't wait to be able to control it :P |
@Fettkeewl I'm sure @taxx would like some extra eyes & effort to help on the analysis of the bits in the message. See the wiki about how to do it for aircons. |
@crankyoldgit I'm sorry but such analysis is beyond my knowledge, I struggle with understanding bits and bytes specially with RF/IR. I've tried a couple of times, without the proper education it's just to hard to follow 😛 However: if it's any help in making some progress I found this lib on github
|
@Fettkeewl That code might work. I can't tell, as I don't have access to a CKP AC device. |
Aright, having tried it out I can confirm that
Now what @crankyoldgit :) How do we get this in to IRremoteESP8266?
|
FYI see https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/classIRsend.html#ab3b6d36c9b5d26c400526717d433ed2d Thanks for confirming that code works. I'll look at re-working it into our framework. Are you able to capture the on/off messages? If so, please provide them. |
Feature request
Hello and thanks for all the awesome work on this library!
I am trying to control one of my older AC / Heatpumps using this library
(Actually using esphome that uses this library with a custom climate component)
But I fall short on that there is no support for my particular unit in the library.
The heat pump is an CS-E9CKP and the remote is an A75C2295
Browsing though the code here:
https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Panasonic.cpp
I saw a reference to HeatpumpIR and this code:
https://github.com/ToniA/ESPEasy/blob/HeatpumpIR/lib/HeatpumpIR/PanasonicHeatpumpIR.cpp
Checking that code there seems to be an implementation for the CKP heat pump and the A75C2295 remote.
https://github.com/ToniA/arduino-heatpumpir/blob/master/PanasonicCKPHeatpumpIR.cpp
https://github.com/ToniA/arduino-heatpumpir/blob/master/PanasonicCKPHeatpumpIR.h
I tested a small sample code from HeatpumpIR and the indoor unit reacted to the commands so the needed ir-stuff is in there.
Any possibility of having support for this heat pump in your library?
Best Regards Tobias
The text was updated successfully, but these errors were encountered: