Buffer over flow...please help

How many DHT you have? And i what pin is attached? (the reply must be one at pin13) Why define the same const 3 times?

Well try this code…

#include <DHT.h>
#include <ESP8266_Lib.h>
#include <BlynkSimpleShieldEsp8266.h>
#include <LiquidCrystal.h>
#include <Tasker.h>

char auth[] = "DO NOT SHARE THIS INFORMATION!!";
char ssid[] = "EITHER THIS OTHER INFORMATION!!";
char pass[] = "OR NEITHER OTHER INFORMATION!!";
#define EspSerial Serial
#define ESP8266_BAUD 115200
#define DHTTYPE DHT11   // DHT 11
#define DHTPIN 13
#define trigger 7
#define echo 8
#define RELAY1  9
#define RELAY2 13 
#define RELAY3 10
#define buzzer 14
#define CycleSensorInterval 2000
#define LCDLines 4
#define LCDColumns 20
#define sensorPin A0
#define ledPin 40
#define ldrPin A2

Tasker Task(true);
DHT DHTSensor(DHTPIN, DHTTYPE);
byte Sensor2Check=0;
ESP8266 wifi(&EspSerial);

LiquidCrystal LCD(12, 11, 5, 4, 3, 2);

void CenterLCD(String SMS,byte Line=0,long ClearAfter=0);

void ClearLCD(int Line)
{
  CenterLCD("",Line);
}
void LeftLCD(String SMS,byte Line=0,long ClearAfter=0)
{
  if (Task.scheduledIn(ClearLCD,Line)>0) Task.cancel(ClearLCD,Line);
  String FullText=SMS;
  for (byte i=SMS.length();i<LCDColumns;i++) FullText.concat(" ");
  LCD.setCursor(0,Line);
  //FullText.toUpperCase();
  LCD.print(FullText);
  if (ClearAfter>0) Task.setTimeout(ClearLCD,ClearAfter,Line);
}

void CenterLCD(String SMS,byte Line=0,long ClearAfter=0)
{
  if (Task.scheduledIn(ClearLCD,Line)>0) Task.cancel(ClearLCD,Line);
  String FullText="";
  int inicio=floor((LCDColumns-(SMS.length())) / 2);
  if (inicio<0) inicio=0;
  for (byte i=0;i<LCDColumns;i++)
  {
    if (i<inicio || i>=inicio+SMS.length()) FullText.concat(" ");
    else FullText.concat(SMS.charAt(i-inicio));
  }
  LCD.setCursor(0,Line);
  //FullText.toUpperCase();
  LCD.print(FullText);
  if (ClearAfter>0) Task.setTimeout(ClearLCD,ClearAfter,Line);
}
float GetDistance()
{
  digitalWrite(trigger,LOW);
  delayMicroseconds(2);
  digitalWrite(trigger,HIGH);
  delayMicroseconds(10);
  digitalWrite(trigger,LOW);
  delayMicroseconds(2);
  return (float) pulseIn(echo,HIGH)*340/20000;
}
void DoBeep()
{
  digitalWrite(buzzer,!digitalRead(buzzer));
}
void CheckSensors()
{
  for (int i=0;i<=3;i++) ClearLCD(i);
  Sensor2Check++;
  if (Sensor2Check>4) Sensor2Check=1;
  switch (Sensor2Check)
  {
    case 1:
      CenterLCD("Moisture Indicator",0);
      if (analogRead(sensorPin)>=400)
      {
        if (!digitalRead(RELAY1))
        {
          digitalWrite(RELAY1,HIGH);
          Blynk.notify("ESP8266 Alert - Pump Turned ON");
          CenterLCD("Dry, Pump Turned ON",1);
        }
        else CenterLCD("Dry, Pump ON",1);
      }
      else
      {
        if (digitalRead(RELAY1))
        {
          digitalWrite(RELAY1,LOW);
          Blynk.notify("ESP8266 Alert - Pump Turned OFF");
          CenterLCD("Wet, Pump Turned OFF",1);
        }
        else CenterLCD("Wet, Pump OFF",1);
      }   
      LeftLCD("Moist: "+String(100 -((analogRead(sensorPin)/1023.00) * 100 ))+"%",2);
      LeftLCD("H2O Level: "+String(analogRead(sensorPin), DEC),3);
    break;
    case 2:
      CenterLCD("Light Indicator",0);
      if (analogRead(ldrPin)<=100) 
      {
        if (digitalRead(ledPin))
        {
          digitalWrite(ledPin,LOW);
          Blynk.notify("ESP8266 Alert - Lights Turned OFF");
          CenterLCD("Lights Turned OFF!",1);
        }
        else CenterLCD("BRIGHT, Lights OFF",1);
      }
      else
      {
        if (!digitalRead(ledPin))
        {
          digitalWrite(ledPin,HIGH);
          Blynk.notify("ESP8266 Alert - Lights Turned ON");
          CenterLCD("Lights Turned ON");
        }
        else CenterLCD("DARK, Lights ON");
      }
    break;
    case 3:
      CenterLCD("Water Level in Tank",0);
      CenterLCD(String(GetDistance())+"Cm",1);
      if(GetDistance()<=12)
      {
        CenterLCD("Tank Full Motor OFF",2);
        if (digitalRead(RELAY2))
        {
          if (Task.scheduledIn(DoBeep)>0) Task.cancel(DoBeep);
          digitalWrite(buzzer, LOW);
          digitalWrite(RELAY2, LOW);
          Blynk.notify("ESP8266 Alert - Motor Turned OFF");
          CenterLCD("Motor Turned OFF",2);
        }
      } 
      else
      {
        CenterLCD("LOW Water Level",2);
        if(!digitalRead(RELAY2))
        {
          digitalWrite(RELAY2,HIGH);
          digitalWrite(buzzer, HIGH);
          Blynk.notify("ESP8266 Alert - Motor Turned ON");
          CenterLCD("Motor Turned ON",2);
          Task.setTimeout(DoBeep,500);
        }
      }
    break;
    case 4:
      CenterLCD("HEAT & HUMIDITY",0);
      LeftLCD("Temparature: "+String(DHTSensor.readTemperature())+"*C",1);
      LeftLCD("Humidity: "+String(DHTSensor.readHumidity())+"%",2);
      if(DHTSensor.readTemperature()<=35)
      {
        CenterLCD("Normal Temperature",3);
        if(digitalRead(RELAY3))
        {
          digitalWrite(RELAY3,LOW);
          Blynk.notify("ESP8266 Alert - Fans Turned OFF");
          CenterLCD("FAN Turned OFF",3);
        }
      }
      else
      {
        CenterLCD("High Teperature",3);
        if(!digitalRead(RELAY3))
        {
          digitalWrite(RELAY3,HIGH);
          Blynk.notify("ESP8266 Alert - Fans Turned ON");
          CenterLCD("FAN Turned ON",3);
        }
      }
    break;
  }
}
void setup()
{
  LCD.begin(LCDColumns,LCDLines);
  LCD.clear();
  CenterLCD("IOT Based Smart",0);
  CenterLCD("AGRICULTURE",1);
  pinMode(sensorPin, INPUT);
  pinMode(ldrPin, INPUT); 
  pinMode(echo, INPUT);
  pinMode(RELAY1, OUTPUT);
  pinMode(RELAY2, OUTPUT);
  pinMode(RELAY3, OUTPUT); 
  pinMode(ledPin, OUTPUT);
  pinMode(trigger, OUTPUT);
  pinMode(buzzer, OUTPUT);
  EspSerial.begin(ESP8266_BAUD);
  Blynk.begin(auth, wifi, ssid, pass);
  Task.setTimeout(CheckSensors,CycleSensorInterval);
}

void loop()
{
  Blynk.run();
  Task.loop();
}

I make the system totally automated. The system cycles the sensor check every 2 seconds (configurable) and check one sensor each time.

I didn’t try it… but it should work fine!

There is a clear problem and that is that when the engine of the water tank is turned on, the level is checked every 8 seconds and depending on the speed of the engine the water could overflow.

With minor changes you can make it works with a simple ESP-01 with a MCP23017 and a I2C LCD

If the overflow still happening maybe it’s due to some var type mistake… Post a log or say where it fails