Page 1 of 2

Italian EMMETI AC (protocol GREE)

Posted: Wed Nov 09, 2016 1:30 pm
by ruirem
Hi all,
I'm trying to decode my AC.
It's an EMMETi, AnalysisIR recognized it has GREE 37004 Hz.
I sent these code but it doesn't work. Furthermore, I'm not able to discover the checksum.

I attach the signal recorded as MSB original and LSB8 cleaned.

Could you help me to decode correctly these signals.

Thank you very much in advance.

Re: Italian EMMETI AC (protocol GREE)

Posted: Wed Nov 09, 2016 5:45 pm
by AnalysIR
Sorry -the Gree checksum has been very hard to figure out & we have not be able to determine it yet. None of our users have reported it solved yet.

I will cover other issues in the next post.

related discussion
viewtopic.php?f=5&t=534&p=9677

Other Notes:
- use LSB8 as the format for reverse engineering
- for signals beginning with 0x8 it seems that the checksum bit is twice the value of the second nibble (regardless of the other nibbles???)
- e.g. 80100084A00220080 .... 2*8 = 0x10..lower nibble is 0
- e.g. 8C100084A002200E0 .... 2*E = 0x1C..lower nibble is C

Unfortunately, the signals not beginning with 8, are less clear but the above may provide some hints or clues. It could be that there are 2 different checksums used (???)

Re: Italian EMMETI AC (protocol GREE)

Posted: Wed Nov 09, 2016 5:48 pm
by AnalysIR
Sending a gree signal, cleaned with AnalysIR should work OK - many users have reported success.

Search for Gree in this forum.

To help, you will need to post details about:

- your platform
- IR LED driver circuit
- sketch
- photo of your wiring
- etc

Re: Italian EMMETI AC (protocol GREE)

Posted: Wed Nov 09, 2016 5:58 pm
by AnalysIR
The signals starting with 0x8 are all on-hot-fan-auto.

so why not create a set of signals with just
on-cold-fan-auto ...with the temperature going from 16->30 degC

and another set with on-cold-fan3 ......with the temperature going from 16->30 degC

That might provide some further clues, provided only one parameter changes between each signal recorded (i.e. temperature)

Re: Italian EMMETI AC (protocol GREE)

Posted: Thu Nov 10, 2016 8:22 am
by ruirem
Thank you very much for your hints.
AnalysIR is the best software in this compound!
I will create two sets (hot and cold) with different temperature ;)
And I will try again to sent codes closer (I read that could be a distance issue between AC and sender).

I will let you know.

Re: Italian EMMETI AC (protocol GREE)

Posted: Thu Nov 10, 2016 9:35 am
by ruirem
I found this C code used to decode a Gree signal https://github.com/ToniA/Raw-IR-decoder-for-Arduino) .
It contains the checksum calculation.... I hope could help us to find, finally, the right algorithm.

Code: Select all

// If this looks like a Gree code...
 +  if ( pulseCount == 71 ) {
 +    Serial.println(F("Looks like a Gree protocol"));
 +
 +    // Check if the checksum matches
 +    uint8_t checksum = (
 +      (bytes[0] & 0x0F) +
 +      (bytes[1] & 0x0F) +
 +      (bytes[2] & 0x0F) +
 +      (bytes[3] & 0x0F) +
 +      (bytes[5] & 0xF0) >> 4 +
 +      (bytes[6] & 0xF0) >> 4 +
 +      (bytes[7] & 0xF0) >> 4 +
 +      0x0A) & 0xF0;
 +
 +    if (checksum == bytes[8]) {
 +      Serial.println(F("Checksum matches"));
 +    } else {
 +      Serial.println(F("Checksum does not match"));
 +    }
 +
 +    // Power mode
 +    switch (bytes[0] & 0x08) {
 +      case 0x00:
 +        Serial.println(F("POWER OFF"));
 +        break;
 +      case 0x08:
 +        Serial.println(F("POWER ON"));
 +        break;
 +    }
 +
 +    // Operating mode
 +    switch (bytes[0] & 0x07) {
 +      case 0x00:
 +        Serial.println(F("MODE AUTO"));
 +        break;
 +      case 0x04:
 +        Serial.println(F("MODE HEAT"));
 +        break;
 +      case 0x01:
 +        Serial.println(F("MODE COOL"));
 +        break;
 +      case 0x02:
 +        Serial.println(F("MODE DRY"));
 +        break;
 +      case 0x03:
 +        Serial.println(F("MODE FAN"));
 +        break;
 +      }
 +
 +    // Temperature
 +    Serial.print(F("Temperature: "));
 +    Serial.println((bytes[1] & 0x0F) + 16);
 +
 +    // Fan speed
 +    switch (bytes[0] & 0x30) {
 +      case 0x00:
 +        Serial.println(F("FAN: AUTO"));
 +        break;
 +      case 0x10:
 +        Serial.println(F("FAN: 1"));
 +        break;
 +      case 0x20:
 +        Serial.println(F("FAN: 2"));
 +        break;
 +      case 0x30:
 +        Serial.println(F("FAN: 3"));
 +        break;
 +    }
 +
 +    // Sleep mode
 +    switch (bytes[0] & 0x80) {
 +      case 0x80:
 +        Serial.println(F("SLEEP: ON"));
 +        break;
 +      case 0x00:
 +        Serial.println(F("SLEEP: OFF"));
 +        break;
 +    }
 +
 +    // Air direction
 +    switch (bytes[0] & 0x40) {
 +      case 0x40:
 +        Serial.println(F("SWING: ON"));
 +        break;
 +      case 0x00:
 +        Serial.println(F("SWING: OFF"));
 +        break;
 +    }
 +

Re: Italian EMMETI AC (protocol GREE)

Posted: Thu Nov 10, 2016 10:05 am
by AnalysIR
super...I will look into this later...it would explain why it is so difficult to guess...tnx

Re: Italian EMMETI AC (protocol GREE)

Posted: Thu Nov 10, 2016 11:17 am
by ruirem
I confirm you that this algorithm recognizes correctly ALL my codes, saying me that checksum calculated from itself is ok... We are closer to the true...

Re: Italian EMMETI AC (protocol GREE)

Posted: Thu Nov 10, 2016 12:34 pm
by AnalysIR
great news...thanks for the update!

Re: Italian EMMETI AC (protocol GREE)

Posted: Thu Nov 10, 2016 1:31 pm
by ruirem
A thing I noticed....

Reading with the library I posted on heat, 22°, fan auto I receive:


Code: 0C,06,40,50,00,20,00,E0
Timings (in us):
PAUSE SPACE: 20460
HEADER MARK: 9300
HEADER SPACE: 4520
BIT MARK: 660
ZERO SPACE: 470
ONE SPACE: 1605

reading with AnalysIR:
Code: 18300105200440007 (MSB) or 8C100084A002200E0(LSB8)


Hexs are different...how is it possible...? :o