BLYNK
BLYNK.IO       📲 GETTING STARTED       📗 DOCS       ❓HELP CENTER       👉 SKETCH BUILDER

A problem that did not happen to me in blynk 1.0

This code works on blynk 1.0 without any problems, but when I migrated it to blynk 2.0, node mcu rebooted as if there was a fatal error

#define BLYNK_TEMPLATE_ID "TMPLJdwoGQJZ"
#define BLYNK_DEVICE_NAME "ULTRA TECH"
#define BLYNK_FIRMWARE_VERSION        "0.3.0"
#define BLYNK_PRINT Serial
#define APP_DEBUG
#include <ModbusMaster.h>
#include <SoftwareSerial.h>
#include "BlynkEdgent.h"
#include <TimeLib.h>
#include <ESP8266Ping.h>

#define VT_PIN A0
#define vPIN_LedRelay1                V0   // ليد ريلي 1
#define vPIN_Relay1                   V1   // فيرجوال ريلي 1
#define vPIN_LogTerminal              V2   // terminal
#define vPIN_OnOffTimr1               V3   // تفعيل وتعطيل مؤقت 1
#define vPIN_BatteryVoltage           V4  // فيرجوال الفولت 
#define vPIN_LowVoltage               V5   //فيرجوال انخفاض الفولط للرسالة
#define vPIN_XVoltage                 V6   // معايرة الفولت
#define vPIN_LogTerminalPing          V7   // تيرمنال البينغ
#define vPIN_OnOffPing                V8   // تفعيل وتعطيل البينغ
#define vPIN_Timer1                   V15  // مؤقت 1
#define vPIN_Time                     V16  // الساعة
#define vPIN_Date                     V17  // التاريخ

BlynkTimer UltraTimer;

WidgetLED LedRelay1(vPIN_LedRelay1);

const int Relay1  = D1;
const int Switsh1  = D0;
bool  OnOffTimr1 =LOW;
bool  OnOffPing =LOW;
bool buttonStatus1 = 0;
bool buttonTemp1 = 0;
bool IsFirstRun = 1;
float XVolt = 0;
int vt_read = 0;
float voltage = 50;
float LowVolt = 0;
bool AlertMsgLowVolt = 0;
const char* remote_host = "8.8.8.8"; // ايبي لعمل بينغ عليه
int WaitBlynk1 = 60;
int Wait1 = 0;



long StartH1;
long StartM1;
long StartS1;
long StopH1;
long StopM1;
long StopS1;

int start_time;       // وقت البدء المجدول (بالثواني)
int active_duration;  // مدة التنشيط (بالثواني)
int weekdays[8];      // أيام الأسبوع المجدولة (الصفيف 8: 0 غير مستخدم)

BLYNK_CONNECTED()                     // استعادة القيم من السيرفر بعد اعادة اقلاع الجهاز
{
  Blynk.sendInternal("rtc", "sync");
  if (IsFirstRun==1)
  {
  delay(200);
  Blynk.syncVirtual(vPIN_Timer1,vPIN_OnOffTimr1,vPIN_Relay1,vPIN_OnOffPing,vPIN_XVoltage,vPIN_LowVoltage);  
}}



///////////////// BLYNK_WRITES ////////////////////////////



BLYNK_WRITE(vPIN_Relay1)                        // اداة التحكم في الريلي
{
  if (param.asInt() == 1)
  {
    digitalWrite(Relay1, HIGH);
    LedRelay1.on();
    Serial.println("1 تم التشغيل من التطبيق");
    Blynk.notify("1 تم التشغيل من التطبيق");
    Blynk.virtualWrite(vPIN_LogTerminal,"تم التشغيل من الموبايل الساعة: "+String(hour()) + ":" + minute() + ":" + second()+"  بتاريخ:  " +String (day()) + "-" + month() + "-" + year());
     
  }
  else
  {
    digitalWrite(Relay1, LOW);
    LedRelay1.off();
    Serial.println("1 تم الايقاف من التطبيق");
    Blynk.notify("1 تم الايقاف من التطبيق");
    Blynk.virtualWrite(vPIN_LogTerminal,"تم الإيقاف من الموبايل الساعة: "+String(hour()) + ":" + minute() + ":" + second()+"  بتاريخ:  " +String (day()) + "-" + month() + "-" + year());
    
   
  }
}


BLYNK_WRITE(vPIN_XVoltage)              // اداة معايرة فولت البطاريات
{
  XVolt=param.asFloat();
}


BLYNK_WRITE(vPIN_LowVoltage)             // اداة ارسال اشعار عند انخفاض الفولت
{
  LowVolt=param.asFloat();
  Serial.println("تم تغيير الحد الأدنى للفولط");
}



BLYNK_WRITE(vPIN_OnOffPing)            // اداة تفعيل وتعطيل البينغ
{
  OnOffPing=param.asFloat();
  if (OnOffPing==HIGH){
   // Blynk.virtualWrite(vPIN_LogTerminal1,"تم تفعيل الاتصال الذكي الوقت:  " +String(hour()) + ":" + minute() + ":" + second()+"  " +String (day()) + "-" + month() + "-" + year() );
  } 
    if(OnOffPing==LOW){
    //Blynk.virtualWrite(vPIN_LogTerminal1,"تم تعطيل الاتصال الذكي الوقت:  " +String(hour()) + ":" + minute() + ":" + second()+"  " +String (day()) + "-" + month() + "-" + year() );
  }
}


BLYNK_WRITE(vPIN_OnOffTimr1)                    // ادا تفعيل وتعطيل المؤقت الزمني
{
  OnOffTimr1=param.asFloat();
  if (OnOffTimr1==HIGH){
    Blynk.virtualWrite(vPIN_LogTerminal,"تم تفعيل المؤقت1 الوقت:  " +String(hour()) + ":" + minute() + ":" + second()+"  " +String (day()) + "-" + month() + "-" + year() );
  }
  
    if(OnOffTimr1==LOW){
    Blynk.virtualWrite(vPIN_LogTerminal,"تم تعطيل المؤقت1 الوقت:  " +String(hour()) + ":" + minute() + ":" + second()+"  " +String (day()) + "-" + month() + "-" + year() );
  }
}



BLYNK_WRITE(vPIN_Timer1)                                   // اداة ادخال الوقت في المؤقت رقم 1
{
  setTime(param);
}



BLYNK_WRITE(InternalPinRTC)                           // يتحقق من قيمة InternalPinRTC عند المزامنة مع Blynk
{
  const unsigned long DEFAULT_TIME = 1357041600; // Jan 1 2013
  unsigned long blynkTime = param.asLong();
  
  if (blynkTime >= DEFAULT_TIME) // تحقق من أن العدد الصحيح وقت صالح (أكبر من 1 كانون الثاني (يناير) 2013)
  {
   setTime(blynkTime);                      // مزامنة الساعة في مكتبة TimeLib مع القيمة المستلمة من Blynk
   //Serial.println(blynkTime);
  String currentTime = String(hour()) + ":" + minute() + ":" + second();
  String currentDate = String(day()) + "-" + month() + "-" + year();
  Serial.println(" التاريخ: "+String(currentDate)+"الساعة:   "+String(currentTime));
  Blynk.virtualWrite(vPIN_Time, "الساعة:  "+String(currentTime));  
  Blynk.virtualWrite(vPIN_Date, "التاريخ:  "+String(currentDate));        
  }
}




/////////////////////// VOIDS /////////////////////////

void checkStatusButton1()   // تابع التشغيل من الطقة
{
  buttonStatus1 = digitalRead(Switsh1);

  if (buttonStatus1 != buttonTemp1)
  {
    if (buttonStatus1 == HIGH) {
      digitalWrite(Relay1, HIGH);
      Blynk.virtualWrite(vPIN_Relay1, 1);
      LedRelay1.on();
      Serial.println("1 تم التشغيل يدويا");
      Blynk.notify("1 تم التشغيل يدويا");
      Blynk.virtualWrite(vPIN_LogTerminal,"تم التشغيل من الطقة الساعة: "+String(hour()) + ":" + minute() + ":" + second()+"  بتاريخ:  " +String (day()) + "-" + month() + "-" + year());
      
    }
    else {
      digitalWrite(Relay1, LOW);
      Blynk.virtualWrite(vPIN_Relay1, 0);
      LedRelay1.off();
      Serial.println("1 تم الايقاف يدويا");
      Blynk.notify("1 تم الايقاف يدويا");
      Blynk.virtualWrite(vPIN_LogTerminal,"تم الإيقاف من الطقة الساعة: "+String(hour()) + ":" + minute() + ":" + second()+"  بتاريخ:  " +String (day()) + "-" + month() + "-" + year());
     
    }
    buttonTemp1 = buttonStatus1;
  }
}




void Timr1()                                         // تابع المؤقت رقم 1
{
 
    
    if ((hour() == StartH1) and (minute() == StartM1) and (second() > StartS1)and(digitalRead(Relay1)==LOW)and(OnOffTimr1==HIGH))
    {
      digitalWrite(Relay1, HIGH );
      Serial.println("تم التشغيل");
      Blynk.virtualWrite(V1,1);
      LedRelay1.on();
      Serial.println("تم التشغيل من المؤقت الساعة: ");
      Blynk.virtualWrite(vPIN_LogTerminal,"تم التشغيل من المؤقت الساعة: "+String(hour()) + ":" + minute() + ":" + second()+"  بتاريخ:  " +String (day()) + "-" + month() + "-" + year());

      
    }

    if ((hour() == StopH1) and (minute() == StopM1) and (second() > StopS1)and(digitalRead(Relay1)==HIGH)and(OnOffTimr1==HIGH))
    {
      
      digitalWrite(Relay1, LOW );
      Serial.println("تم الايقاق");
      Blynk.virtualWrite(V1,0);
      LedRelay1.off();
      Serial.println("تم الإيقاف من المؤقت الساعة: ");
      Blynk.virtualWrite(vPIN_LogTerminal,"تم الإيقاف من المؤقت الساعة: "+String(hour()) + ":" + minute() + ":" + second()+"  بتاريخ:  " +String (day()) + "-" + month() + "-" + year());

    }
    
  }




void ping1()                                                // تابع البينغ
{
  if(OnOffPing==HIGH){
  if(Ping.ping(remote_host)) {
    Serial.println("PIN:  "+String(Ping.averageTime()) + "ms" );
    Blynk.virtualWrite(vPIN_LogTerminalPing,"البينغ: "+String(Ping.averageTime()) + "ms" );
    
  } else {
    Serial.println("انقطع البينغ");
    Blynk.virtualWrite(vPIN_LogTerminalPing, "انقطع البينغ" );
       
  }

  if (( Ping.averageTime() < 1 ) and ( Wait1<WaitBlynk1 ))
    { 
      
      Blynk.run(); 
      delay(1000);
      Wait1++;
      Serial.println("انقطع البينغ");
      Serial.println(Wait1);  
    }
       
    if ((Ping.averageTime() < 1 ) and ( Wait1==WaitBlynk1 ))
  {
    //Blynk.run();
    Wait1 = 0;
  }
} }

  

void checkTime()                              // تابع تحديث الوقت من السيرفر
{ 
  Blynk.sendInternal("rtc", "sync"); 

  }





void PowerMeter()                             // تابع فولت البطاريات
{
  vt_read = analogRead(VT_PIN);
  voltage = vt_read * (XVolt / 1023.0) * 3.0;
  Blynk.virtualWrite(vPIN_BatteryVoltage, voltage);
  Serial.print("Volts: "); 
  Serial.println(voltage, 3);
  if ((voltage>LowVolt)&& (AlertMsgLowVolt==1))
  {
   AlertMsgLowVolt=0; 
  }
  if ((voltage<LowVolt) && (AlertMsgLowVolt==0))
  {
    Blynk.logEvent("فولط البطاريات أقل من الحد المحدد ""\n"+String(LowVolt));
    Blynk.virtualWrite(vPIN_LogTerminal,"فولط البطاريات أقل من الحد المحدد الوقت:  " +String(hour()) + ":" + minute() + ":" + second()+"  " +String (day()) + "-" + month() + "-" + year() );

    AlertMsgLowVolt=1;
  }
}





void setTime(BlynkParam param)                // الحصول على البيانات من اداة إدخال الوقت وتخزينها في المتغيرات
{

  TimeInputParam t(param);

  if (t.hasStartTime()) {
    Serial.println(String("وقت التشغيل: ") +
    t.getStartHour() + ":" +
    t.getStartMinute() + ":" +
    t.getStartSecond());
    StartH1 = t.getStartHour() ;
    StartM1 = t.getStartMinute() ;
    StartS1 = t.getStartSecond() ;
    Serial.println("StartH1: "+String(StartH1));
    Serial.println("StartM1: "+String(StartM1));
    Serial.println("StartS1: "+String(StartS1));
                        
  }

  if (t.hasStopTime()) {
    Serial.println(String("وقت الايقاف: ") +
    t.getStopHour() + ":" +
    t.getStopMinute() + ":" +
    t.getStopSecond());
    StopH1 = t.getStopHour() ;
    StopM1 = t.getStopMinute() ;
    StopS1 = t.getStopSecond();
    Serial.println("StopH1: "+String(StopH1));
    Serial.println("StopM1: "+String(StopM1));
    Serial.println("StopS1: "+String(StopS1));
    Blynk.virtualWrite(vPIN_LogTerminal,"تم ضبط المؤقت 1 تشغيل الساعة:  "+String(StartH1)+":"+String(StartM1)+":"+String(StartS1)+"  -ايقاف الساعة:  "+String(StopH1)+":"+String(StopM1)+":"+String(StopS1));
 
  }

                           
  for (int i = 1; i <= 7; i++)            // يتم تشغيله كل يوم من أيام الأسبوع (1 الاثنين ، 2 الثلاثاء ، 3 الأربعاء ، إلخ.)
  {
    if (t.isWeekdaySelected(i)) {
      Serial.println(String("Day ") + i + " is selected");
    }
  }
}




  

void setup()
{
  BlynkEdgent.begin();
  Serial.begin(115200);
  
  pinMode(Relay1,OUTPUT);
  pinMode(Switsh1, INPUT);
  pinMode(10,INPUT_PULLUP);
  digitalWrite(D0,HIGH);
  UltraTimer.setInterval(1000L, checkTime);
  UltraTimer.setInterval(1000L, Timr1);
  UltraTimer.setInterval(1000L, checkStatusButton1);
  UltraTimer.setInterval(1000L, ping1);
  UltraTimer.setInterval(1000L, PowerMeter);

}


void loop()
{
  
 BlynkEdgent.run();
 UltraTimer.run();


 
} ```

This is what appears in the serial. All my attempts to solve the problem failed. I also tried a completely different code that was working on blynk 1.0 stable years ago and when I migrated it to blynk 2.0 h it also restarts the nodemcu

Sometimes this appears

Hey there, I would highly recommend you to start with a very basic sketch because they have added many features and they replaced some features with something else for example the notification widget has been replaced with automations etc.

Greetings.

Update the ESP core to 3.0.0 and see if that solves your problem.

Hello my friends @Madhukesh and @John93 , thanks for your cooperation, I tried the following code that I dispensed with Blynk, I did not encounter any problems, it seems that there are problems with BlynkEdgent

#define BLYNK_TEMPLATE_ID "TMPLJdwoGQJZ"
#define BLYNK_DEVICE_NAME "ULTRA TECH"
#define BLYNK_AUTH_TOKEN            "Sr7FuG0WBIEC3AB0tgnSwmXLwVVd2cmC"
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "ULTRA ARDUINO 6";
char pass[] = "qwerty123";
#include <TimeLib.h>
#include <ESP8266Ping.h>

#define VT_PIN A0
#define vPIN_LedRelay1                V0   // ليد ريلي 1
#define vPIN_Relay1                   V1   // فيرجوال ريلي 1
#define vPIN_LogTerminal              V2   // terminal
#define vPIN_OnOffTimr1               V3   // تفعيل وتعطيل مؤقت 1
#define vPIN_BatteryVoltage           V4  // فيرجوال الفولت 
#define vPIN_LowVoltage               V5   //فيرجوال انخفاض الفولط للرسالة
#define vPIN_XVoltage                 V6   // معايرة الفولت
#define vPIN_LogTerminalPing          V7   // تيرمنال البينغ
#define vPIN_OnOffPing                V8   // تفعيل وتعطيل البينغ
#define vPIN_Timer1                   V15  // مؤقت 1
#define vPIN_Time                     V16  // الساعة
#define vPIN_Date                     V17  // التاريخ

BlynkTimer UltraTimer;

WidgetLED LedRelay1(vPIN_LedRelay1);

const int Relay1  = D1;
const int Switsh1  = D0;
bool  OnOffTimr1 =LOW;
bool  OnOffPing =LOW;
bool buttonStatus1 = 0;
bool buttonTemp1 = 0;
bool IsFirstRun = 1;
float XVolt = 0;
int vt_read = 0;
float voltage = 50;
float LowVolt = 0;
bool AlertMsgLowVolt = 0;
const char* remote_host = "8.8.8.8"; // ايبي لعمل بينغ عليه
int WaitBlynk1 = 60;
int Wait1 = 0;



int StartH1;
int StartM1;
int StartS1;
int StopH1;
int StopM1;
int StopS1;

int start_time;       // وقت البدء المجدول (بالثواني)
int active_duration;  // مدة التنشيط (بالثواني)
int weekdays[8];      // أيام الأسبوع المجدولة (الصفيف 8: 0 غير مستخدم)

BLYNK_CONNECTED()                     // استعادة القيم من السيرفر بعد اعادة اقلاع الجهاز
{
  Blynk.sendInternal("rtc", "sync");
  if (IsFirstRun==1)
  {
  delay(200);
  Blynk.syncVirtual(vPIN_Timer1,vPIN_OnOffTimr1,vPIN_Relay1,vPIN_OnOffPing,vPIN_XVoltage,vPIN_LowVoltage);  
}}



///////////////// BLYNK_WRITES ////////////////////////////



BLYNK_WRITE(vPIN_Relay1)                        // اداة التحكم في الريلي
{
  if (param.asInt() == 1)
  {
    digitalWrite(Relay1, HIGH);
    LedRelay1.on();
    Serial.println("1 تم التشغيل من التطبيق");
    Blynk.notify("1 تم التشغيل من التطبيق");
    Blynk.virtualWrite(vPIN_LogTerminal,"تم التشغيل من الموبايل الساعة: "+String(hour()) + ":" + minute() + ":" + second()+"  بتاريخ:  " +String (day()) + "-" + month() + "-" + year());
     
  }
  else
  {
    digitalWrite(Relay1, LOW);
    LedRelay1.off();
    Serial.println("1 تم الايقاف من التطبيق");
    Blynk.notify("1 تم الايقاف من التطبيق");
    Blynk.virtualWrite(vPIN_LogTerminal,"تم الإيقاف من الموبايل الساعة: "+String(hour()) + ":" + minute() + ":" + second()+"  بتاريخ:  " +String (day()) + "-" + month() + "-" + year());
    
   
  }
}


BLYNK_WRITE(vPIN_XVoltage)              // اداة معايرة فولت البطاريات
{
  XVolt=param.asFloat();
}


BLYNK_WRITE(vPIN_LowVoltage)             // اداة ارسال اشعار عند انخفاض الفولت
{
  LowVolt=param.asFloat();
  Serial.println("تم تغيير الحد الأدنى للفولط");
}



BLYNK_WRITE(vPIN_OnOffPing)            // اداة تفعيل وتعطيل البينغ
{
  OnOffPing=param.asFloat();
  if (OnOffPing==HIGH){
   // Blynk.virtualWrite(vPIN_LogTerminal1,"تم تفعيل الاتصال الذكي الوقت:  " +String(hour()) + ":" + minute() + ":" + second()+"  " +String (day()) + "-" + month() + "-" + year() );
  } 
    if(OnOffPing==LOW){
    //Blynk.virtualWrite(vPIN_LogTerminal1,"تم تعطيل الاتصال الذكي الوقت:  " +String(hour()) + ":" + minute() + ":" + second()+"  " +String (day()) + "-" + month() + "-" + year() );
  }
}


BLYNK_WRITE(vPIN_OnOffTimr1)                    // ادا تفعيل وتعطيل المؤقت الزمني
{
  OnOffTimr1=param.asFloat();
  if (OnOffTimr1==HIGH){
    Blynk.virtualWrite(vPIN_LogTerminal,"تم تفعيل المؤقت1 الوقت:  " +String(hour()) + ":" + minute() + ":" + second()+"  " +String (day()) + "-" + month() + "-" + year() );
  }
  
    if(OnOffTimr1==LOW){
    Blynk.virtualWrite(vPIN_LogTerminal,"تم تعطيل المؤقت1 الوقت:  " +String(hour()) + ":" + minute() + ":" + second()+"  " +String (day()) + "-" + month() + "-" + year() );
  }
}



BLYNK_WRITE(vPIN_Timer1)                                   // اداة ادخال الوقت في المؤقت رقم 1
{
  setTime(param);
}



BLYNK_WRITE(InternalPinRTC)                           // يتحقق من قيمة InternalPinRTC عند المزامنة مع Blynk
{
  const unsigned long DEFAULT_TIME = 1357041600; // Jan 1 2013
  unsigned long blynkTime = param.asLong();
  
  if (blynkTime >= DEFAULT_TIME) // تحقق من أن العدد الصحيح وقت صالح (أكبر من 1 كانون الثاني (يناير) 2013)
  {
   setTime(blynkTime);                      // مزامنة الساعة في مكتبة TimeLib مع القيمة المستلمة من Blynk
   //Serial.println(blynkTime);
  String currentTime = String(hour()) + ":" + minute() + ":" + second();
  String currentDate = String(day()) + "-" + month() + "-" + year();
  Serial.println(" التاريخ: "+String(currentDate)+"الساعة:   "+String(currentTime));
  Blynk.virtualWrite(vPIN_Time, "الساعة:  "+String(currentTime));  
  Blynk.virtualWrite(vPIN_Date, "التاريخ:  "+String(currentDate));        
  }
}




/////////////////////// VOIDS /////////////////////////

void checkStatusButton1()   // تابع التشغيل من الطقة
{
  buttonStatus1 = digitalRead(Switsh1);

  if (buttonStatus1 != buttonTemp1)
  {
    if (buttonStatus1 == HIGH) {
      digitalWrite(Relay1, HIGH);
      Blynk.virtualWrite(vPIN_Relay1, 1);
      LedRelay1.on();
      Serial.println("1 تم التشغيل يدويا");
      Blynk.notify("1 تم التشغيل يدويا");
      Blynk.virtualWrite(vPIN_LogTerminal,"تم التشغيل من الطقة الساعة: "+String(hour()) + ":" + minute() + ":" + second()+"  بتاريخ:  " +String (day()) + "-" + month() + "-" + year());
      
    }
    else {
      digitalWrite(Relay1, LOW);
      Blynk.virtualWrite(vPIN_Relay1, 0);
      LedRelay1.off();
      Serial.println("1 تم الايقاف يدويا");
      Blynk.notify("1 تم الايقاف يدويا");
      Blynk.virtualWrite(vPIN_LogTerminal,"تم الإيقاف من الطقة الساعة: "+String(hour()) + ":" + minute() + ":" + second()+"  بتاريخ:  " +String (day()) + "-" + month() + "-" + year());
     
    }
    buttonTemp1 = buttonStatus1;
  }
}




void Timr1()                                         // تابع المؤقت رقم 1
{
 
    
    if ((hour() == StartH1) and (minute() == StartM1) and (second() > StartS1)and(digitalRead(Relay1)==LOW)and(OnOffTimr1==HIGH))
    {
      digitalWrite(Relay1, HIGH );
      Serial.println("تم التشغيل");
      Blynk.virtualWrite(V1,1);
      LedRelay1.on();
      Serial.println("تم التشغيل من المؤقت الساعة: ");
      Blynk.virtualWrite(vPIN_LogTerminal,"تم التشغيل من المؤقت الساعة: "+String(hour()) + ":" + minute() + ":" + second()+"  بتاريخ:  " +String (day()) + "-" + month() + "-" + year());

      
    }

    if ((hour() == StopH1) and (minute() == StopM1) and (second() > StopS1)and(digitalRead(Relay1)==HIGH)and(OnOffTimr1==HIGH))
    {
      
      digitalWrite(Relay1, LOW );
      Serial.println("تم الايقاق");
      Blynk.virtualWrite(V1,0);
      LedRelay1.off();
      Serial.println("تم الإيقاف من المؤقت الساعة: ");
      Blynk.virtualWrite(vPIN_LogTerminal,"تم الإيقاف من المؤقت الساعة: "+String(hour()) + ":" + minute() + ":" + second()+"  بتاريخ:  " +String (day()) + "-" + month() + "-" + year());

    }
    
  }




void ping1()                                                // تابع البينغ
{
  if(OnOffPing==HIGH){
  if(Ping.ping(remote_host)) {
    Serial.println("PIN:  "+String(Ping.averageTime()) + "ms" );
    Blynk.virtualWrite(vPIN_LogTerminalPing,"البينغ: "+String(Ping.averageTime()) + "ms" );
    
  } else {
    Serial.println("انقطع البينغ");
    Blynk.virtualWrite(vPIN_LogTerminalPing, "انقطع البينغ" );
       
  }

  if (( Ping.averageTime() < 1 ) and ( Wait1<WaitBlynk1 ))
    { 
      
      Blynk.run(); 
      delay(1000);
      Wait1++;
      Serial.println("انقطع البينغ");
      Serial.println(Wait1);  
    }
       
    if ((Ping.averageTime() < 1 ) and ( Wait1==WaitBlynk1 ))
  {
    //Blynk.run();
    Wait1 = 0;
  }
} }

  

void checkTime()                              // تابع تحديث الوقت من السيرفر
{ 
  Blynk.sendInternal("rtc", "sync"); 

  }





void PowerMeter()                             // تابع فولت البطاريات
{
  vt_read = analogRead(VT_PIN);
  voltage = vt_read * (XVolt / 1023.0) * 3.0;
  Blynk.virtualWrite(vPIN_BatteryVoltage, voltage);
  Serial.print("Volts: "); 
  Serial.println(voltage, 3);
  if ((voltage>LowVolt)&& (AlertMsgLowVolt==1))
  {
   AlertMsgLowVolt=0; 
  }
  if ((voltage<LowVolt) && (AlertMsgLowVolt==0))
  {
    Blynk.logEvent("فولط البطاريات أقل من الحد المحدد ""\n"+String(LowVolt));
    Blynk.virtualWrite(vPIN_LogTerminal,"فولط البطاريات أقل من الحد المحدد الوقت:  " +String(hour()) + ":" + minute() + ":" + second()+"  " +String (day()) + "-" + month() + "-" + year() );

    AlertMsgLowVolt=1;
  }
}





void setTime(BlynkParam param)                // الحصول على البيانات من اداة إدخال الوقت وتخزينها في المتغيرات
{

  TimeInputParam t(param);

  if (t.hasStartTime()) {
    Serial.println(String("وقت التشغيل: ") +
    t.getStartHour() + ":" +
    t.getStartMinute() + ":" +
    t.getStartSecond());
    StartH1 = t.getStartHour() ;
    StartM1 = t.getStartMinute() ;
    StartS1 = t.getStartSecond() ;
    Serial.println("StartH1: "+String(StartH1));
    Serial.println("StartM1: "+String(StartM1));
    Serial.println("StartS1: "+String(StartS1));
                        
  }

  if (t.hasStopTime()) {
    Serial.println(String("وقت الايقاف: ") +
    t.getStopHour() + ":" +
    t.getStopMinute() + ":" +
    t.getStopSecond());
    StopH1 = t.getStopHour() ;
    StopM1 = t.getStopMinute() ;
    StopS1 = t.getStopSecond();
    Serial.println("StopH1: "+String(StopH1));
    Serial.println("StopM1: "+String(StopM1));
    Serial.println("StopS1: "+String(StopS1));
    Blynk.virtualWrite(vPIN_LogTerminal,"تم ضبط المؤقت 1 تشغيل الساعة:  "+String(StartH1)+":"+String(StartM1)+":"+String(StartS1)+"  -ايقاف الساعة:  "+String(StopH1)+":"+String(StopM1)+":"+String(StopS1));
 
  }

                           
  for (int i = 1; i <= 7; i++)            // يتم تشغيله كل يوم من أيام الأسبوع (1 الاثنين ، 2 الثلاثاء ، 3 الأربعاء ، إلخ.)
  {
    if (t.isWeekdaySelected(i)) {
      Serial.println(String("Day ") + i + " is selected");
    }
  }
}




  

void setup()
{
  Blynk.begin(auth, ssid, pass);
  Serial.begin(115200);
  
  pinMode(Relay1,OUTPUT);
  pinMode(Switsh1, INPUT);
  pinMode(10,INPUT_PULLUP);
  digitalWrite(D0,HIGH);
  UltraTimer.setInterval(1000L, checkTime);
  UltraTimer.setInterval(1000L, Timr1);
  UltraTimer.setInterval(1000L, checkStatusButton1);
  UltraTimer.setInterval(1000L, ping1);
  UltraTimer.setInterval(1000L, PowerMeter);

}


void loop()
{
  
  Blynk.run();
 UltraTimer.run();
 delay(50);


 
}

What is your ESP CORE VERSION ?

1 Like

Tool → Boards Manager → Manage Boards

Search for ESP8266 see the installed CORE.

1 Like

Thank you dear @Madhukesh for the help it’s 2.5.2

I updated but the problem is still there unfortunately @Madhukesh

Please use ESP Exception Decoder tool,

Using this tool you find which line or which pin is intrepping

1 Like

What is delay doing here ? What is its function in your code ?

Downgrade the esp core to 2.4.2 and see if that solves. I always had problems with core higher than 2.4.2

And also we can’t use Do pin bcz this pin we use as a led wi-fi led indicator

1 Like

delay I put it for testing, but it didn’t work, I deleted it

You have removed it from settings see


#if defined(USE_NODE_MCU_BOARD) || defined(USE_WEMOS_D1_MINI)

  #define BOARD_BUTTON_PIN            0
  #define BOARD_BUTTON_ACTIVE_LOW     true

  /*#define BOARD_LED_PIN               2
  #define BOARD_LED_INVERSE           true
  #define BOARD_LED_BRIGHTNESS        255*/

#elif defined(USE_SPARKFUN_BLYNK_BOARD)

  #define BOARD_BUTTON_PIN            0
  #define BOARD_BUTTON_ACTIVE_LOW     true

  //#define BOARD_LED_PIN_WS2812        4
  //#define BOARD_LED_BRIGHTNESS        64

#elif defined(USE_WITTY_CLOUD_BOARD)

 // #define BOARD_BUTTON_PIN            4
  #define BOARD_BUTTON_ACTIVE_LOW     true

  //#define BOARD_LED_PIN_R             15
 // #define BOARD_LED_PIN_G             12
  //#define BOARD_LED_PIN_B             13
  //#define BOARD_LED_INVERSE           false
  //#define BOARD_LED_BRIGHTNESS        64

#else

  #warning "Custom board configuration is used"

  #define BOARD_BUTTON_PIN            0                     // Pin where user button is attached
  #define BOARD_BUTTON_ACTIVE_LOW     true                  // true if button is "active-low"

 // #define BOARD_LED_PIN               4                     // Set LED pin - if you have a single-color LED attached
  //#define BOARD_LED_PIN_R           15                    // Set R,G,B pins - if your LED is PWM RGB
  //#define BOARD_LED_PIN_G           12
  //#define BOARD_LED_PIN_B           13
  //#define BOARD_LED_PIN_WS2812      4                     // Set if your LED is WS2812 RGB
  //#define BOARD_LED_INVERSE           false                 // true if LED is common anode, false if common cathode
  //#define BOARD_LED_BRIGHTNESS        64                    // 0..255 brightness control

#endif


/*
 * Advanced options
 */

#define BUTTON_HOLD_TIME_INDICATION   3000
#define BUTTON_HOLD_TIME_ACTION       10000

#define BOARD_PWM_MAX                 1023

#define CONFIG_AP_URL                 "blynk.setup"
#define CONFIG_DEFAULT_SERVER         "blynk.cloud"
#define CONFIG_DEFAULT_PORT           443

#define WIFI_NET_CONNECT_TIMEOUT      30000
#define WIFI_CLOUD_CONNECT_TIMEOUT    60000
#define WIFI_AP_IP                    IPAddress(192, 168, 4, 1)
#define WIFI_AP_Subnet                IPAddress(255, 255, 255, 0)
//#define WIFI_CAPTIVE_PORTAL_ENABLE

#define USE_TICKER
//#define USE_TIMER_ONE
//#define USE_TIMER_THREE
//#define USE_TIMER_FIVE
//#define USE_PTHREAD

#define BLYNK_NO_DEFAULT_BANNER

#if defined(APP_DEBUG)
  #define DEBUG_PRINT(...) BLYNK_LOG1(__VA_ARGS__)
#else
  #define DEBUG_PRINT(...)
#endif

I have tried all versions and the problem is still there @Madhukesh

Update the core to 3.0.0
Update the blynk lib not Beta

Use custom board setting.
Change the pin that you are using now for the relay and switch. Change it to D5 and D6.

Spiffs setting to 4M

I updated to 3.0.0 and changed the pins to D5 and D6 but the problem is still there
@Madhukesh

We must restore one of the founders, perhaps there is a defect in the library @Dmitriy Sorry for the inconvenience, can you help?