#include <WiFi.h>
#include <DHTesp.h>
#include <HTTPClient.h>
const char SSIDName[] = "Wokwi-GUEST"; // Nome da rede para o ESP32 conectar.
const char SSIDPass[] = ""; // Senha da rede.
const int DHT_PIN = 15; // Pino do sensor DHT22 ligado ao ESP32.
DHTesp sensor; // Instancia do sensor DHT.
float Temperatura; // Variavel para guardar a temperatura lida pelo sensor DHT22 em celsius.
float Umidade; // Variavel para guardar a umidade lida pelo sensor DHT22 em porcentagem.
String callMeBotURL = "https://api.callmebot.com/whatsapp.php?phone=[telefone]&apikey=[your_apikey]&text=";
String mensagem;
// Setup - configuracao do ESP32, inicializacao do sensor DHT22 e estabelecimento da conexao WiFI.
void setup() {
Serial.begin(9600);
sensor.setup(DHT_PIN, DHTesp::DHT22); // Inicializa o sensor DHT22.
Serial.print("Conectando-se ao Wi-Fi!");
WiFi.begin(SSIDName, SSIDPass); // Inicializa a conexao WiFi.
// Envia `.` enquando a conexao WiFI nao e estabelecida.
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println();
Serial.println("Conectado!");
Serial.print("IP: ");
Serial.println(WiFi.localIP()); // Imprime o IP local do ESP32 na rede.
}
// Loop
void loop() {
// Parte I - Leitura do sensor DHT22.
TempAndHumidity data = sensor.getTempAndHumidity(); // Recebe dados de temperatura e humidade do sensor DHT22.
Temperatura = data.temperature; // Armazena a temperatura lida na variavel Temperatura em C.
Umidade = data.humidity; // Armazena a umidade lida na variavel Umidade em porcentagem.
Serial.print("Temperatura: ");
Serial.println(Temperatura);
Serial.print("Umidade: ");
Serial.println(Umidade);
// Caso a temperatura seja maior que 45 C, siga a parte II.
if (Temperatura > 45) {
mensagem = callMeBotURL + "Cuidado! Está muito quente, a temperatura agora é de " + String(Temperatura) + "ºC!";
// Parte II - Envio da mensagem via HTTP pelo CallMeBot.
HTTPClient http;
http.begin(mensagem);
int code = http.GET();
if (code > 0) {
Serial.print("HTTP response code: ");
Serial.println(code);
String payload = http.getString();
Serial.print("HTTP response payload: ");
Serial.println(payload);
} else {
Serial.print("HTTP falhou com o codigo de erro: ");
Serial.println(code);
}
// Finaliza o objeto HTTP.
http.end();
}
// Delay de 5s para verificar a temperatura novamente.
delay(5000); // this speeds up the simulation
}