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. 8
0100084A002200
80 .... 2*8 = 0x1
0..lower nibble is
0
- e.g. 8
C100084A002200
E0 .... 2*E = 0x1
C..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...?