/**
   ESP32 + DHT22 Example for Wokwi
   
   https://wokwi.com/arduino/projects/322410731508073042
*/

#include "DHTesp.h"

const int DHT_PIN = 15;
const int LED_AZUL_PIN = 27;
const int LED_VERDE_PIN = 26;
const int LED_VERM_PIN = 25;
const int LED_ROXO_PIN = 33;
char input_data = 0;

unsigned char Buffer[80] = {};
unsigned char BufferLen = 0;
unsigned char b[8] = {0x5A, 0xA5, 0x05, 0x82, 0x21, 0x00, 0x00, 0x00};
DHTesp dhtSensor;

void setup() {
  Serial.begin(115200);
  getValueSensor();
  pinMode(LED_AZUL_PIN, OUTPUT);
  pinMode(LED_VERDE_PIN, OUTPUT);
  pinMode(LED_VERM_PIN, OUTPUT);
  pinMode(LED_ROXO_PIN, OUTPUT);
}

char getValueSensor(){
  dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
  TempAndHumidity  data = dhtSensor.getTempAndHumidity();
  Serial.println("Temp: " + String(data.temperature, 2) + "°C");
  Serial.println("Humidity: " + String(data.humidity, 1) + "%");
  Serial.println("---");
  return data.temperature;
}

void loop() {
 
  
  while(Serial.available()){
    Buffer[BufferLen] = Serial.read();
    BufferLen++;
    //Serial.println(BufferLen);
  }
  
  // 0x5A 0xA5 0x06 0x83 0x55 0x00 0x01 0x00 0x01 -WORD INT
  //5A A5 06 83 55 00 01 00 01 - Recebido
  // Buffer[0] = 0x5A;
  // Buffer[1] = 0xA5;
  // Buffer[2] = 0x06;
  // Buffer[3] = 0x83;
  // Buffer[4] = 0x55;
  // Buffer[5] = 0x03;
  // Buffer[6] = 0x01;
  // Buffer[7] = 0x00;
  // Buffer[8] = 0x01;
  BufferLen = 8;
  // Buffer = {0x5A, 0xA5, 0x06, 0x83, 0x55, 0x03, 0x01, 0x00, 0x01};

  if(BufferLen == 8){
  // BufferLen = 5A A5 06 83 55 00 01 00 01
  
  if (Buffer[0] == 0x5A){
    if(Buffer[3] == 0x83 ){
      if(Buffer[4] == 0x55){
        switch(Buffer[5]){
          case 0x00:
            digitalWrite(LED_AZUL_PIN, Buffer[8]);
            break;
          case 0x01:
            digitalWrite(LED_VERDE_PIN, Buffer[8]);
            break;
          case 0x02:
            digitalWrite(LED_VERM_PIN, Buffer[8]);
            break;
          case 0x03:
            digitalWrite(LED_ROXO_PIN, Buffer[8]);
            break;
          default:
            break;
        }
      }
    }

  }
}
}