Heartbeat and login timeout

Hi

My project has recently started generating heartbeat and login timeout errors as per serial printout below

13:59:31.949 -> [5404569] Connecting to blynk-cloud.com:80
13:59:36.967 -> [5409570] Connecting to blynk-cloud.com:80
13:59:41.969 -> [5414571] Connecting to blynk-cloud.com:80
14:00:02.438 -> [5435074] Connecting to blynk-cloud.com:80
14:00:20.961 -> [5453582] Connecting to blynk-cloud.com:80
14:00:39.456 -> [5472089] Connecting to blynk-cloud.com:80
14:00:57.993 -> [5490596] Connecting to blynk-cloud.com:80
14:01:16.488 -> [5509102] Connecting to blynk-cloud.com:80
14:01:34.985 -> [5527608] Connecting to blynk-cloud.com:80
14:01:53.486 -> [5546115] Connecting to blynk-cloud.com:80
14:01:57.348 -> [5549953] Ready (ping: 314ms).
14:05:59.876 -> [5792498] Heartbeat timeout
14:06:04.448 -> [5797070] Connecting to blynk-cloud.com:80
14:06:08.166 -> [5800782] Login timeout
14:06:10.156 -> [5802782] Connecting to blynk-cloud.com:80
14:06:11.074 -> [5803693] Ready (ping: 387ms).

I’ve pinged the blynk-cloud server and got 229ms, so I know the server is visible. Does anyone know what can cause a working project to suddenly start generating these errors?

The project code is


// Libraries //////////////////
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>

#define setPointPin 21  // Digital input from setpoint
#define moisturePin 34  // Analog input from sensor

// BLYNK Setup ///////////////

char auth[] = "";
char ssid[] = "";
char pass[] = "";

BlynkTimer timer; // initialise timer function

int moistureLevel;

void setup()
{
  moistureLevel = analogRead(moisturePin);
  // Debug console
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass);
  
  Blynk.virtualWrite(V0, moistureLevel);
  Blynk.virtualWrite(V2, digitalRead(setPointPin));
  Serial.println(moistureLevel);
  timer.setInterval(1800000L, readSensor);
}

void loop()
{
  Blynk.run();
    timer.run(); // run timers
}

void readSensor() {
  moistureLevel = analogRead(moisturePin);

  Blynk.virtualWrite(V2, digitalRead(setPointPin));
  Blynk.virtualWrite(V0, moistureLevel);

 Serial.print(moistureLevel);
 Serial.print("    ");
 Serial.println(digitalRead(setPointPin));
}
```cpp