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)