Um, Blynk not working? "Connecting to blynk-cloud.com:8442" continually?

what does it mean when all i get in serial is this?

[1859141] Connecting to blynk-cloud.com:8442

it was working for 4290 minutes (according to the blynk.tweets i was doing)

so i commented out the:

while (!Blynk.connect()) {
     Wait until connected
  }

 // Send email immediately on startup
  Serial.println(F("Blynk started!"));
  Blynk.email("xxx@hackermail.com", "Basement Ventilation Controller online", "It's online... ");

and it started working again, but not 100% like it was before…

can anyone explain how to resolve this, or is this something that is usual?

Please provide full sketch and connection type details.

Sorry, it was late and I didn’t post much info!

here is the sketch


#define BLYNK_PRINT Serial //this is the debugging for Blynk
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#include <dht.h> //this is the Rob Tillaart "stable" version
#include "RunningMedian.h"

dht DHT;
WiFiClient client;
RunningMedian samplesRoof = RunningMedian(15);
RunningMedian samplesHouse = RunningMedian(15);
RunningMedian samplesPlenum = RunningMedian(15);
RunningMedian samplesBase = RunningMedian(15);

#define ROOF_DHT22_PIN 12 //DHT22 sensor in roof connected to GPIO12
#define HOUSE_DHT22_PIN 13 //DHT22 sensor in house connected to GPIO13 ^^^changed PIN on 08.02.16
#define PLENUM_DHT22_PIN 14 //DHT22 sensor inside plenum connected to GPIO14 ^^^changed PIN on 08.02.16
#define BASE_DHT22_PIN 16 //DHT22 sensor in basement connected to GPIO16

const char* ssid = "ABCDE";
const char* password = "12345";

const char* serverThingspeak = "api.thingspeak.com"; //this is the Thingspeak address
String apiKeyThingspeak1 = "xxx"; //Basement plenum control channel
String apiKeyThingspeak2 = "xxx"; //Basement plenum control channel

char authBlynk[] = "xxx"; //insert token generated by Blynk

SimpleTimer timer;

int roofVent = 2; // relay for roof vent connected to GPIO2 
int houseVent = 5; // relay for house vent connected to GPIO5
int ventFan = 4; // relay for ventilation fan connected to GPIO4
int i = 0; // i'm not sure what this does?

int setMaxTemp;
int setHouseOn;
int setRoofOn;
int setCancelAll;
int setAuto;

double roofDewPoint, houseDewPoint, plenumDewPoint, baseDewPoint;
float roofHum, roofTemp, medianRoofDewPoint, houseHum, houseTemp, medianHouseDewPoint, plenumHum, plenumTemp, medianPlenumDewPoint, baseHum, baseTemp, medianBaseDewPoint;

BLYNK_WRITE(V30) // set max temp for air inlet
{
  BLYNK_LOG("Got new setMaxTemp value: %i", setMaxTemp = param.asInt());
  //Blynk.virtualWrite(V30, 28); // check this works?
  ventLogic();
}

BLYNK_WRITE(V31)   // HOUSE mode
{
  setHouseOn = param.asInt();
  if (setHouseOn == 1) {
    Blynk.virtualWrite(V23, 0);  // roof
    Blynk.virtualWrite(V22, 0);  // auto
    Blynk.virtualWrite(V21, 0);  // cancel
    ventLogic();
  }
}

BLYNK_WRITE(V23)   // ROOF mode
{
  setRoofOn = param.asInt();
  if (setRoofOn == 1) {
    Blynk.virtualWrite(V31, 0);  // house
    Blynk.virtualWrite(V22, 0);  // auto
    Blynk.virtualWrite(V21, 0);  // cancel
    ventLogic();
  }
}

BLYNK_WRITE(V22)   // AUTO mode
{
  setAuto = param.asInt();
  if (setAuto == 1) {
    Blynk.virtualWrite(V31, 0);  // house
    Blynk.virtualWrite(V23, 0);  // roof
    Blynk.virtualWrite(V21, 0);  // cancel
    ventLogic();
  }
}

BLYNK_WRITE(V21)   // CANCEL mode
{
  setCancelAll = param.asInt();
  if (setCancelAll == 1) {
    Blynk.virtualWrite(V31, 0);  // house
    Blynk.virtualWrite(V22, 0);  // auto
    Blynk.virtualWrite(V23, 0);  // roof
    ventLogic();
  }
}

void setup()
{
  Serial.begin(115200);
  Serial.println(F(""));
  Serial.println(F("BASEMENT VENTILATION PLENUM CONTROLLER - with Thingspeak & Blynk & Running Median & Email & Twitter"));
  Serial.print(F("File name: "));
  Serial.println(__FILE__);
  Serial.print(F("DHT LIBRARY VERSION: "));
  Serial.println(DHT_LIB_VERSION);
  Serial.print(F("Running Median Version: "));
  Serial.println(RUNNING_MEDIAN_VERSION);
  Serial.println();

  WiFi.begin(ssid, password);
  Serial.println(F("Where's some WiFi??"));
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(F("."));
  }

  Serial.println(F(""));
  Serial.println(F("Found some WiFi!"));
  long rssi = WiFi.RSSI();
  Serial.print(F("WiFi signal strength (RSSI): "));
  Serial.print(rssi);
  Serial.println(F(" dBm"));
  Serial.println("");
  Serial.println(F("------------"));

  Blynk.begin(authBlynk, ssid, password);

  //while (!Blynk.connect()) {
    // Wait until connected
  //}

 // // Send email immediately on startup
 // Serial.println(F("Blynk started!"));
  //Blynk.email("xx@hackermail.com", "Basement Ventilation Controller online", "It's online... ");

  timer.setInterval(30002L, runningMedian); // Setup the running median function to be called every 30 seconds
  timer.setInterval(2L * 60000L, dataLogging); // Setup the data logging function to be called every 120 seconds (2 mins)
  timer.setInterval(6L * 60005L, ventLogic); // Setup ventilation logic function to be called every 360 seconds (6 minutes)
  timer.setInterval(10L * 60008L, tweetUptime); // Setup Twitter uptime function to be called every 600 seconds (10 minutes)

  pinMode(roofVent, OUTPUT);
  pinMode(houseVent, OUTPUT);
  pinMode(ventFan, OUTPUT);
  digitalWrite(roofVent, LOW);
  digitalWrite(houseVent, LOW);
  digitalWrite(ventFan, HIGH);

}

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

void runningMedian()
{
  int chk;
  Serial.println(F("Starting the running median section..."));
  Serial.println("");
  delay(1800); //helps the DHT22 to work properly - it needs this long to get organisied

  //roof DHT22 section

  chk = DHT.read22(ROOF_DHT22_PIN); // READ DATA from ROOF sensor
  roofHum = DHT.humidity;
  roofTemp = DHT.temperature;
  roofDewPoint = dewPoint(DHT.temperature, DHT.humidity);
  medianRoofDewPoint = samplesRoof.getMedian();
  samplesRoof.add(roofDewPoint); // this is the Running Median command

  Serial.println(F("Roof readings"));
  Serial.print(roofHum);
  Serial.println("%");
  Serial.print(roofTemp);
  Serial.println("'C");
  Serial.print(roofDewPoint);
  Serial.println("'C");
  Serial.print(F("Roof Dew Point (median):"));
  Serial.print(medianRoofDewPoint);
  Serial.println("'C");
  Serial.println("");

  //house DHT22 section

  chk = DHT.read22(HOUSE_DHT22_PIN); // READ DATA from HOUSE sensor
  houseHum = DHT.humidity;
  houseTemp = DHT.temperature;
  houseDewPoint = dewPoint(DHT.temperature, DHT.humidity);
  medianHouseDewPoint = samplesHouse.getMedian();
  samplesHouse.add(houseDewPoint);

  Serial.println(F("House readings"));
  Serial.print(houseHum);
  Serial.println("%");
  Serial.print(houseTemp);
  Serial.println("'C");
  Serial.print(houseDewPoint);
  Serial.println("'C");
  Serial.print(F("House Dew Point (median):"));
  Serial.print(medianHouseDewPoint);
  Serial.println("'C");
  Serial.println("");

  //plenum DHT22 section

  chk = DHT.read22(PLENUM_DHT22_PIN); // READ DATA from PLENUM sensor
  plenumHum = DHT.humidity;
  plenumTemp = DHT.temperature;
  plenumDewPoint = dewPoint(DHT.temperature, DHT.humidity);
  medianPlenumDewPoint = samplesPlenum.getMedian();
  samplesPlenum.add(plenumDewPoint);

  Serial.println(F("Plenum readings"));
  Serial.print(plenumHum);
  Serial.println("%");
  Serial.print(plenumTemp);
  Serial.println("'C");
  Serial.print(plenumDewPoint);
  Serial.println("'C");
  Serial.print(F("Plenum Dew Point (median):"));
  Serial.print(medianPlenumDewPoint);
  Serial.println("'C");
  Serial.println("");

  //basement DHT22 section

  chk = DHT.read22(BASE_DHT22_PIN); // READ DATA from BASEMENT sensor
  baseHum = DHT.humidity;
  baseTemp = DHT.temperature;
  baseDewPoint = dewPoint(DHT.temperature, DHT.humidity);
  medianBaseDewPoint = samplesBase.getMedian();
  samplesBase.add(baseDewPoint);

  Serial.println(F("Basement readings"));
  Serial.print(baseHum);
  Serial.println(F("%"));
  Serial.print(baseTemp);
  Serial.println(F("'C"));
  Serial.print(baseDewPoint);
  Serial.println("'C");
  Serial.print(F("Basement Dew Point (median):"));
  Serial.print(medianBaseDewPoint);
  Serial.println("'C");
  Serial.println("");
}

void dataLogging()

{
  Serial.println(F("Starting data logging function (Blynk then Thingspeak)"));

  long rssi = WiFi.RSSI();
  Blynk.virtualWrite(V0, rssi); // this sends the WiFi Signal Strenght to Blynk

  long uptime = millis() / 60000;
  Blynk.virtualWrite(V20, uptime); // this sends the program uptime to Blynk

  Serial.println(F("Sending to Blynk - ROOF readings"));
  Blynk.virtualWrite(V10, roofHum); // this sends the reading to the Blynk virtual pin
  Serial.print(roofHum);
  Serial.println("%");
  Blynk.virtualWrite(V11, roofTemp); // this sends the reading to the Blynk virtual pin
  Serial.print(roofTemp);
  Serial.println("'C");
  Blynk.virtualWrite(V14, roofDewPoint); // this sends the calculation to the Blynk virtual pin
  Serial.print(roofDewPoint);
  Serial.println("'C");
  Blynk.virtualWrite(V16, medianRoofDewPoint); // this sends the calculation to the Blynk virtual pin
  Serial.print(F("Roof Dew Point (median):"));
  Serial.print(medianRoofDewPoint);
  Serial.println("'C");

  Serial.println(F("Sending to Blynk - HOUSE readings"));
  Blynk.virtualWrite(V12, houseHum ); // this sends the reading to the Blynk virtual pin
  Serial.print(houseHum);
  Serial.println("%");
  Blynk.virtualWrite(V13, houseTemp); // this sends the reading to the Blynk virtual pin
  Serial.print(houseTemp);
  Serial.println("'C");
  Blynk.virtualWrite(V15, houseDewPoint); // this sends the calculation to the Blynk virtual pin
  Serial.print(houseDewPoint);
  Serial.println("'C");
  Blynk.virtualWrite(V17, medianHouseDewPoint); // this sends the calculation to the Blynk virtual pin

  Serial.print(F("House Dew Point (median):"));
  Serial.print(medianHouseDewPoint);
  Serial.println("'C");
  Serial.println(F("Sending to Blynk - PLENUM readings"));
  Blynk.virtualWrite(V1, plenumHum); // this sends the reading to the Blynk virtual pin
  Serial.print(plenumHum);
  Serial.println("%");
  Blynk.virtualWrite(V2, plenumTemp); // this sends the reading to the Blynk virtual pin
  Serial.print(plenumTemp);
  Serial.println("'C");
  Blynk.virtualWrite(V3, plenumDewPoint); // this sends the calculation to the Blynk virtual pin
  Serial.print(plenumDewPoint);
  Serial.println("'C");
  Blynk.virtualWrite(V18, medianPlenumDewPoint); // this sends the calculation to the Blynk virtual pin

  Serial.print(F("Plenum Dew Point (median):"));
  Serial.print(medianPlenumDewPoint);
  Serial.println("'C");
  Serial.println(F("Sending to Blynk - BASEMENT readings"));
  Blynk.virtualWrite(V4, baseHum ); // this sends the reading to the Blynk virtual pin
  Serial.print(baseHum);
  Serial.println("%");
  Blynk.virtualWrite(V5, baseTemp); // this sends the reading to the Blynk virtual pin
  Serial.print(baseTemp);
  Serial.println("'C");
  Blynk.virtualWrite(V6, baseDewPoint); // this sends the calculation to the Blynk virtual pin
  Serial.print(baseDewPoint);
  Serial.println("'C");
  Blynk.virtualWrite(V19, medianBaseDewPoint); // this sends the calculation to the Blynk virtual pin
  Serial.print(F("Basement Dew Point (median):"));
  Serial.print(medianBaseDewPoint);
  Serial.println("'C");

  Serial.println(F("Just finished the data logging Blynk section"));

  Serial.println(F("Preparing Thingspeak readings"));

  if (client.connect(serverThingspeak, 80))
  {
    String postStr = apiKeyThingspeak1;
    postStr += "&field1=";
    postStr += String(roofTemp);
    postStr += "&field2=";
    postStr += String(roofHum);
    postStr += "&field3=";
    postStr += String(roofDewPoint);
    postStr += "&field4=";
    postStr += String(houseTemp);
    postStr += "&field5=";
    postStr += String(houseHum);
    postStr += "&field6=";
    postStr += String(houseDewPoint);
    postStr += "&field7=";
    postStr += String(medianRoofDewPoint);
    postStr += "&field8=";
    postStr += String(medianHouseDewPoint);
    postStr += "\r\n\r\n";

    client.print("POST /update HTTP/1.1\n");
    client.print("Host: api.thingspeak.com\n");
    client.print("Connection: close\n");
    client.print("X-THINGSPEAKAPIKEY: " + apiKeyThingspeak1 + "\n");
    client.print("Content-Type: application/x-www-form-urlencoded\n");
    client.print("Content-Length: ");
    client.print(postStr.length());
    client.print("\n\n");
    client.print(postStr);
    Serial.println(F("Just uploaded to Thingspeak Channel ID: xx"));
  }

  delay(10);

  if (client.connect(serverThingspeak, 80))
  {
    String postStr = apiKeyThingspeak2;
    postStr += "&field1=";
    postStr += String(plenumTemp);
    postStr += "&field2=";
    postStr += String(plenumHum);
    postStr += "&field3=";
    postStr += String(plenumDewPoint);
    postStr += "&field4=";
    postStr += String(baseTemp);
    postStr += "&field5=";
    postStr += String(baseHum);
    postStr += "&field6=";
    postStr += String(baseDewPoint);
    postStr += "&field7=";
    postStr += String(medianPlenumDewPoint);
    postStr += "&field8=";
    postStr += String(medianBaseDewPoint);
    postStr += "\r\n\r\n";

    client.print("POST /update HTTP/1.1\n");
    client.print("Host: api.thingspeak.com\n");
    client.print("Connection: close\n");
    client.print("X-THINGSPEAKAPIKEY: " + apiKeyThingspeak2 + "\n");
    client.print("Content-Type: application/x-www-form-urlencoded\n");
    client.print("Content-Length: ");
    client.print(postStr.length());
    client.print("\n\n");
    client.print(postStr);
    Serial.println(F("Just uploaded to Thingspeak Channel ID: xx"));

  }
}

void tweetUptime()
{
  long uptime = millis() / 60000L;
  BLYNK_LOG("Tweeting every 10 minutes ;)");
  Blynk.tweet(String("Basement Controller running for ") + uptime + " minutes.");
}

void ventLogic()
{
  Serial.println(F("Starting the ventilation logic section. "));

  Serial.print(F("_________________________SetMaxTemp (max. inlet temp) = "));
  Serial.print(setMaxTemp);
  Serial.println(F("'C"));

  if ((setAuto == 1) && (roofTemp <= setMaxTemp) && (medianHouseDewPoint > medianRoofDewPoint) && (medianBaseDewPoint > medianRoofDewPoint))
  {
    digitalWrite(roofVent, HIGH); // roof vent OPEN
    digitalWrite(houseVent, LOW); // house vent closed
    digitalWrite(ventFan, LOW); // ventilation fan is ON
    Serial.println(F("system = ROOF air inlet selected based on lowest Dew Point"));
    Serial.println(F("------------"));
    Blynk.virtualWrite(7, 0); //hse LED on Blynk app
    Blynk.virtualWrite(8, 1023); //rof LED on Blynk app
    Blynk.virtualWrite(9, 0); //bse LED on Blynk app
    Blynk.email("xx@hackermail.com", "Subject: Basement Ventilation fan on - ROOF VENT", "The ventilation fan was activated...");
    Blynk.tweet((String("Basement: AUTO.ROOF - DewPoint's = R: ") + medianRoofDewPoint + (" H: ") + medianHouseDewPoint + (" P: ") + medianPlenumDewPoint + (" B: ") + medianBaseDewPoint) + ("'C"));
  }

  //AUTO - house vent air has lowest dew point scenario:

  else if ((setAuto == 1) && (houseTemp <= setMaxTemp) && (medianRoofDewPoint > medianHouseDewPoint) && (medianBaseDewPoint > medianHouseDewPoint))
  {
    digitalWrite(roofVent, LOW); // roof vent closed
    digitalWrite(houseVent, HIGH); // house vent OPEN
    digitalWrite(ventFan, LOW); // ventilation fan is ON
    Serial.println(F("system = HOUSE air inlet selected based on lowest Dew Point"));
    Serial.println(F("------------"));
    Blynk.virtualWrite(7, 1023); //hse LED on Blynk app
    Blynk.virtualWrite(8, 0); //rof LED on Blynk app
    Blynk.virtualWrite(9, 0); //bse LED on Blynk app
    Blynk.email("xx@hackermail.com", "Subject: Basement Ventilation fan on - HOUSE VENT", "The ventilation fan was activated...");
    Blynk.tweet((String("Basement: AUTO.HOUSE - DewPoint's = R: ") + medianRoofDewPoint + (" H: ") + medianHouseDewPoint + (" P: ") + medianPlenumDewPoint + (" B: ") + medianBaseDewPoint) + ("'C"));
  }

  //AUTO - basement room air has lowest dew point scenario:

  else if ((setAuto == 1) && (medianRoofDewPoint > medianBaseDewPoint) && (medianHouseDewPoint > medianBaseDewPoint))
  {
    digitalWrite(roofVent, LOW); // roof vent closed
    digitalWrite(houseVent, LOW); // house vent closed
    digitalWrite(ventFan, HIGH); // ventilation fan is off
    Serial.println(F("system = BASEMENT air has the lowest Dew Point - system OFF, both vents closed."));
    Serial.println(F("------------"));
    Blynk.virtualWrite(7, 0); //hse LED on Blynk app
    Blynk.virtualWrite(8, 0); //rof LED on Blynk app
    Blynk.virtualWrite(9, 1023); //bse LED on Blynk app
    Blynk.email("xx@hackermail.com", "Subject: Basement Ventilation fan OFF", "The ventilation fan status has changed...");
    Blynk.tweet((String("Basement: AUTO. System off - DewPoint's = R: ") + medianRoofDewPoint + ("H: ") + medianHouseDewPoint + ("P: ") + medianPlenumDewPoint + ("B: ") + medianBaseDewPoint) + ("'C"));
  }

  else if ((setCancelAll == 1))
  {
    digitalWrite(roofVent, LOW); // roof vent CLOSED
    digitalWrite(houseVent, LOW); // house vent CLOSED
    digitalWrite(ventFan, HIGH); // ventilation fan is OFF
    Serial.println(F("system = CANCEL - ALL inlets CLOSED, fan OFF"));
    Serial.println(F("------------"));
    Blynk.virtualWrite(6, 1023); //prg LED on Blynk app
    Blynk.virtualWrite(7, 0); //hse LED on Blynk app
    Blynk.virtualWrite(8, 0); //rof LED on Blynk app
    Blynk.virtualWrite(9, 0); //bse LED on Blynk app
    Blynk.email("xx@hackermail.com", "Subject: Basement Ventilation fan OFF - CANCEL PROGRAM", "The ventilation fan was de-activated...");
    Blynk.tweet((String("Basement: CANCEL - DewPoint's = R: ") + medianRoofDewPoint + (" H: ") + medianHouseDewPoint + (" P: ") + medianPlenumDewPoint + (" B: ") + medianBaseDewPoint) + ("'C"));
  }

  else if ((setRoofOn == 1))

  {
    digitalWrite(roofVent, HIGH); // roof vent OPEN
    digitalWrite(houseVent, LOW); // house vent closed
    digitalWrite(ventFan, LOW); // ventilation fan is ON
    Serial.println(F("system = Roof Manual - ROOF inlet is open, FAN is on"));
    Serial.println(F("------------"));
    Blynk.virtualWrite(7, 0); //hse LED on Blynk app
    Blynk.virtualWrite(8, 1023); //rof LED on Blynk app
    Blynk.virtualWrite(9, 0); //bse LED on Blynk app
    Blynk.email("xx@hackermail.com", "Subject: Basement Ventilation fan on - Roof Manual", "The ventilation fan was activated...");
    Blynk.tweet((String("Basement: MAN.ROOF - DewPoint's = R: ") + medianRoofDewPoint + (" H: ") + medianHouseDewPoint + (" P: ") + medianPlenumDewPoint + (" B: ") + medianBaseDewPoint) + ("'C"));
  }

  else if ((setHouseOn == 1))
  {
    digitalWrite(roofVent, LOW); // roof vent CLOSED
    digitalWrite(houseVent, HIGH); // house vent OPEN
    digitalWrite(ventFan, LOW); // ventilation fan is ON
    Serial.println(F("system = House Manual - HOUSE inlet is open, FAN is on"));
    Serial.println(F("------------"));
    Blynk.virtualWrite(7, 1023); //hse LED on Blynk app
    Blynk.virtualWrite(8, 0); //rof LED on Blynk app
    Blynk.virtualWrite(9, 0); //bse LED on Blynk app
    Blynk.email("xx@hackermail.com", "Subject: Basement Ventilation fan on - House Manual", "The ventilation fan was activated...");
    Blynk.tweet((String("Basement: MAN.HOUSE - DewPoint's = R: ") + medianRoofDewPoint + (" H: ") + medianHouseDewPoint + (" P: ") + medianPlenumDewPoint + (" B: ") + medianBaseDewPoint) + ("'C"));
  }
}


/*-----( Declare User-written Functions )-----*/

// delta max = 0.6544 wrt dewPoint()
// 5x faster than dewPoint()
// reference: http://en.wikipedia.org/wiki/Dew_point
double dewPointFast(double celsius, double humidity)
{
  double a = 17.271;
  double b = 237.7;
  double temp = (a * celsius) / (b + celsius) + log(humidity / 100);
  double Td = (b * temp) / (a - temp);
  return Td;
}

// dewPoint function NOAA
// reference (1) : http://wahiduddin.net/calc/density_algorithms.htm
// reference (2) : http://www.colorado.edu/geography/weather_station/Geog_site/about.htm
//
double dewPoint(double celsius, double humidity)
{
  // (1) Saturation Vapor Pressure = ESGG(T)
  double RATIO = 373.15 / (273.15 + celsius);
  double RHS = -7.90298 * (RATIO - 1);
  RHS += 5.02808 * log10(RATIO);
  RHS += -1.3816e-7 * (pow(10, (11.344 * (1 - 1 / RATIO ))) - 1) ;
  RHS += 8.1328e-3 * (pow(10, (-3.49149 * (RATIO - 1))) - 1) ;
  RHS += log10(1013.246);

  // factor -3 is to adjust units - Vapor Pressure SVP * humidity
  double VP = pow(10, RHS - 3) * humidity;

  // (2) DEWPOINT = F(Vapor Pressure)
  double T = log(VP / 0.61078); // temp var
  return (241.88 * T) / (17.558 - T);
}

/* ( THE END ) */

have I done something wrong??

OK, so i have disabled a few of the blynk.things in the void ventLogic() and seems that when i press a button on the app - the choice sticks, and even after i press a different button, ithe software stays in the selection previously made.

the app screen changes, but the serial monitor indicates the wrong selection…

Hey, it’s really lot’s of code… please try to remove things until you narrow the problem…

Yeah solved now, sorry, i should have update this post. It must have been a random connection issue?

Usually there is always some reason for that.

I took a screenshot of the serial print. I will post it later.

But I assumed it was probably my end, like router or something?

@Dave1829 what exactly did you do to make it work because it seems that I am having the same problem as yours.Thank you in advance! :slight_smile:

Hi, I think it was resolved after multiple router resets (I think it was a full power down of everything for a few mins).
Very much seemed like a network related issue, rather than code or Blynk issue…

Hi Dave,
My Code is quite simillar to yours but much smaller. Still I get lots of disconnections when I run Blynk app. I have increased the intervals also increased refresh time of blynk app items to 3 seconds. That improved a bit but still get disconnects some times!
You think it’s a router issue too?

Here is the code;

#define BLYNK_DEBUG
#define BLYNK_PRINT Serial
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>

boolean system_armed = false;
boolean detection = false;
boolean siren = false;
boolean panic = false;
char* FRONT_DOOR = ".....";
char* GARAGE_DOOR =".....";
char* BACK_YARD = ".....";
char* PIR = ".....";


      BLYNK_WRITE(V10) {
  if (param.asInt() == 1) {
    siren = false;
}
      }

      BLYNK_WRITE(V11) {
  if (param.asInt() == 1) {
    FRONT_DOOR = ".....";
    GARAGE_DOOR =".....";
    BACK_YARD = ".....";
    PIR = ".....";
  }
      }


        BLYNK_WRITE(V12) {
  if (param.asInt() == 1) {
    system_armed = true;
    }else{
    system_armed = false;
    }
        
      }
      
      BLYNK_WRITE(V13) {
  if (param.asInt() == 1) {
    panic = true;
    }else{
    panic = false;
    }
        
      }

BLYNK_CONNECTED() {
  Blynk.syncVirtual(V10, V11, V12,V13);
}


char auth[] = "xxx";

SimpleTimer timer1;
SimpleTimer timer2;



void Virtual14()
{
  if (system_armed) {
  FRONT_DOOR = "(( ALARM ))";
  detection = true;
  siren = true;
  
  }
}


void Virtual12()
{
  if (system_armed) {
  GARAGE_DOOR = "(( ALARM ))";
  detection = true;
  siren = true;
 
  }
}
 
void Virtual13()
{
  if (system_armed) {
   BACK_YARD = "(( ALARM ))";
   detection = true;
   siren = true;
  
  }
}

void Virtual15()
{
  if (system_armed) {
   PIR = "(( ALARM ))";
   detection = true;
   siren = true;
   
  }
}


 void Actions()
   {

       if (siren or panic) {
    digitalWrite(2, HIGH);
    Blynk.virtualWrite(V4,"(((( O N ))))");
      }else{
      digitalWrite(2, LOW);  
      Blynk.virtualWrite(V4,".....");
      }

       if (system_armed) {
    Blynk.virtualWrite(V5,"ARMED");
       }else{
     Blynk.virtualWrite(V5,"DIS-ARMED");
    }
         
   Blynk.virtualWrite(V0,FRONT_DOOR);
   
   Blynk.virtualWrite(V1,GARAGE_DOOR);   
   
   Blynk.virtualWrite(V2,BACK_YARD);
   
   Blynk.virtualWrite(V3,PIR);
    

}

void notifyDetection()
{
  if (detection) {
    BLYNK_LOG("Presense Detected.");
    Blynk.notify("Presense Detected!");
     Blynk.email("xxx@gmail.com", "Subject: Home Security", "Presence Detected...");
    detection = false;
  }
  
}


void setup()
{
  Serial.begin(115200);
  Blynk.begin(auth, "xxx", "xxx");

  while (Blynk.connect() == false) {
    // Wait until connected
  }

  Blynk.notify("Device started");

  timer1.setInterval(15500L, notifyDetection);
  timer2.setInterval(3000L, Actions);


  pinMode(14, INPUT_PULLUP);
  pinMode(12, INPUT_PULLUP);
  pinMode(13, INPUT_PULLUP);
  pinMode(15, INPUT_PULLUP);
  pinMode(2, OUTPUT);

  attachInterrupt(digitalPinToInterrupt(14), Virtual14, FALLING);
  attachInterrupt(digitalPinToInterrupt(12), Virtual12, FALLING);
  attachInterrupt(digitalPinToInterrupt(13), Virtual13, FALLING);
  attachInterrupt(digitalPinToInterrupt(15), Virtual15, FALLING);

}

void loop()
{
  Blynk.run();
  timer1.run();
 timer2.run();
}

Do your problems go away when you comment out your timers?

Yes it does.