#define BLYNK_TEMPLATE_ID "TMPL21k1XuA6L"
#define BLYNK_TEMPLATE_NAME "TESE Exercício"
#define BLYNK_AUTH_TOKEN "Your Auth Token"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
#define THRESHOLD 30
int ledState = false;
// Defina suas credenciais de WiFi e token Blynk
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define DHTPIN 15 // Pino onde o sensor DHT está conectado
#define DHTTYPE DHT22 // Tipo do sensor DHT (DHT11 ou DHT22)
#define LEDPIN 2 // Pino onde o LED está conectado
DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;
bool notificationSent = false; // Flag para controle de notificação
void sendSensorData() {
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
if (isnan(temperature) || isnan(humidity)) {
Serial.println("Falha ao ler o sensor DHT!");
return;
}
Serial.print("Temperatura: ");
Serial.print(temperature);
Serial.print("°C Umidade: ");
Serial.print(humidity);
Serial.println("%");
Blynk.virtualWrite(V0, temperature); // Enviar temperatura para o pino virtual V5
Blynk.virtualWrite(V1, humidity); // Enviar umidade para o pino virtual V6
if (temperature > THRESHOLD && !notificationSent) {
Blynk.logEvent("temperatura_alta", String("Temperatura alta: ") + temperature + "°C");
notificationSent = true; // Marca que a notificação foi enviada
} else if (temperature <= THRESHOLD) {
notificationSent = false; // Reseta a flag quando a temperatura volta ao normal
}
}
// Função para controlar o LED
BLYNK_WRITE(V2) {
ledState = param.asInt();
digitalWrite(LEDPIN, ledState);
if (ledState == 1)
Serial.println("LED Ligado");
else
Serial.println("LED Desligado");
}
void setup() {
Serial.begin(115200);
pinMode(LEDPIN, OUTPUT); // Define o pino do LED como saída
digitalWrite(LEDPIN, LOW);
Blynk.begin(auth, ssid, pass);
dht.begin();
timer.setInterval(1000L, sendSensorData); // Enviar dados a cada 5 segundos
}
void loop() {
Blynk.run();
timer.run(); // Executar BlynkTimer
}