NodeMcu lockup after 1 - 3 days

Hi, I have problems with my program using Blynk 2.0. Everything works fine, but after 1 - 3 days the program locks up, and can only be restarted with resetting by turning on/off the supply. I am focusing on the timers, I guess that they create conflicts after some time.
Any suggestions on how to set up the timers, to avoid conflicts, any comments are appriciated. Thanks

#define BLYNK_TEMPLATE_ID "TMPL9WbXWb"
#define BLYNK_DEVICE_NAME "SR Drivhus"
#define BLYNK_FIRMWARE_VERSION        "2.3.0"
#define BLYNK_PRINT Serial
#define APP_DEBUG
#define USE_NODE_MCU_BOARD

#include "BlynkEdgent.h"
#include <Wire.h>
#include <BH1750.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Time.h>
#include <TimeLib.h>
#include <PCF8574.h>
#include "RunningAverage.h"
#include <Adafruit_ADS1X15.h>
#include <WidgetRTC.h>
#define ONE_WIRE_BUS D5
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
Adafruit_ADS1115 ads;

/***** PCF8574 setup ************************************************/
PCF8574 pcf8574(0x38);
PCF8574 bh1750(0x23);
float Voltage0 = 0.0;
float Voltage1 = 0.0;
float Voltage2 = 0.0;
float Voltage3 = 0.0;
float Voltage4 = 0.0;
/******* Ultralyd ***********************************************/
const int trigPin = 13;                  //D7
const int echoPin = 12;                  //D6
long duration;
float ultra_afstand;
/**********   Strømmåling******************************************/
RunningAverage myRA(10);
int samples = 0;
float total = 0;
int numReadings = 10;
/***************Jordfugtighed**************************************************/
float soilStepMem;
long soilMin;
long soilMinMem;
long soilMax;
long soilMaxMem;
/*****************************************************************/
BlynkTimer timer;
BlynkTimer timer1;
Adafruit_BME280 bme_ude;
Adafruit_BME280 bme_inde;
/*********** Relæ define ******************************************/
#define R1TH P0                          //***** Relæ 1 temp for høj ***************
#define R2TL P1                          //***** Relæ 2 temp for lav ***************
#define R3LH P2                          //***** Relæ 3 lys tændes   ***************
#define R4SL P3                          //***** Relæ 4 Soil for lav fugtighed *****
#define M1TL P4                          //***** Motor frem og tilbage *************
#define M1TH P5                          //***** Motor hastighed ******************* 

float tempUde;
float humUde;
float pressureUde;
float tempInde;
float humInde;
float pressureInde;
float lus;
float jordTemp;
float soilValue;
int vanding; 
int vanding_mem;
int nat_lys;                             //V16 henter status på nat lys on/off
int nat_lys_mem = 1;
int temp_max;                            //V21 henter status på temp max on/off
int temp_min;                            //V22 henter status på temp min on/off         
int led_lys_min;                         //V23 henter status på lys min on/off  
int led_vanding_on;                      //V24 henter status på vanding on/off  
int lys_min;                             //V20 henter status på lys   
int lys_min_mem; 
int temp_min_mem;
int temp_max_mem;
int16_t adc0, adc3;
char currentTime[80];
char currentDate[80];
int voltage_mem;
int fugt_min;
int fugt_min_mem;

BH1750 lightMeter;
int lux;

BLYNK_CONNECTED() {                      //When device is connected to server...
Blynk.sendInternal("rtc", "sync");       //request current local time for device
Blynk.syncAll();
}
/***********Setup ******************************************/
void setup() {
sensors.begin();
Serial.begin(9600);
delay(100);
BlynkEdgent.begin();
bme_ude.begin(0x76);                     //BME280 I2C adresse ude
bme_inde.begin(0x77);                    //BME280 I2C adress inde

/*********** Relæ setup******************************************/
pcf8574.pinMode(R1TH, OUTPUT);           //***** Relæ 1 temp for høj ***************
pcf8574.pinMode(R2TL, OUTPUT);           //***** Relæ 2 temp for lav *************** 
pcf8574.pinMode(R3LH, OUTPUT);           //***** Relæ 3 lys tændes   ***************
pcf8574.pinMode(R4SL, OUTPUT);           //***** Relæ 4 Soil for lav fugtighed *****
pcf8574.pinMode(M1TL, OUTPUT);           //***** Motor frem og tilbage *************
pcf8574.pinMode(M1TH, OUTPUT);           //***** Motor hastighed ******************* 
pcf8574.digitalWrite(R1TH, HIGH);        //***** Relæ 1 temp høj sat off ***************
pcf8574.digitalWrite(R2TL, HIGH);        //***** Relæ 2 temp lav sat off ***************
pcf8574.digitalWrite(R3LH, HIGH);        //***** Relæ 3 lys sat on ***************d
pcf8574.digitalWrite(R4SL, HIGH);        //***** Relæ 4 soil høj sat on ***************
pcf8574.digitalWrite(M1TL, HIGH);        //***** Relæ Motor sat on ***************
pcf8574.digitalWrite(M1TH, HIGH);        //***** Relæ M Motor hastighed sat on ***************

pcf8574.begin();
ads.begin();
pinMode(trigPin, OUTPUT);                // Sets the trigPin as an Output
pinMode(echoPin, INPUT);                 // Sets the echoPin as an Input
WidgetRTC rtc;
lightMeter.begin();

//************ Læse indstillinger og automation ****************************************
timer.setInterval(1000L, clockDisplay);
Blynk.run();
timer.setInterval(2111L, current);
Blynk.run();
timer.setInterval(3111L, inde_temp_hum);
Blynk.run();
timer.setInterval(5111L, ude_temp_hum_press);
Blynk.run();
timer.setInterval(6111L, light);
Blynk.run();
timer.setInterval(7111L, UltraLyd);
Blynk.run();
timer.setInterval(8111L, inde_jordfugt);
Blynk.run();
timer.setInterval(9111L, jord_temp);
Blynk.run();
}
//************ Læse indstillinger og automation ****************************************
BLYNK_WRITE(V16)                         // vanding
{  int vanding = param.asInt();           // Status for vanding on =1 off = 0
  vanding_mem = vanding;}
BLYNK_WRITE(V13)                         // nat_lys
{  int nat_lys = param.asInt();           // Status for nat_lys on =1  off = 0
  nat_lys_mem = nat_lys;}
BLYNK_WRITE(V17)                         // Status for slider temp_max
{  temp_max = param.asInt();              // Sætter indkommen værdi fra V21 lig slider
  temp_max_mem = temp_max;}
BLYNK_WRITE(V19)                         // Status for slider temp_max
{  temp_min = param.asInt();              // Sætter indkommen værdi fra V22 lig slider
  temp_min_mem = temp_min;}
BLYNK_WRITE(V20)                         // Status for slider led_lys_min
{  lys_min = param.asInt();               // Sætter indkommen værdi fra V23 lig slider
  lys_min_mem = lys_min;}
BLYNK_WRITE(V18)                         // Status for slider led_lys_min
{  fugt_min = param.asInt();              // Sætter indkommen værdi fra V23 lig slider
  fugt_min_mem = fugt_min;}
//************ void loop ****************************************
void loop() {
BlynkEdgent.run();
Blynk.run();
timer.run();
Blynk.run();
}

//************ Målinger ude temp/hum/press *************0,34***************************
void ude_temp_hum_press()
{
tempUde=bme_ude.readTemperature();
humUde=bme_ude.readHumidity ();
pressureUde=bme_inde.readPressure();
Blynk.virtualWrite(V3,tempUde); 
Blynk.virtualWrite(V4,humUde);
Blynk.virtualWrite(V5,pressureUde/100); 
}
//************ Målinger Light **************0,23**************************
void light()
{
float lux = lightMeter.readLightLevel();
Blynk.virtualWrite(V9,lux);
if
  (nat_lys_mem == 0)                     // nat_lys slukket
  {
   pcf8574.digitalWrite(R3LH, HIGH);     // Slukker for lyset
   Blynk.virtualWrite(V23, 0);           // V23 slukker lyset
  }
  else
   if
    (lux < lys_min)                      // Tænder lys
        {
        pcf8574.digitalWrite(R3LH, LOW);
       Blynk.virtualWrite(V23, 255);     //V23 viser lys tændt
       }
    else
    if (lux > lys_min+10)                // Hysterese på lys
    {  pcf8574.digitalWrite(R3LH, HIGH); // LOW = lys on
       Blynk.virtualWrite(V23, 0);       //V23 viser lys slukket
    }
    
}
//**********************Målinger inde temp/hum/press*******0,60 sec varierer***********************
void inde_temp_hum()
{
tempInde=bme_inde.readTemperature();
humInde=bme_inde.readHumidity ();
pressureInde=bme_inde.readPressure();
Blynk.virtualWrite(V6,tempInde); 
Blynk.virtualWrite(V7,humInde);
Blynk.virtualWrite(V8,pressureInde/100);
if
  (tempInde > temp_min)                  // normal temp
  {
   pcf8574.digitalWrite(R2TL, HIGH); 
   Blynk.virtualWrite(V22, 0);           // V23 viser lys slukket
  }
  else
  {
  pcf8574.digitalWrite(R2TL, LOW);       // Tænder for varmen
   Blynk.virtualWrite(V22, 255);         // V23 viser lys tændt
  }
   if
    (tempInde < temp_max)                // For varmt
    {
    pcf8574.digitalWrite(R1TH, HIGH);    // Tænder ventilator
    pcf8574.digitalWrite(M1TL, LOW);     // Lukker dør
    pcf8574.digitalWrite(M1TH, HIGH);    // Lukker dør
    Blynk.virtualWrite(V21, 0);  
    }
    else
    if (tempInde+1 >= temp_max)
    {
    pcf8574.digitalWrite(R1TH, LOW);     // Tænder varme
    pcf8574.digitalWrite(M1TL, HIGH);    // Åbner dør
    pcf8574.digitalWrite(M1TH, LOW);     // Åbner dør
    Blynk.virtualWrite(V21, 255);        // varme on
    }
     
}
//**************Målinger inde jordfugtighed ********0,35 sec******************************
void inde_jordfugt()
{
adc3 = ads.readADC_SingleEnded(3);
soilValue = adc3/10;
soilValue = map(soilValue, 100,1800,100,0);     //Mapping soilvalue
Blynk.virtualWrite(V12,soilValue); 
if
  ((vanding_mem == 1)||(soilValue < fugt_min)) // vanding on
  {
   pcf8574.digitalWrite(R4SL, LOW);      // vander
    if(soilValue < fugt_min)
{Blynk.setProperty(V24, "color","#00ff00");}    // Gul
else
{Blynk.setProperty(V24, "color","#0000ff");}
  Blynk.virtualWrite(V24, 255);         // V24 vander on}
}
else
    {  pcf8574.digitalWrite(R4SL, HIGH);// vander
   Blynk.virtualWrite(V24, 0);          // V24 vander off
    }
 }
//*************Set time*************0,24 sec****************************
void clockDisplay()
{
sprintf(currentTime, "%02d:%02d:%02d", hour(), minute(), second());
sprintf(currentDate, "%02d:%02d:%02d", day(), month(), year());
Blynk.virtualWrite(V14, currentTime);
Blynk.virtualWrite(V15, currentDate);

}
//************Ultralyd*******0,11 sec*********************************
void UltraLyd()
{
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
ultra_afstand= duration*0.034/2;
Blynk.virtualWrite(V25, String(ultra_afstand,1)); 
 
}
//***************Strømmåling******0.13 sec******************************
void current()
{
adc0 = ads.readADC_SingleEnded(0);
Voltage1 = 10896 - adc0;
if (Voltage1 <0)
 {Voltage1 = Voltage1 *-1;}               // Lavet for usymetri i sinus f.eks. halvbølge
 voltage_mem=map(Voltage1, 64,1500,1,2232);
 //Voltage2 = voltage_mem + Voltage2;
{Blynk.virtualWrite(V26, voltage_mem);}
//{Blynk.virtualWrite(V27, Voltage2/3600);}

}
 //***************Jord_temp********0.78 sec*****************************
void jord_temp()
{
sensors.requestTemperatures();
float jordTemp = sensors.getTempCByIndex(0);
Blynk.virtualWrite(V11,jordTemp);
}

What is the point of this ?? I can see there are n number of Blynk.run in your sketch !!

BlynkEdgent.run(); should do the working. You need not have it throughout your code. Try removing those multiple entries and see if that solves your issue.

Hi Madhukesh,
Thanks for your fast response. Blynk.run() I introduced because I saw some notice where it is mentioned that it clould help clearing up timing issues. Anyhow I will give it another try without Blynk.run(), I will give a feedback after 3 days needed to see if it works.