diff --git a/src/mqtt_esp32/mqtt_esp32.ino b/src/mqtt_esp32/mqtt_esp32.ino
index a9a75580c52bcef5ff639f76b7175b76747456c3..fad86e25a0978f2755a6509f4b682b85c24afb23 100644
--- a/src/mqtt_esp32/mqtt_esp32.ino
+++ b/src/mqtt_esp32/mqtt_esp32.ino
@@ -4,6 +4,7 @@
 
 #define MATRIX_SIZE 10   // 10x10
 #define IMG_DATA_SIZE MATRIX_SIZE * MATRIX_SIZE * 3 //DATA SIZE FOR ONE MATRIX = RGB * MATRIX_SIZE
+#define IS_TEXT 1
 
 // WiFi
 const char *ssid = "uni-ete2"; // Enter your WiFi name
@@ -21,8 +22,8 @@ PubSubClient client(espClient);
 // UART2
 HardwareSerial SerialPort(2); // use UART2
 
-uint8_t cluster_size_x = 1;
-uint8_t cluster_size_y = 1;
+uint8_t cluster_size_x = 2;
+uint8_t cluster_size_y = 2;
 
 void setup() 
 {
@@ -88,11 +89,13 @@ 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;
+  uint8_t raw_data[220];
+  char header[] = "PT;x,y;IMAGE;";
+  strcpy((char*)raw_data, header);
+  raw_data[3] = '0' + idx;
+  raw_data[5] = '0' + idy;
 
-  uint8_t send_len = 2;
+  uint8_t send_len = 13;
 
   // SEND RGB DATA
   for(int i = 0; i < length; i+=3)
@@ -130,7 +133,7 @@ void send_data_to_matrix(uint8_t idx, uint8_t idy, uint8_t* data, uint32_t lengt
 
   // SEND UART PACKET HEADER
   SerialPort.print((char)0x77);
-  SerialPort.print((char)202);
+  SerialPort.print((char)send_len);
   uint8_t crc = 0;
   
   for(int i = 0; i < send_len; i++)
@@ -139,11 +142,11 @@ void send_data_to_matrix(uint8_t idx, uint8_t idy, uint8_t* data, uint32_t lengt
     {
       crc = crc ^ 0x10;
       SerialPort.print((char)0x10);
-      Serial.println(0x10);
+      //Serial.println(0x10);
     }
     crc = crc ^ raw_data[i];
     SerialPort.print((char)raw_data[i]);
-    Serial.println(raw_data[i]);
+    //Serial.println(raw_data[i]);
   }
 
   // SEND UART PACKET FOOTER
@@ -169,6 +172,37 @@ void callback(char *topic, byte *payload, unsigned int length)
   // SerialPort.print((char)202);
   // SerialPort.print((char)0xaa);
 
+  if(IS_TEXT)
+  {
+    char data[100];
+    char header[] = "PT;1,0;MOVING;16711680;0.1;";
+    memcpy(data, header, strlen(header) + 1);
+    strncat(data, (char*)payload, length);
+    uint32_t len = strlen(data);
+
+    // SEND UART PACKET HEADER
+    SerialPort.print((char)0x77);
+    SerialPort.print((char)len);
+    uint8_t crc = 0;
+
+    for(int i = 0; i < len; i++)
+    {
+      if(data[i] == 0x77 || data[i] == 0x10 || data[i] == 0xAA)
+      {
+        crc = crc ^ 0x10;
+        SerialPort.print((char)0x10);
+      }
+      crc = crc ^ data[i];
+      SerialPort.print((char)data[i]);
+    }
+
+    // SEND UART PACKET FOOTER
+    SerialPort.print((char)(crc ^ len));
+    SerialPort.print((char)0xAA);
+
+    return;
+  }
+
   // GET RAW DATA
   uint8_t* raw_data = mqtt_packet_to_raw(payload, &length);
   if(raw_data == NULL)
diff --git a/src/mqtt_hepialight/MAIN.PY b/src/mqtt_hepialight/MAIN.PY
index 2663273a0ef14945b15adebd4c7248c868ef5477..1ff179079d05afb56d99da95b3d62ad83b5f5a93 100644
--- a/src/mqtt_hepialight/MAIN.PY
+++ b/src/mqtt_hepialight/MAIN.PY
@@ -1,15 +1,3 @@
-r = 0xA2142F
-p = 0x7E2F8E
-
-data32 = [0xFFFFFF] * 100
-
-r_16 = 0xF800
-w_16 = 0xFFFF
-y_16 = 0xfea7
-b_16 = 0x0000
-
-data16 = [b_16, y_16] * 50
-
 def color16_to_32(color):
     color = int(color)
     r = ((color >> 11) & 0xFF) * 2**3
@@ -22,7 +10,6 @@ def disp_img_data(data):
         for j in range(NBR_COLONNES):
             allumer_led(i, j, data[i * NBR_LIGNES + j])
 
-
 def data_to_color16(data):
     d_color16 = []
 
@@ -36,7 +23,6 @@ def data_to_color16(data):
     
     return list(map(color16_to_32, d_color16))
 
-#data32 = list(map(color16_to_32, data16))
 r_data = []
 while(True):
     r_data = recevoir_msg(S)