//HEADER
#include "DHTesp.h"
#define pinDHT22  13
#define ledRojo 15 //temperatura
#define ledVerde 14 //humedad
#define botonRojo 27
#define botonVerde 26

bool alarmaTemp = false;
bool estadoTempActivo = true;
bool alarmaHum = false;
bool estadoHumActivo = true;
DHTesp dht;

void setup() {
  Serial.begin(115200);
  Serial.println("Hola, ESP32!");
  dht.setup(pinDHT22, DHTesp::DHT22);
  pinMode(ledRojo, OUTPUT);
  pinMode(ledVerde, OUTPUT);
  pinMode(botonRojo, INPUT);
  pinMode(botonVerde, INPUT);
}

void loop() {
  
  TempAndHumidity data = dht.getTempAndHumidity();
  if(digitalRead(botonRojo)==1 && estadoTempActivo==true)
  {
    estadoTempActivo=false;
  }
  else if (digitalRead(botonRojo)==0 && estadoTempActivo== false)
  {
    estadoTempActivo=true;
  }

  if(digitalRead(botonVerde)==1 && estadoHumActivo== true)
  {
    estadoHumActivo=false;
  }
  else if (digitalRead(botonVerde)==0 && estadoHumActivo== false)
  {
    estadoHumActivo=true;
  }
  
  if (data.temperature > 45)
  {
    alarmaTemp= true;
  }

  if(data.humidity < 25 || data.humidity > 60)
  {
    alarmaHum= true;
  }


  if(estadoTempActivo == true && alarmaTemp == true)
  {
    digitalWrite(ledRojo,1);
    Serial.println("Alerta por temperatura activa");
  }
  else
  {
    digitalWrite(ledRojo,0);
    alarmaTemp= false;
  }

  if(estadoHumActivo == true && alarmaHum == true)
  {
    digitalWrite(ledVerde,1);
    Serial.println("Alerta por humedad activa");
  }
  else
  {
    digitalWrite(ledVerde,0);
    alarmaHum= false;
  }

  Serial.println("Temperatura: " + String(data.temperature, 2) + "ºC " + "Humedad: " + String(data.humidity, 1) + "%");
  
  if(estadoTempActivo == true)
  {
    Serial.println("Alarma por temperatura conectada");
  }
  else
  {
    Serial.println("Alarma por temperatura desconectada");
  }
  if(estadoHumActivo == true)
  {
    Serial.println("Alarma por humedad conectada");
  }
  else
  {
    Serial.println("Alarma por humedad desconectada");
  }

  Serial.println("----");

  delay(1000); // this speeds up the simulation
  
}