//Incluir bibliotecas
#include "WiFi.h"
#include "DHTesp.h"
#include "HTTPClient.h"

//Definicoes e constantes
char SSIDName[] = "Wokwi-GUEST"; //nome da rede WiFi
char SSIDPass[] = ""; //senha da rede WiFI

const int DHT_PIN = 15; //terminal do sensor de temperatura e umidade

//Variaveis globais e objetos
DHTesp dhtSensor; //instancia o objeto dhtSensor a partir da classe DHTesp
float Temperatura; //variavel para guardar o valor da temperatura em Celsius
float Umidade; //variavel para guardar o valor da umidade em porcentagem
String webServiceURL = "https://api.callmebot.com/whatsapp.php?phone=[phone_number]&text=[message]&apikey=[your_apikey]"; //URL da API do CallMeBot (WhatsApp)

//Setup
void setup() {
  Serial.begin(9600);
  dhtSensor.setup(DHT_PIN, DHTesp::DHT22); //inicializa o sensor
  Serial.print("Conectando-se ao Wi-Fi");
  WiFi.begin(SSIDName, SSIDPass); //inicializa WiFi
  while (WiFi.status() != WL_CONNECTED) { //repete enquanto nao estabelece conexao
    delay(100);
    Serial.print(".");
  }
  Serial.println();
  Serial.println("Conectado!");
  Serial.print("IP: ");
  Serial.println(WiFi.localIP()); //imprime o endereco IP
}

//Loop
void loop() {
  //Coleta dados da temperatura e umidade
  TempAndHumidity data = dhtSensor.getTempAndHumidity();
  Temperatura = data.temperature; 
  Umidade = data.humidity;

  Serial.print("Temperatura: ");
  Serial.println(Temperatura);
  Serial.print("Umidade: ");
  Serial.println(Umidade);
 
  // Make HTTP request to web service
  HTTPClient http;
  http.begin(webServiceURL);
  int httpResponseCode = http.GET();
  if (httpResponseCode > 0) {
    Serial.print("HTTP response code: ");
    Serial.println(httpResponseCode);
    String payload = http.getString();
    Serial.println("Response payload: ");
    Serial.println(payload);
  } else {
    Serial.print("HTTP request failed with error code: ");
    Serial.println(httpResponseCode);
  }
  http.end();
  delay(5000);
}