#define BLYNK_TEMPLATE_ID "TMPL3a3CHvY_F"
#define BLYNK_TEMPLATE_NAME "WEATHER"
#define BLYNK_AUTH_TOKEN "FSKtqXDoJCPpo3POOqPOU3dym4eDyLNT"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#define BLYNK_PRINT Serial
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
char auth[] = BLYNK_AUTH_TOKEN;
#define BLYNK_PRINT Serial
#include <Wire.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
#define DHT_BLYNK_VPIN_TEMPERATURE V2
#define DHT_BLYNK_VPIN_HUMIDITY V3
#define DHTPIN 15
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;
int DHT_ENABLED = 0;
float DHT_HUMIDITY;
float DHT_HUMIDITY_IGNORED_DELTA = 0.01;
float DHT_TEMPERATURE;
float DHT_TEMPERATURE_IGNORED_DELTA = 0.01;
int RUN = 0;
void setupDht() {
Serial.println("DHT startup!");
dht.begin();
DHT_ENABLED = 1;
}
void sendDhtData() {
Serial.println("Sending DHT data");
Blynk.virtualWrite(DHT_BLYNK_VPIN_TEMPERATURE, DHT_TEMPERATURE);
Blynk.virtualWrite(DHT_BLYNK_VPIN_HUMIDITY, DHT_HUMIDITY);
}
void readAndSendDhtData() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT");
} else {
float humidityDelta = abs(humidity - DHT_HUMIDITY) - DHT_HUMIDITY_IGNORED_DELTA;
float temperatureDelta = abs(temperature - DHT_TEMPERATURE) - DHT_HUMIDITY_IGNORED_DELTA;
if (humidityDelta > 0 || temperatureDelta > 0) {
DHT_HUMIDITY = humidity;
DHT_TEMPERATURE = temperature;
Serial.printf("Humidity: %f%%. Temperature: %f*C.\n", humidity, temperature);
sendDhtData();
}
}
}
void reandAndSendSensorsData() {
readAndSendDhtData();
Serial.println("Sending data from sensors");
}
BLYNK_CONNECTED()
{
Blynk.syncVirtual(V2);
Serial.println("Inside Blynk Connected");
Blynk.syncVirtual(V3);
Serial.println("Inside Blynk Connected");
}
void myTimerEvent()
{
Blynk.virtualWrite(V2, millis() / 1000);
Blynk.virtualWrite(V3, millis() / 1000);
}
void setup()
{
Serial.begin(115200);
Blynk.begin(BLYNK_AUTH_TOKEN,ssid,pass);
setupDht();
timer.setInterval(5000L, reandAndSendSensorsData);
}
void loop() {
Blynk.run();
timer.run();
}