diff --git a/src/mqtt_esp32/mqtt_esp32.ino b/src/mqtt_esp32/mqtt_esp32.ino
index 890e69b8c25ff8013978ce3ad968290a03e3bf7a..a9a75580c52bcef5ff639f76b7175b76747456c3 100644
--- a/src/mqtt_esp32/mqtt_esp32.ino
+++ b/src/mqtt_esp32/mqtt_esp32.ino
@@ -88,52 +88,69 @@ uint8_t* mqtt_packet_to_raw(uint8_t* packet, unsigned int* length)
 
 void send_data_to_matrix(uint8_t idx, uint8_t idy, uint8_t* data, uint32_t length)
 {
+  uint8_t raw_data[202];
+  raw_data[0] = idx;
+  raw_data[1] = idy;
 
-  // ADD ID TO LEN
-  length += 2;
-
-  // SEND UART PACKET HEADER
-  SerialPort.print((char)0x77);
-  SerialPort.print((char)length-100);
-  uint8_t crc = 0;
-
-  // SEND MATRIX ID
-  SerialPort.print((char)idx);
-  SerialPort.print((char)idy);
-
-  // COMPUTE CRC FOR ID
-  crc = crc ^ idx;
-  crc = crc ^ idy;
+  uint8_t send_len = 2;
 
   // SEND RGB DATA
   for(int i = 0; i < length; i+=3)
   {
-    Serial.print((char)data[i]);
-    Serial.print((char)data[i+1]);
-    Serial.print((char)data[i+2]);
+    // Serial.print((char)data[i]);
+    // Serial.print((char)data[i+1]);
+    // Serial.print((char)data[i+2]);
 
     // COMPUTE COLOR IN 16 BITS
     uint8_t r = data[i] & 0x1F;
     uint8_t g = data[i+1] & 0x3F;
     uint8_t b = data[i+2] & 0x1F ;
     uint16_t rgb = r << 11 | g << 5 | b;
+    // Serial.print(rgb);
+    // Serial.print(' ');
 
     // SPLIT ON 8 BITS
     uint8_t rgb_0 = rgb >> 8;
-    uint8_t rgb_1 = rgb & 0x0F;
-
-    // COMPUTE CRC
-    crc = crc ^ rgb_0;
-    crc = crc ^ rgb_1;
+    uint8_t rgb_1 = rgb & 0xFF;
+    //Serial.println(rgb_0);
+    // Serial.print(' ');
+    //Serial.println(rgb_1);
 
     // SEND RGB
-    SerialPort.print((char) rgb_0);
-    SerialPort.print((char) rgb_1);
+    //SerialPort.print((char) rgb_0);
+    //SerialPort.print((char) rgb_1);
+    //send_len += 2;
+    raw_data[send_len++] = rgb_0;
+    raw_data[send_len++] = rgb_1;
+  }
+  // // SEND MATRIX ID
+  // Serial.println(idx);
+  // Serial.println(idy);
+  Serial.println(send_len);
+
+  // SEND UART PACKET HEADER
+  SerialPort.print((char)0x77);
+  SerialPort.print((char)202);
+  uint8_t crc = 0;
+  
+  for(int i = 0; i < send_len; i++)
+  {
+    if(raw_data[i] == 0x77 || raw_data[i] == 0x10 || raw_data[i] == 0xAA)
+    {
+      crc = crc ^ 0x10;
+      SerialPort.print((char)0x10);
+      Serial.println(0x10);
+    }
+    crc = crc ^ raw_data[i];
+    SerialPort.print((char)raw_data[i]);
+    Serial.println(raw_data[i]);
   }
 
   // SEND UART PACKET FOOTER
-  SerialPort.print((char)(crc ^ (length-100)));
+  SerialPort.print((char)(crc ^ send_len));
   SerialPort.print((char)0xAA);
+
+  Serial.println(crc ^ send_len);
 }
 
 void callback(char *topic, byte *payload, unsigned int length) 
@@ -142,6 +159,16 @@ void callback(char *topic, byte *payload, unsigned int length)
   Serial.print("Message arrived in topic: ");
   Serial.println(topic);
 
+  // // TEMP
+  // SerialPort.print((char)0x77);
+  // SerialPort.print((char)202);
+  // for(int i = 0 ; i < 202; i++)
+  // {
+  //   SerialPort.print((char)0x61);
+  // }
+  // SerialPort.print((char)202);
+  // SerialPort.print((char)0xaa);
+
   // GET RAW DATA
   uint8_t* raw_data = mqtt_packet_to_raw(payload, &length);
   if(raw_data == NULL)
@@ -154,7 +181,7 @@ void callback(char *topic, byte *payload, unsigned int length)
   {
     for(int y = cluster_size_y - 1; y >= 0; y--)
     {
-      Serial.println("FOR LOOP");
+      //Serial.println("FOR LOOP");
 
       // SEND UART PACKET
       send_data_to_matrix(x, y, raw_data, IMG_DATA_SIZE);
diff --git a/src/mqtt_hepialight/MAIN.PY b/src/mqtt_hepialight/MAIN.PY
index e0bfe0ccc5e32ceec138a1ce8097cdda171674d1..2663273a0ef14945b15adebd4c7248c868ef5477 100644
--- a/src/mqtt_hepialight/MAIN.PY
+++ b/src/mqtt_hepialight/MAIN.PY
@@ -29,9 +29,9 @@ def data_to_color16(data):
     id_x = data[0]
     id_y = data[1]
 
-    afficher_texte(f"{len(data)}")
+    #afficher_texte(f"{len(data)}")
 
-    for i in range(0, len(data), 2):
+    for i in range(2, len(data), 2):
         d_color16.append(data[i] << 8 | data[i+1])
     
     return list(map(color16_to_32, d_color16))
@@ -39,7 +39,7 @@ def data_to_color16(data):
 #data32 = list(map(color16_to_32, data16))
 r_data = []
 while(True):
-    r_data = recevoir_msg(N)
+    r_data = recevoir_msg(S)
     if len(r_data) > 0:
         break