#define BLYNK_TEMPLATE_ID "TMPL3-OTurGjW"
#define BLYNK_TEMPLATE_NAME "Hello LED"
#define BLYNK_AUTH_TOKEN "FqhLnU8piFC5e8uu0wCxMwPeHO5SoIWZ"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define TRIG 5
#define ECHO 18
#define ULTRA V3
int tankHeight = 50; // Tank height in cm
bool waterAlertSent = false;
// Function prototype
int readWaterLevel();
void setup()
{
Serial.begin(115200);
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
}
void loop()
{
Blynk.run();
int waterLevel = readWaterLevel();
Blynk.virtualWrite(ULTRA, waterLevel);
if (waterLevel >= tankHeight && !waterAlertSent)
{
Blynk.logEvent("water_high", "High Level of Water");
waterAlertSent = true;
}
if (waterLevel < tankHeight)
{
waterAlertSent = false;
}
}
int readWaterLevel()
{
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
long duration = pulseIn(ECHO, HIGH, 30000);
if (duration == 0)
return 0; // No echo received
int distance = duration * 0.034 / 2;
int waterLevel =distance- tankHeight;
Serial.print("Water Level: ");
Serial.print(waterLevel);
Serial.println(" cm");
delay(1000);
}