Hey ,
Running a basic home automation setup with ep8266(nodemcu),referring to my post regarding connecting to multiple ssids in case of a WiFi failure, came across this post , been running this for a while now and facing a issue where the esp8266 still is connected to the internet but looses connection to blynk server(as it still continues to get the time from ntp meaning the internet is still connected). The code runs fine for a day or two and all of a sudden goes offline for almost an entire day,is this because of a possible flood error(& yes my void loop() is clean AF with just Blynk.run(); timer.run(); ) How to determine if anything is causing a flood error? I am sending around 20 values(mostly weather stuff) via blynk every 5 seconds or so. Btw, i have a timer for resetting the esp twice a day and sometimes even after resetting blynk doesn’t get connected but it gets the time via ntp rather fine . Is something wrong in the connecting to blynk process in this code? is checking Blynk.connected(); every minute a bad practice?
Little snippet of my code:
void setup()
{
// Debug console
Serial.begin(115200);
pinMode(D0,OUTPUT);
pinMode(D1,OUTPUT);
pinMode(D2,OUTPUT);
pinMode(D3,OUTPUT);
pinMode(D4,OUTPUT);
pinMode(D5,OUTPUT);
pinMode(D7,OUTPUT);
pinMode(D8,OUTPUT);
digitalWrite(D0,LOW);
digitalWrite(D1,LOW);
digitalWrite(D2,LOW);
digitalWrite(D3,LOW);
digitalWrite(D4,LOW);
digitalWrite(D5,LOW);
digitalWrite(D7,LOW);
digitalWrite(D8,LOW);
WiFi.softAPdisconnect (true);
wifi_set_sleep_type(NONE_SLEEP_T);
MultyWiFiBlynkBegin();
Blynk.syncAll();
dht.begin();
terminal.println(F("------terminal-------"));
terminal.flush();
timer5 = timer.setInterval(60000L, MultyWiFiBlynkBegin);
Serial.println();
Serial.print("Connecting to the Internet ");
Serial.println();
Serial.print("Connecting Now...");
Serial.println();
Serial.println("Successfully Connected to the Internet ");
Serial.print("NodeMCU IP Address : ");
Serial.println(WiFi.localIP() );
Serial.println("Channel : " + String(WiFi.channel()));
configTime(timezone, dst, "pool.ntp.org","time.nist.gov");
Serial.println("\nWaiting for Internet Time");
while(!time(nullptr)){
Serial.print("*");
delay(1000);
}
Serial.println("\nSyncing Time Now...");
}
void MultyWiFiBlynkBegin() {
int ssid_count=0;
int ssid_mas_size = sizeof(ssid) / sizeof(ssid[0]);
do {
if (!Blynk.connected()) {
digitalWrite(D8,LOW);// power to router
Serial.print("\n" );
Serial.println("Trying to connect to WiFi " + String(ssid[ssid_count]));
WiFi.begin(ssid[ssid_count], pass[ssid_count]);
int WiFi_timeout_count=0;
while ((WiFi.status() != WL_CONNECTED) && (WiFi_timeout_count<50)) { //waiting 10 sec
delay(200);
Serial.print(".");
++WiFi_timeout_count;
}
if (WiFi.status() == WL_CONNECTED) {
Serial.print("\n" );
Serial.println("Connected to WiFi! WiFi SSID = "+ String(ssid[ssid_count])+"!");
Serial.println("Checking connection to Blynk server");
Blynk.config(auth);
Blynk.connect(); //for waiting 5 sec Blynk.connect(5000);
varssid=ssid[ssid_count];
int quality = getQuality();
}
++ssid_count;
}
}
while (!Blynk.connected() && ssid_count<ssid_mas_size);
if (!Blynk.connected() && ssid_count==ssid_mas_size) {
Serial.print("\n\n" );
Serial.println("Could not connect to Blynk =( Retrying!! Please Wait .....");
}
}