-
Notifications
You must be signed in to change notification settings - Fork 889
Closed
Labels
Description
Hola @crankyoldgit et al.
I have put in a day's work to try and reverse engineer my AC's IR Remote mapping and after necessary following the steps given in the two wiki articles explaining how to do so, I've come up with the following results:
Voltas AC map (Model no: 122LZF 4011252 Window AC)
(MSBF)
byte 0
b0 = Horizontal Swing(1 = On, 0 = Off) (Works with all Basic Modes) (not compatible with my AC)
b7-1 = UNKNOWN, typically 0b1111100
(Becomes Don't Care with value 0b00110011(0x33) if any other parameter is changed, reason unknown)
byte 1
b3-0 = Basic Modes
1000 (8) = Chill
0100 (4) = Dry (fixed Fan speed(Low), fixed Temperature(24C))
0010 (2) = Cool
0001 (1) = Fan (Fixed fan speed(Hi), Temperature = Cool mode temperature)
b4 = UNKNOWN, typically 0
b7-5 = Fan speed
100 (1) = Low
010 (2) = Mid
001 (4) = Hi
111 (7) = Auto
byte 2
b2-0 = Vertical Swing (Works with all Basic Modes)
000 (1) = Off
111 (7) = On
b3 = WiFi bit(Toggles between 0 and 1 upon pressing the button labelled 'WiFi') (not compatible with my AC)
b4 = UNKNOWN, typically 0
b5 = Turbo mode(1 = On, 0 = Off) (Works only with Chill mode)
b6 = Sleep mode(1 = On, 0 = Off) (Works only with Chill mode)
b7 = Power Status(1 = On, 0 = Off)
byte 3
b3-0 = Temperature
0000 (0) = 16C
0001 (1) = 17C
0010 (2) = 18C
...
1101 (13) = 29C
1110 (14) = 30C
b5-4 = UNKNOWN, typically 0b01
b6 = Energy Saver mode (1 = On, 0 = Off) (Works only with Chill mode)
b7 = TEMP bit, goes HIGH for a few seconds upon pressing TEMP button, then changes back to LOW automatically and remote sends the message(not compatible with my AC)
byte 4
b0 = Timer 24 Hr. bit (Works for both On and Off timer)
0 = Time is 24 Hr.
1 = Otherwise
b6-1 = UNKNOWN, typically 0b011101
b7 = On Timer 12+(byte 7 lower nibble) bit (works in conjuction with byte 7)
0 = On Time is 24 Hr or Time < 12 Hrs.
1 = On Time =>12 Hr.
byte 5
b0 = Timer 24 Hr. bit (Works for both On and Off timer)
0 = Time is 24 Hr.
1 = Otherwise
b6-1 = UNKNOWN, typically 0b011101
b7 = Off timer 12+(byte 7 upper nibble) bit (works in conjuction with byte 7)
0 = Off Time is 24 Hr or Off Time < 12 Hrs.
1 = Off Time =>12 Hr.
byte 6 = UNKNOWN, typically 0b00111011(0x3B)
byte 7
b3-0 = On Timer bits (works in conjuction with byte 4)
0000 (0) = 12 Hr. / 24Hr.
0001 (1) = 1 Hr. / 13Hr.
0010 (2) = 2 Hr. / 14Hr.
...
1010 (10) = 10 Hr. / 22Hr.
1011 (11) = 11 Hr. / 23Hr.
b7-4 = Off Timer bits (works in conjuction with byte 5)
0000 (0) = 12 Hr. / 24Hr.
0001 (1) = 1 Hr. / 13Hr.
0010 (2) = 2 Hr. / 14Hr.
...
1010 (10) = 10 Hr. / 22Hr.
1011 (11) = 11 Hr. / 23Hr.
byte 8
b4-0 = UNKNOWN, typically 0b00000
b5 = Lamp bit(1 = On, 0 = Off) (not compatible with my AC)
b6 = Off Timer status (1 = Activated, 0 = Deactivated)
b7 = On Timer status (1 = Activated, 0 = Deactivated)
(On Timer can only be activated when the AC has been powered OFF from the remote, Off Timer can only be activated when the AC has been powered ON from the remote,)
byte 9 = Check byte
Calcuted using the following formula:
checksum = ~(Sum of all preceding bytes)&0xFF
My setup is a NodeMCU connected to an IR receiver I salvaged from a digital photo frame.

A few of the IRrecvDumpV3 outputs after modifying the library are given below:
- Dry Mode, No Swing, No Lamp, No Timer
Library : v2.7.9
Protocol : VOLTAS
Code : 0x338488183B3B3B1100E6 (80 Bits)
uint16_t rawData[161] = {1002, 584, 1000, 586, 1000, 2568, 1002, 2570, 1002, 586, 998, 588, 1000, 2568, 1002, 2570, 1002, 2572, 1002, 584, 1002, 586, 1000, 584, 1000, 586, 1002, 2568, 1004, 584, 1000, 586, 1002, 2568, 1002, 584, 1002, 584, 1004, 584, 1000, 2568, 1002, 586, 1000, 586, 998, 590, 998, 584, 1002, 584, 1000, 586, 1000, 2570, 1002, 2568, 1004, 584, 1000, 584, 1002, 584, 1002, 582, 1004, 584, 1002, 2568, 1002, 2570, 1004, 2570, 1000, 586, 1002, 2568, 1004, 2568, 1006, 584, 1000, 584, 1002, 2568, 1002, 2570, 1002, 2568, 1002, 586, 1002, 2570, 1000, 2570, 1002, 588, 998, 586, 1000, 2568, 1004, 2568, 1004, 2568, 1002, 588, 998, 2570, 1002, 2568, 1004, 586, 1002, 584, 1000, 586, 1000, 2570, 1000, 586, 1000, 584, 1002, 586, 1000, 2568, 1004, 584, 1000, 586, 1000, 586, 1002, 584, 1002, 586, 1000, 586, 1000, 586, 1000, 586, 1000, 2568, 1002, 2568, 1002, 2568, 1004, 586, 1000, 584, 1000, 2570, 1004, 2568, 1004, 584, 1002}; // VOLTAS
uint8_t state[10] = {0x33, 0x84, 0x88, 0x18, 0x3B, 0x3B, 0x3B, 0x11, 0x00, 0xE6};
- Chill mode(24C), no swing, Fan Auto, Turbo ON, No Timer, No lamp
Library : v2.7.9
Protocol : VOLTAS
Code : 0x33E8A8183B3B3B110062 (80 Bits)
uint16_t rawData[161] = {1014, 574, 1012, 574, 1012, 2558, 1014, 2558, 1014, 574, 1014, 574, 1012, 2558, 1014, 2558, 1014, 2558, 1014, 2558, 1014, 2556, 1014, 574, 1012, 2558, 1014, 574, 1012, 574, 1012, 574, 1012, 2558, 1014, 572, 1014, 2558, 1014, 574, 1010, 2558, 1014, 574, 1012, 574, 1012, 574, 1012, 574, 1012, 572, 1014, 572, 1012, 2558, 1014, 2556, 1014, 572, 1036, 550, 1036, 550, 1012, 574, 1012, 576, 1010, 2556, 1038, 2534, 1038, 2534, 1016, 572, 1038, 2530, 1014, 2558, 1038, 548, 1012, 574, 1034, 2534, 1016, 2556, 1038, 2534, 1014, 574, 1012, 2558, 1014, 2558, 1014, 574, 1012, 572, 1012, 2558, 1014, 2556, 1014, 2558, 1014, 574, 1012, 2556, 1038, 2534, 1014, 572, 1012, 574, 1012, 574, 1036, 2534, 1012, 574, 1012, 574, 1012, 574, 1036, 2532, 1016, 572, 1014, 572, 1012, 574, 1012, 574, 1012, 572, 1014, 572, 1012, 574, 1012, 572, 1012, 574, 1012, 2556, 1014, 2556, 1014, 574, 1010, 574, 1012, 574, 1012, 2558, 1014, 572, 1014}; // VOLTAS
uint8_t state[10] = {0x33, 0xE8, 0xA8, 0x18, 0x3B, 0x3B, 0x3B, 0x11, 0x00, 0x62};
Also I've built an IR sender circuit and can confirm that the AC is responding to the change in parameters, with the correct checksum only.
Can you please confirm if I'm on the right path, so I can proceed towards the coding part, which admittedly, doesn't happen to be my strongest suit.
crankyoldgit and prakash52karcrankyoldgitcrankyoldgit
