-
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
Panasonic AC On and Off timer #544
Comments
@MikkelTb Nice work! Yes, after reading it a few time, I think I've got it. Just to confirm the edge cases. Can you please do the same analysis (for Bytes 19-21 and 25-26) for when the timers are Once we've confirmed/checked that info. I'll code it up. |
Are you sure about that? As the data/code seems to think it does, yet doesn't have Horizontal swing. |
Hi, I will provide the data for the timer, as soon I get home from work ;-) My AC has Swing "Up and Down", and not a Swing for "Left and right" Up and Down must be Horizontal |
@MikkelTb I got impatient and coded up what I think it probably is based on the available data. Can you please try out this branch? https://github.com/markszabo/IRremoteESP8266/tree/panasonic-timers I still want that data I asked for from earlier. ;-) |
Remote control: (toggel on/off) -> 23C, Fan Auto, Swing Auto, Quiet Off, Powerful Off On Timer set to 00:00 (On timer set to 0:00 but is not active) On Timer set to 00:10 On Timer set to 00:00 On Timer set to 00:00 Byte 25 and 26 Byte 19,20 and 21 Byte 21 and the last 4 bit in byte 20 -> 0x800 ->b1000 0000 0000 <- Remove the first bit from left ->b000 0000 0000 |
Hi @crankyoldgit . I have testede the latest release, and it seem to Work. But it does not Work on my AC I have done a small test. 2# Send the settings from the remote to the IR receiver. (And sorry i have add "const uint8_t kPanasonicAcSwingHOff = 0x00;" in "ir_Panasonic.h") 1# Byte nr.: 14 and 22 is different from The Code, to the remote. Byte 14 Byte 22 |
Re-stating this: |
Can you also include the source code you are using to produce the synthetic states/messages? |
Just let me know, if you want anything else. |
Byte 22/
The bits in Byte 14/ |
Thanks for the image. Like you. I've go no idea what series that is (But by the production date, it's OLD ;-) In the meantime. Can you do some captures/tests to check if Byte 14/ |
I found a manual online, there also seems to be an "Odour wash" button on the remote, can you see what changes in the |
OLD 😖 I got the system in 2008, and it was brand new.... but yes the date is 2003... I will try to solved/test the Byte 14/state[13] on my AC. And thanks for you work 👍 |
"Odour wash" yes I have that button. But I have never figure out what that means. But I will collect some information |
Well, we can see if it changes the |
Looks like a CKP serie from the label |
This is the information, when i push the button (i press the button 5 times): Timestamp : 057505.742 uint16_t rawData[263] = {3496, 1734, 506, 366, 448, 1294, 504, 368, 498, 374, 452, 418, 448, 424, 444, 428, 450, 422, 446, 426, 450, 420, 448, 424, 452, 418, 448, 422, 444, 1300, 498, 374, 504, 368, 448, 424, 452, 418, 448, 424, 444, 428, 450, 422, 446, 1296, 500, 1242, 502, 1242, 504, 368, 498, 374, 452, 1292, 504, 366, 450, 422, 444, 426, 450, 420, 446, 424, 452, 418, 448, 424, 444, 428, 450, 422, 444, 426, 450, 420, 446, 424, 452, 418, 448, 422, 444, 428, 450, 422, 446, 426, 452, 420, 446, 426, 452, 418, 448, 424, 442, 428, 448, 422, 444, 426, 450, 420, 446, 426, 452, 418, 448, 424, 444, 428, 450, 422, 444, 1298, 500, 1244, 500, 372, 444, 428, 450, 422, 446, 426, 452, 418, 448, 10020, 3500, 1732, 498, 372, 452, 1290, 506, 366, 450, 422, 446, 426, 452, 420, 448, 424, 452, 418, 448, 422, 444, 426, 450, 420, 446, 426, 452, 420, 446, 1296, 500, 370, 444, 428, 450, 422, 446, 426, 452, 420, 446, 424, 442, 428, 448, 1294, 502, 1240, 504, 1238, 506, 366, 448, 422, 444, 1298, 498, 374, 452, 418, 448, 424, 444, 428, 450, 422, 446, 426, 450, 420, 446, 424, 452, 418, 448, 422, 444, 428, 450, 420, 446, 1298, 498, 1244, 500, 1242, 502, 368, 446, 1298, 500, 1244, 500, 372, 444, 428, 450, 1292, 504, 368, 446, 1296, 502, 370, 444, 426, 452, 1290, 504, 1238, 506, 366, 450, 422, 446, 1298, 498, 1246, 500, 372, 444, 428, 450, 1294, 452, 420, 446, 1296, 448, 422, 444}; // UNKNOWN 1FB51F79 Timestamp : 057507.664 uint16_t rawData[263] = {3502, 1728, 502, 370, 498, 1246, 498, 372, 504, 366, 450, 422, 444, 426, 450, 422, 446, 426, 452, 420, 446, 424, 442, 428, 448, 422, 444, 428, 450, 1320, 476, 368, 500, 372, 442, 428, 450, 422, 444, 426, 452, 420, 446, 424, 452, 1318, 478, 1238, 498, 1246, 498, 372, 504, 366, 448, 1294, 502, 368, 498, 374, 452, 418, 448, 424, 444, 428, 450, 422, 446, 426, 450, 420, 446, 424, 452, 418, 448, 424, 444, 428, 450, 422, 446, 426, 452, 420, 446, 424, 442, 428, 448, 424, 444, 426, 450, 420, 446, 426, 452, 420, 448, 424, 444, 428, 450, 420, 444, 426, 450, 422, 446, 424, 454, 418, 448, 424, 444, 1326, 470, 1246, 500, 372, 506, 366, 448, 422, 444, 428, 450, 422, 446, 10022, 3498, 1732, 498, 374, 452, 1290, 506, 366, 450, 422, 446, 426, 452, 420, 446, 424, 452, 418, 448, 422, 444, 428, 450, 422, 446, 426, 452, 420, 446, 1324, 474, 370, 444, 426, 450, 420, 446, 424, 452, 420, 448, 424, 444, 428, 450, 1294, 502, 1240, 504, 1238, 506, 366, 450, 422, 446, 1298, 498, 372, 454, 418, 448, 424, 444, 428, 450, 422, 446, 426, 452, 420, 446, 424, 442, 428, 448, 422, 444, 428, 450, 420, 446, 1296, 500, 1244, 502, 1240, 504, 368, 446, 1296, 500, 1242, 502, 370, 446, 424, 452, 1292, 506, 366, 450, 1294, 502, 368, 446, 424, 452, 1290, 496, 1246, 498, 374, 452, 420, 446, 1296, 500, 1242, 502, 368, 446, 426, 452, 1290, 444, 428, 450, 1294, 502, 370, 446}; // UNKNOWN 1FB51F79 Timestamp : 057513.378 uint16_t rawData[263] = {3498, 1734, 496, 374, 502, 1240, 504, 366, 500, 370, 496, 376, 450, 420, 446, 426, 452, 418, 448, 424, 444, 428, 448, 422, 444, 426, 450, 420, 446, 1296, 500, 372, 506, 366, 448, 422, 446, 426, 452, 420, 446, 424, 452, 418, 448, 1294, 502, 1240, 504, 1240, 504, 366, 500, 370, 444, 1298, 498, 374, 504, 368, 448, 422, 444, 428, 450, 422, 446, 426, 452, 420, 446, 424, 454, 418, 448, 422, 446, 426, 450, 420, 446, 426, 452, 418, 448, 422, 444, 428, 450, 422, 444, 426, 450, 420, 446, 424, 452, 418, 448, 424, 444, 428, 450, 420, 446, 426, 452, 420, 448, 424, 442, 428, 448, 422, 444, 426, 450, 1292, 504, 1266, 478, 366, 502, 370, 446, 426, 452, 420, 450, 420, 442, 10024, 3496, 1736, 442, 428, 450, 1294, 502, 368, 446, 424, 452, 418, 448, 424, 442, 428, 450, 422, 446, 426, 452, 420, 448, 424, 452, 418, 450, 422, 444, 1298, 498, 372, 452, 420, 448, 424, 444, 428, 450, 422, 446, 426, 452, 420, 446, 1296, 502, 1242, 502, 1240, 504, 368, 448, 424, 444, 1300, 496, 374, 452, 420, 448, 424, 442, 428, 450, 422, 444, 426, 452, 420, 446, 424, 452, 420, 448, 422, 444, 426, 450, 420, 446, 1298, 448, 1296, 500, 1242, 502, 370, 446, 1296, 500, 1244, 502, 368, 446, 426, 452, 1290, 506, 366, 448, 1294, 502, 368, 446, 424, 452, 1290, 444, 1298, 498, 374, 450, 420, 448, 1296, 450, 1294, 502, 368, 446, 426, 452, 1290, 444, 428, 450, 1294, 452, 420, 448}; // UNKNOWN 1FB51F79 Timestamp : 057514.616 uint16_t rawData[263] = {3504, 1728, 502, 368, 498, 1244, 502, 370, 496, 376, 502, 368, 446, 424, 452, 420, 448, 422, 444, 428, 450, 422, 444, 426, 450, 420, 446, 424, 452, 1290, 496, 376, 502, 370, 446, 426, 452, 420, 448, 424, 442, 428, 450, 422, 446, 1298, 498, 1244, 500, 1242, 502, 370, 498, 374, 452, 1318, 478, 366, 502, 370, 446, 426, 450, 420, 448, 424, 452, 418, 450, 422, 444, 428, 450, 422, 446, 426, 452, 420, 446, 424, 442, 428, 448, 422, 444, 426, 450, 420, 446, 424, 452, 418, 448, 424, 444, 428, 448, 422, 446, 426, 450, 420, 446, 424, 454, 418, 448, 424, 444, 426, 452, 420, 446, 426, 452, 418, 448, 1294, 502, 1242, 504, 368, 498, 372, 454, 418, 448, 424, 444, 428, 450, 10018, 3504, 1728, 502, 368, 448, 1296, 500, 370, 444, 428, 450, 422, 446, 426, 450, 420, 446, 424, 442, 428, 448, 422, 444, 426, 450, 420, 446, 426, 452, 1292, 506, 366, 450, 422, 446, 426, 452, 420, 446, 424, 452, 418, 448, 422, 444, 1298, 498, 1246, 500, 1244, 502, 370, 446, 426, 450, 1292, 504, 366, 448, 424, 444, 428, 450, 422, 444, 426, 450, 420, 446, 424, 442, 428, 450, 422, 444, 426, 450, 420, 446, 426, 452, 1290, 506, 1236, 498, 1246, 500, 372, 452, 1290, 496, 1248, 498, 374, 452, 418, 448, 1296, 500, 370, 446, 1298, 498, 372, 452, 420, 448, 1294, 502, 1242, 504, 368, 448, 424, 454, 1290, 496, 1246, 498, 374, 452, 420, 446, 1296, 450, 420, 446, 1298, 448, 424, 452}; // UNKNOWN 1FB51F79 Timestamp : 057516.059 uint16_t rawData[263] = {3498, 1732, 498, 372, 504, 1266, 480, 364, 502, 370, 446, 426, 452, 420, 448, 424, 454, 418, 448, 422, 446, 426, 450, 420, 446, 426, 452, 420, 448, 1294, 502, 370, 498, 374, 450, 420, 446, 424, 452, 418, 448, 422, 444, 426, 450, 1292, 504, 1238, 506, 1236, 498, 374, 502, 368, 446, 1324, 472, 372, 496, 376, 450, 422, 446, 426, 452, 420, 448, 424, 444, 428, 450, 422, 444, 428, 450, 420, 446, 426, 452, 418, 448, 424, 444, 428, 450, 422, 446, 426, 450, 420, 446, 424, 442, 428, 448, 422, 444, 426, 452, 420, 446, 426, 452, 420, 448, 424, 444, 428, 448, 422, 446, 426, 452, 420, 448, 424, 442, 1300, 496, 1246, 498, 374, 504, 368, 448, 422, 444, 426, 450, 422, 446, 10022, 3498, 1734, 496, 374, 452, 1292, 504, 366, 448, 422, 444, 426, 450, 420, 446, 426, 450, 420, 446, 424, 442, 428, 448, 422, 444, 428, 450, 422, 446, 1296, 500, 372, 444, 428, 450, 422, 446, 426, 450, 420, 446, 424, 452, 420, 448, 1294, 502, 1242, 504, 1240, 506, 366, 450, 422, 444, 1298, 498, 372, 452, 418, 450, 422, 444, 426, 450, 420, 446, 426, 452, 420, 446, 424, 442, 428, 448, 422, 444, 426, 450, 420, 446, 1296, 500, 1242, 502, 1242, 504, 368, 446, 1296, 500, 1242, 502, 370, 446, 426, 452, 1290, 506, 366, 450, 1294, 502, 368, 446, 424, 452, 1290, 496, 1248, 498, 374, 452, 420, 446, 1296, 502, 1242, 502, 368, 446, 424, 454, 1290, 444, 426, 450, 1292, 452, 418, 448}; // UNKNOWN 1FB51F79 |
😖 It look lik the "Powerful" and "Quiet" button, is turn arround in the protocol for my unit. The First 2 is actual the "Powerful" i turn On and then Off Timestamp : 057734.383 uint8_t state[27] = {0x02, 0x20, 0xE0, 0x04, 0x00, 0x00, 0x00, 0x06, 0x02, 0x20, 0xE0, 0x04, 0x00, 0x4E, 0x2E, 0x80, 0xAF, 0x00, 0x00, 0x0E, 0xE0, 0x11, 0x00, 0x01, 0x00, 0x06, 0xB7}; Timestamp : 057736.707 uint8_t state[27] = {0x02, 0x20, 0xE0, 0x04, 0x00, 0x00, 0x00, 0x06, 0x02, 0x20, 0xE0, 0x04, 0x00, 0x4E, 0x2E, 0x80, 0xAF, 0x00, 0x00, 0x0E, 0xE0, 0x10, 0x00, 0x01, 0x00, 0x06, 0xB6}; Timestamp : 057750.486 uint8_t state[27] = {0x02, 0x20, 0xE0, 0x04, 0x00, 0x00, 0x00, 0x06, 0x02, 0x20, 0xE0, 0x04, 0x00, 0x4E, 0x2E, 0x80, 0xAF, 0x00, 0x00, 0x0E, 0xE0, 0x30, 0x00, 0x01, 0x00, 0x06, 0xD6}; Timestamp : 057752.756 uint8_t state[27] = {0x02, 0x20, 0xE0, 0x04, 0x00, 0x00, 0x00, 0x06, 0x02, 0x20, 0xE0, 0x04, 0x00, 0x4E, 0x2E, 0x80, 0xAF, 0x00, 0x00, 0x0E, 0xE0, 0x10, 0x00, 0x01, 0x00, 0x06, 0xB6}; |
Hey @MikkelTb Thanks for the data/feedback etc. I'm currently travelling so it will take me a while to look into this properly. Sorry for the delay(s). |
Thats okay, I still do some investigations on the protocol. |
HI. I have done two small modification to the "ir_Panasonic.h", and now it Work with my AC The first one is swop Quiet, and Powerfull const uint8_t kPanasonicAcPowerful = 1; // 0b1 The nest is change State[21] in the "kPanasonicKnownGoodState" from "0x00" to "0x10" const uint8_t kPanasonicKnownGoodState[kPanasonicAcStateLength] = { I can turn it On, and Off now, and the State data look lige the remote control. |
Excellent. I'm still travelling, so my access to do development stuff is limited. I'll try to formulate a proper patch/system to handle this model. Your data above is fantastic to help with that. Kudos for that. |
- Clock, On Timer, & Off Timer methods for the IRPanasonicAc class. - Unit tests for those. - Change SetSwingV() -> SetSwingVertical() - Change SetSwingH() -> SetSwingHorizontal() Ref: #544
* CKP series have Powerful and Quiet bits swapped * Unit tests based on actual data from a CKP unit. * Detect and set model info for CKP units. For #544
@MikkelTb Can you please try out the code in the https://github.com/markszabo/IRremoteESP8266/tree/panasonic_ckp branch? It should add support for you CKP series unit. |
Hi. Great job you have done. I have done one small change to you program i have replace "&" with "==", now the program show the right Model. panasonic_ac_remote_model_t IRPanasonicAc::getModel() { One ting i discover, the Power "On" and "Off" is working diffrent on the Ckp Model. The unit toggel the power On/Off when it get the Power On command. I can se on the remote control, if i change any other "Function" like temperature/fan/swing and so on, the Power state is "Off". The remote control does not know what state the AC unit is in. If i change the temperature, it send the change but with the "Power off". for that reason, it will only change the temperatur, and not change the "Power State" In the code the swing is mentioned as "Vertical" for this unit. i stille testing, and it looks great. |
Hi Again I have testede the Fan, and swing (Vertical), timer on/off, Temperatur, Powerfull and quiet. |
Hi. The unit i have testede it on is: The Number (10,12 and 14) is the model and the diffrent is how mush power (heet/cool) the unit can provide to the air |
@MikkelTb Thanks for that feedback. Appreciated. Regarding the "power on" control etc., I'm a little confused, so I'll try to explain back to you what I think I understand and you can correct/update me where needed. (All of this is assuming data from the normal original remote and just for the CKP model. i.e. NOT sending via the ESP)
This leads me to some questions:
|
[Yes] - For normal changes (e.g. temp, mode, swing, etc) the Power is read as "Off", even if the A/C unit is still running after receiving the command. SORRY my mistake i can see in the code that Vertical is up and Down, and that is what there is on my AC unit [Yes] -Powerful & Quiet modes is swapped, and Work as it shold, in the latest version you made. Every time the the AC get the I do not think you have to change anytning in the code. |
Ah. Okay. Cool. I now think I understand the power setting thing. Thanks for clarifying that. I'll add a note in the code for that and leave it alone, or do something fancy. I'll figure something out. :-) |
That sounds great. And thanks for implement the other stuff 👍 |
@MikkelTb |
Unfortunately I do not have a another type of Panasonic AC. So I will not be able to provide you with that kind of information. |
@MikkelTb I was referring to your comment earlier of: "i have replace "&" with "==", now the program show the right Model." i.e. Can you give me a copy of a |
data from the software (Data from my Remote control) |
I did two modifinication before i got the right model:
And
|
@MikkelTb pointed out detection for some CKP states was not working as expected. Ref: #544 (comment)
* CKP series have Powerful and Quiet bits swapped * Unit tests based on actual data from a CKP unit. * Detect and set model info for CKP units. For #544
@MikkelTb pointed out detection for some CKP states was not working as expected. Ref: #544 (comment)
@MikkelTb Thanks for that info. That's helped me try to narrow it down some more. Hopefully, it should now detect better for you. Let me know how it goes. |
I will try it tomorrow. I have look in the code and it looks great 👍 |
I close this one, as the new program update, handle this function now. And thanks to everybody, for helping with this, and special @crankyoldgit 👍 |
* Add support for Panasonic CKP series A/Cs. * CKP series have Powerful and Quiet bits swapped * Unit tests based on actual data from a CKP unit. * Detect and set model info for CKP units. * Make it clear how setPower() works on CKP devices. Ref: #544
This is now live in the new v2.5.2 release of the library. |
HI.
I find the Data in Panasonic protocol, which contain "Time", "On" and "Off"
Remote control: (toggel on/off) -> 23C, Fan Auto, Swing Auto, Quiet Off, Powerful Off
AC -> CS-ME14CKPG
Remote -> A75C2311
(my AC does not have a Vertical Swing)
On Timer set to 16:00
Off Timer set to 6:30
Time for push the Button 18:16
uint8_t state[27] = {0x02, 0x20, 0xE0, 0x04, 0x00, 0x00, 0x00, 0x06, 0x02, 0x20, 0xE0, 0x04, 0x00, 0x4E, 0x2E, 0x80, 0xAF, 0x00, 0xCA, 0x6B, 0x98, 0x10, 0x00, 0x01, 0x48, 0x04, 0xDB};
Byte nr 14 (0x4E) Contain information about State of On/Off timer
Byte nr. 19 to 21 (0xCA, 0x6B, 0x98) Contain the timer value
Byte nr 25 and 26 (0x48, 0x04)Contain the Time now
Byte nr.: 14
Both Cancel -> 0x48 -> 0100 1000
On -> 0x4A -> 0100 1010
Off -> 0x4C -> 0100 1100
On And Off -> 04E -> 0100 1110
Bit nr 6 and 7 show the state of On and Off timer
Byte 19 to 21 (0xCA, 0x6B, 0x98)
This represent the timer which, On timer 16:10, and Off timer 6:30
16:10 -> 16*60+10 -> 970 -> 0011 1100 1010 -> 3CA
CA is byte nr 19.
3 is comming from "0x6B" 0x6B -> 0110 1011 < But only the last 3 bit is taking
The last 3 bit -> 011
0xCA -> 1100 1010
011 1100 1010 <- 16:10
6:30 -> 6*60+30 -> 390 -> 0001 1000 0110 -> 186
from 0x6B, the first 4 bit is use -> 0110 1000
from 0x98, the first bit is not in use -> 1001 1000
001 1000 0110 -> 0x186 <- 6:30
Byte nr 25 and 26 (0x48, 0x04) Contain the Time now
The clock was 18:16
18:16 -> 18*60+16 -> 1096 -> 0100 0100 1000 -> 0x448
Byte nr 26 first, and only the last 3 bit, then Byte 25
I hope it make sens
The text was updated successfully, but these errors were encountered: