crankyoldgit / IRremoteESP8266

Infrared remote library for ESP8266/ESP32: send and receive infrared signals with multiple protocols. Based on: https://github.com/shirriff/Arduino-IRremote/
GNU Lesser General Public License v2.1
3k stars 833 forks source link

Adding Panasonic Ceiling Light Remote Data to IRremoteESP8266 Library #1976

Closed bennyyagiyama closed 1 year ago

bennyyagiyama commented 1 year ago

Add Panasonic Ceiling Light remote data

Description

I would like to request that the Panasonic Ceiling Light remote data be added to the IRremoteESP8266 library. When the "off - Channel3" button is pressed on the remote, the following data is obtained using IRrecvDumpV2:

uint16_t rawData[83] = {3486, 1742, 432, 456, 406, 456, 406, 1336, 406, 1312, 430, 456, 406, 1334, 408, 456, 406, 456, 408, 456, 406, 1334, 408, 456, 408, 454, 408, 1334, 408, 456, 406, 1336, 406, 456, 408, 1334, 408, 456, 406, 456, 408, 1336, 406, 456, 408, 454, 406, 456, 406, 454, 408, 1332, 410, 1332, 408, 1334, 408, 1336, 406, 1334, 410, 1332, 410, 454, 406, 456, 406, 456, 406, 1332, 410, 1334, 408, 454, 406, 1336, 406, 1336, 406, 454, 410, 454, 408}; // UNKNOWN 1D41D404

According to this link, the data format is as follows:

T [us] Leader_high[T] Leader_low[T] signal[Byte]
435 8 4 5

The remote has the following commands and corresponding channel values:

Command Channel 1 Channel 2 Channel 3
on 2c52092d24 2c5209353c 2c52093d34
off 2c52092f26 2c5209373e 2c52093f36
full 2c52092c25 2c5209343d 2c52093c35
night 2c52092e27 2c5209363f 2c52093e37
high 2c52092a23 2c5209323b 2c52093a33
low 2c52092b22 2c5209333a 2c52093b32
warm 2c523991a8 2c523995ac 2c523999a0
cool 2c523990a9 2c523994ad 2c523998a1

Additional Information

I have confirmed that the data corresponds to the "off" command of channel3 for the Panasonic Ceiling Light. Please let me know if any further information is needed. Thank you for your attention and I hope this data can be added to the library.

NiKiZe commented 1 year ago

Can I ask that you collect more samples, can't promise when we get time to implement this. But data is good to have to verify.

bennyyagiyama commented 1 year ago

I have collected data for all the buttons on my remote control. Please let me know if there is anything else I can help with. Thank you very much.

// full ch1
uint16_t rawData[83] = {3494, 1736,  460, 404,  434, 426,  460, 1282,  434, 1308,  438, 426,  460, 1282,  460, 404,  436, 426,  436, 430,  432, 1306,  436, 430,  460, 402,  432, 1308,  460, 402,  434, 1306,  438, 426,  436, 1306,  436, 428,  436, 428,  458, 1282,  434, 428,  458, 404,  434, 426,  436, 426,  432, 430,  436, 428,  432, 1306,  434, 1308,  460, 400,  436, 1308,  434, 428,  432, 432,  436, 1302,  438, 426,  438, 1304,  436, 428,  458, 402,  434, 1308,  460, 402,  460, 404,  434};  // UNKNOWN CA21A230
// on ch1
uint16_t rawData[83] = {3492, 1736,  436, 426,  438, 426,  436, 1306,  436, 1304,  458, 404,  432, 1310,  460, 402,  464, 400,  434, 426,  436, 1306,  438, 428,  432, 428,  438, 1304,  436, 426,  434, 1308,  436, 426,  434, 1308,  434, 430,  434, 428,  438, 1306,  460, 404,  434, 430,  434, 426,  436, 426,  462, 1280,  436, 428,  436, 1304,  436, 1306,  434, 428,  436, 1304,  460, 402,  438, 428,  434, 430,  430, 430,  436, 1304,  464, 400,  434, 428,  460, 1282,  460, 404,  436, 426,  434};  // UNKNOWN F6B92168
// night ch1
uint16_t rawData[83] = {3514, 1714,  436, 426,  462, 404,  432, 1308,  436, 1306,  438, 426,  456, 1282,  436, 428,  438, 426,  460, 402,  434, 1308,  460, 404,  436, 430,  430, 1308,  436, 430,  434, 1306,  462, 402,  436, 1304,  438, 426,  438, 424,  438, 1304,  438, 426,  434, 428,  434, 428,  436, 428,  434, 426,  436, 1306,  436, 1304,  436, 1306,  436, 430,  434, 1308,  434, 426,  438, 426,  436, 1306,  438, 1304,  464, 1278,  438, 426,  460, 404,  460, 1282,  462, 400,  436, 426,  432};  // UNKNOWN A2768C92
// high ch1
uint16_t rawData[83] = {3490, 1736,  436, 428,  434, 426,  434, 1306,  460, 1282,  436, 428,  436, 1304,  436, 426,  438, 424,  436, 428,  436, 1304,  434, 430,  434, 430,  460, 1280,  462, 402,  434, 1308,  460, 402,  434, 1310,  434, 428,  434, 426,  436, 1304,  462, 402,  434, 428,  462, 400,  436, 428,  460, 400,  460, 1282,  432, 430,  434, 1306,  438, 426,  436, 1306,  436, 426,  432, 430,  434, 1306,  436, 1306,  434, 430,  434, 426,  436, 428,  434, 1306,  436, 426,  436, 426,  436};  // UNKNOWN 3D2149C8
// low ch1
uint16_t rawData[83] = {3518, 1710,  434, 428,  434, 430,  434, 1308,  436, 1304,  436, 426,  438, 1304,  434, 430,  436, 426,  438, 422,  438, 1304,  436, 428,  436, 426,  462, 1278,  438, 426,  438, 1304,  436, 426,  434, 1308,  438, 426,  434, 430,  432, 1308,  434, 428,  434, 428,  436, 426,  436, 426,  436, 1304,  434, 1310,  436, 426,  436, 1306,  438, 426,  436, 1306,  434, 430,  458, 402,  440, 426,  458, 1280,  436, 426,  438, 426,  434, 430,  462, 1278,  434, 430,  434, 428,  434};  // UNKNOWN 7F7FEDD0
// off ch1
uint16_t rawData[83] = {3492, 1734,  438, 426,  434, 430,  432, 1310,  436, 1306,  458, 402,  434, 1308,  438, 426,  436, 426,  436, 424,  462, 1280,  460, 404,  434, 428,  434, 1306,  436, 428,  432, 1308,  462, 402,  438, 1304,  436, 426,  460, 402,  436, 1306,  434, 428,  460, 402,  434, 426,  434, 428,  436, 1306,  436, 1306,  436, 1304,  438, 1306,  436, 428,  436, 1306,  434, 428,  436, 426,  460, 402,  434, 1306,  436, 1304,  438, 426,  436, 428,  438, 1304,  434, 428,  434, 428,  436};  // UNKNOWN 1B9C2A92
// full ch2
uint16_t rawData[83] = {3518, 1714,  436, 426,  460, 402,  436, 1306,  436, 1306,  436, 428,  436, 1304,  462, 400,  436, 426,  438, 426,  436, 1304,  438, 426,  436, 428,  460, 1280,  440, 426,  432, 1308,  438, 422,  436, 1304,  438, 428,  434, 428,  434, 1306,  438, 426,  434, 426,  436, 428,  434, 428,  434, 426,  436, 426,  438, 1304,  436, 454,  434, 1280,  464, 1278,  436, 426,  434, 428,  438, 1304,  436, 426,  458, 1286,  460, 1282,  458, 1282,  436, 1306,  462, 400,  434, 428,  436};  // UNKNOWN 5DF2C18E
// on ch2
uint16_t rawData[83] = {3488, 1736,  462, 402,  436, 426,  434, 1308,  436, 1306,  436, 428,  432, 1308,  436, 430,  432, 430,  434, 428,  460, 1282,  434, 430,  434, 426,  434, 1308,  438, 428,  434, 1304,  436, 430,  434, 1308,  438, 426,  434, 428,  432, 1308,  434, 428,  432, 434,  434, 428,  434, 426,  432, 1310,  436, 428,  436, 1308,  430, 432,  430, 1308,  438, 1304,  436, 428,  436, 426,  434, 430,  434, 428,  460, 1282,  434, 1308,  434, 1308,  436, 1306,  438, 426,  434, 430,  434};  // UNKNOWN D528FFCE
// night ch2
uint16_t rawData[83] = {3490, 1738,  436, 426,  436, 426,  436, 1306,  438, 1304,  434, 430,  436, 1302,  462, 404,  460, 402,  462, 400,  436, 1304,  438, 426,  436, 426,  434, 1308,  436, 428,  434, 1308,  436, 428,  464, 1276,  438, 428,  434, 428,  436, 1308,  434, 426,  460, 404,  436, 426,  436, 426,  438, 424,  460, 1282,  436, 1304,  440, 426,  434, 1304,  438, 1306,  436, 426,  436, 426,  438, 1304,  438, 1304,  462, 1282,  460, 1280,  436, 1304,  438, 1306,  438, 426,  460, 402,  438};  // UNKNOWN 50E4CAFC
// high ch2
uint16_t rawData[83] = {3520, 1710,  436, 428,  434, 426,  436, 1306,  462, 1282,  438, 426,  434, 1304,  436, 454,  414, 422,  438, 426,  436, 1304,  462, 402,  434, 428,  434, 1308,  432, 430,  434, 1306,  462, 402,  436, 1304,  436, 428,  436, 426,  436, 1304,  436, 426,  434, 428,  438, 426,  458, 404,  436, 426,  436, 1304,  438, 426,  436, 428,  436, 1306,  462, 1280,  436, 428,  436, 426,  436, 1306,  438, 1304,  436, 428,  434, 1308,  460, 1280,  460, 1280,  438, 426,  436, 426,  434};  // UNKNOWN DEAA2F2E
// low ch2
uint16_t rawData[83] = {3494, 1734,  436, 428,  462, 400,  438, 1304,  460, 1282,  462, 400,  436, 1306,  438, 426,  434, 428,  438, 426,  460, 1280,  436, 428,  436, 426,  436, 1306,  440, 422,  436, 1306,  438, 424,  434, 1306,  460, 402,  438, 426,  434, 1308,  462, 400,  434, 428,  436, 426,  462, 400,  462, 1280,  436, 1306,  436, 426,  436, 426,  438, 1302,  438, 1304,  436, 428,  462, 400,  458, 404,  434, 1306,  462, 400,  462, 1280,  462, 1280,  440, 1302,  436, 430,  434, 428,  434};  // UNKNOWN 57CFCD2E
// off ch2
uint16_t rawData[83] = {3516, 1712,  462, 402,  440, 424,  436, 1306,  436, 1308,  434, 426,  462, 1280,  436, 426,  436, 426,  436, 426,  434, 1306,  434, 428,  434, 430,  460, 1280,  434, 430,  456, 1284,  434, 428,  436, 1306,  436, 426,  462, 402,  436, 1304,  436, 428,  440, 424,  458, 404,  434, 430,  432, 1306,  462, 1280,  436, 1306,  434, 428,  434, 1308,  436, 1304,  460, 406,  458, 400,  436, 428,  434, 1306,  436, 1306,  438, 1302,  462, 1282,  462, 1280,  438, 426,  434, 426,  434};  // UNKNOWN CA0A68FC
// full ch3
uint16_t rawData[83] = {3492, 1734,  438, 426,  434, 428,  460, 1280,  436, 1306,  436, 428,  436, 1304,  436, 426,  434, 428,  462, 400,  462, 1280,  436, 426,  438, 426,  438, 1304,  436, 428,  434, 1308,  460, 402,  436, 1306,  438, 426,  458, 402,  436, 1306,  460, 402,  436, 430,  434, 426,  460, 402,  438, 426,  460, 400,  436, 1304,  436, 1308,  460, 1278,  438, 1306,  462, 402,  436, 428,  458, 1282,  438, 424,  436, 1304,  436, 428,  462, 1278,  464, 1278,  464, 400,  436, 426,  462};  // UNKNOWN 1E82D3CE
// on ch3
uint16_t rawData[83] = {3490, 1738,  434, 428,  434, 428,  436, 1308,  434, 1304,  462, 404,  436, 1306,  436, 426,  436, 428,  434, 428,  434, 1306,  436, 426,  436, 428,  434, 1306,  460, 402,  438, 1302,  436, 428,  438, 1304,  434, 428,  434, 426,  436, 1306,  436, 426,  462, 402,  438, 424,  436, 428,  436, 1306,  434, 430,  434, 1304,  462, 1282,  436, 1306,  436, 1308,  436, 426,  460, 402,  464, 400,  458, 402,  460, 1282,  436, 426,  434, 1308,  458, 1284,  462, 402,  436, 426,  458};  // UNKNOWN EBB8D38E
// night ch3
uint16_t rawData[83] = {3490, 1734,  440, 426,  460, 400,  438, 1304,  438, 1302,  440, 426,  436, 1302,  464, 400,  462, 400,  462, 402,  462, 1278,  438, 426,  438, 426,  460, 1282,  434, 428,  434, 1308,  460, 402,  460, 1280,  440, 422,  438, 426,  436, 1306,  438, 424,  462, 402,  436, 426,  462, 400,  438, 426,  436, 1304,  434, 1308,  438, 1304,  464, 1278,  436, 1306,  466, 398,  464, 398,  466, 1276,  466, 1274,  464, 1280,  462, 402,  436, 1304,  466, 1276,  440, 422,  440, 424,  460};  // UNKNOWN DAE32FFC
// high ch3
uint16_t rawData[83] = {3488, 1740,  436, 428,  432, 430,  434, 1304,  438, 1304,  436, 426,  436, 1308,  432, 430,  460, 402,  434, 426,  434, 1306,  438, 426,  436, 426,  434, 1308,  438, 426,  460, 1282,  436, 428,  434, 1308,  432, 428,  438, 426,  434, 1304,  440, 426,  434, 426,  460, 406,  436, 426,  432, 428,  438, 1304,  434, 430,  460, 1280,  436, 1306,  436, 1308,  434, 428,  434, 428,  436, 1304,  436, 1306,  436, 428,  462, 402,  434, 1306,  462, 1278,  466, 398,  436, 426,  436};  // UNKNOWN 72703D2E
// low ch3
uint16_t rawData[83] = {3492, 1736,  436, 426,  436, 426,  436, 1304,  434, 1308,  438, 426,  436, 1306,  434, 430,  436, 426,  434, 430,  434, 1306,  438, 424,  434, 428,  436, 1304,  438, 426,  434, 1308,  436, 428,  438, 1304,  458, 406,  432, 430,  460, 1282,  436, 426,  460, 402,  438, 422,  436, 430,  434, 1304,  436, 1306,  464, 400,  436, 1306,  432, 1308,  438, 1304,  438, 426,  434, 428,  438, 426,  434, 1308,  434, 430,  458, 404,  434, 1308,  434, 1306,  436, 430,  434, 430,  434};  // UNKNOWN EB95DB2E
// off ch3
uint16_t rawData[83] = {3492, 1734,  438, 426,  434, 428,  434, 1308,  434, 1308,  434, 430,  436, 1304,  434, 430,  434, 428,  460, 400,  436, 1304,  438, 426,  436, 426,  434, 1306,  434, 430,  434, 1308,  434, 430,  460, 1282,  438, 426,  434, 428,  436, 1306,  436, 428,  460, 402,  458, 404,  436, 426,  456, 1284,  434, 1308,  438, 1304,  436, 1306,  438, 1304,  436, 1306,  434, 430,  436, 426,  438, 426,  436, 1306,  436, 1306,  436, 426,  434, 1308,  434, 1308,  434, 430,  434, 428,  434};  // UNKNOWN 1D41D404
crankyoldgit commented 1 year ago

@bennyyagiyama Can you please download & try branch Panasonic40 (https://github.com/crankyoldgit/IRremoteESP8266/tree/Panasonic40) & PR #1977 It should now decode your remote as a 40 bit Panasonic message. Panasonic IR messages are typically 48 bits, so you will need to send the messages with a bit more specifics than usual. e.g.

// send a 'night ch3' message.
irsend.sendPanasonic64(0x344A907CEC, kPanasonic40Bits);  // kPanasonic40Bits is 40.

Can you let me know how you go with that branch/code?

bennyyagiyama commented 1 year ago

I apologize for the delayed response. Your prompt and thorough response has been an immense help to me. I am deeply grateful for your expertise and willingness to assist.

Using the Panasonic40 branch, I obtained the following result for the Ch1 FULL button:

Protocol : PANASONIC Code : 0x344A9034A4 (40 Bits) uint16_t rawData[83] = {3482, 1766, 408, 454, 406, 456, 406, 1336, 406, 1334, 408, 456, 406, 1336, 404, 456, 406, 456, 406, 458, 406, 1336, 406, 454, 406, 456, 408, 1334, 406, 458, 404, 1336, 406, 458, 406, 1336, 404, 456, 410, 454, 406, 1336, 406, 456, 404, 458, 404, 456, 406, 458, 406, 454, 406, 458, 404, 1336, 406, 1334, 406, 458, 406, 1312, 430, 456, 406, 454, 408, 1334, 406, 456, 406, 1336, 408, 454, 406, 456, 406, 1334, 408, 456, 406, 460, 402}; // PANASONIC 344A9034A4 uint32_t address = 0x34; uint32_t command = 0x4A9034A4; uint64_t data = 0x344A9034A4;

Only the code is listed below. Command Channel 1 Channel 2 Channel 3
on 0x344A90B424 0x344A90AC3C 0x344A90BC2C
full 0x344A9034A4 0x344A902CBC 0x344A903CAC
night 0x344A9074E4 0x344A906CFC 0x344A907CEC
high 0x344A9054C4 0x344A904CDC 0x344A905CCC
low 0x344A90D444 0x344A90CC5C 0x344A90DC4C
off 0x344A90F464 0x344A90EC7C 0x344A90FC6C

(Warm button and cold button were not available on my IR remote.)

Also, I confirmed that the received code could be sent using the following code:

irsend.sendPanasonic64(code, kPanasonic40Bits);

Thank you very much. I am so grateful for your time and effort in helping me. I look forward to it being incorporated into the main branch.

crankyoldgit commented 1 year ago

Thanks for confirming it. It's now merged.