I am trying to reverse engineer the IR protocol for my air conditioner (GREE - remote control YAP1FF) and with the data I found online and a lot of testing with a IR receiver there is only one field I still cannot calculate.
I am pasting some different messages and the field I am interested in is 8 bit long, delimited by brackets.
The values within m1 have no influence on the field. The field only has data when I set a time for automatically power on or to power off. The times are on m2.
m2:
- 11 bits = minutes remaining until power on time (1 to 1440)
- 1 bit = '1'
- 11 bits = minutes remaining until power off time (1 to 1440)
- 1 bit = '0'
- 1 bit = '0' if power off function is disabled, 1 if enabled
- 1 bit = '0' if power on function is disabled, 1 if enabled
- 2 bits = '00'
- 4 bits = general checksum (m1 and m2 together). I have the formula for this checksum
All the fields are stored in reverse bit order (little endian?)
If the power on time is 1 to 14 minutes from current time the field is always 00010000; from 15 to 29 minutes it's 10010000; from 30 to 44 it's 00011000. It changes every 15 minutes so I guess the 4 first bits are not being used to calculate it.
m1=100100001010[00011000]011000000110010 m2=10011001101110101100000011001110
m1=100000000110[00110010]010000000110010 m2=00101001101100000000000001000111
m1=100000000110[10111100]010000000110010 m2=10001001101100000000000001001011
m1=100000000110[00111100]010000000110010 m2=10010110101100000000000001000101
m1=100000000110[10110100]010000000110010 m2=10101010101100000000000001000001
m1=100000000110[10110100]010000000110010 m2=11001010101100000000000001000001
m1=100000000110[10110100]010000000110010 m2=00011100101100000000000001000110
m1=100000000110[00110100]010000000110010 m2=11101100101100000000000001000110
m1=100000000110[00110010]010000000110010 m2=11111001101100000000000001000111
m1=100100000010[00011000]011000000110010 m2=01111001101101011100000011001101
m1=100000000110[00010000]010000000110010 m2=10000000000100000000000001001000
m1=100100000010[10011000]011000000110010 m2=00001000000100110010000011001010
m1=100000000110[10010000]010000000110010 m2=00001000000100000000000001000100
m1=100100000010[10011000]011000000110010 m2=10010100000110100110000011001111
m1=100000000110[00011000]010000000110010 m2=01110100000100000000000001000010
m1=100100000010[00010100]011000000110010 m2=11100010000111000001000011000000
m1=100000000110[10011000]010000000110010 m2=00110010000100000000000001000110
m1=100100000010[10010100]011000000110010 m2=11000110000111111001000011000111
m1=100100000010[00010100]011000000110010 m2=01010110000100000000000001001111
m1=100100000010[00011100]011000000110010 m2=11000001000111111101000011001000
m1=100100000010[10010100]011000000110010 m2=00010001000100000000000001001000
m1=100100000010[10011100]011000000110010 m2=00010001000100100011000011000110
m1=100000000110[00010000]010000000110010 m2=00000000000101000000000010001100
m1=100000000110[10010000]010000000110010 m2=00000000000110001000000010000100
If both power on and power off functions are disabled, the field will always be 00000000