Через 5 секунд сервер розрывает соеединение

Когда подключаюсь к облаку работает не более 10 - 15 секун и просто отваливаеться. если добавить условия для переподключения. то каждые 3 секунды подключаеться-отключаеться.Работает в связке arduino nano+esp8266 shield на последней версии библиотеке. Устройство проверял. Находиться все время в сети и успешно проходит пинг. Тоесть меня оключает сервер. Я предполагаю что идет много запросов на сервер. но я нечего не отправляю. а все что отправлял закоментировал и все равно максимально подлюченым могу быть не больше 15 секунд .код программы ниже.
Прошу помощи.

    #define BLYNK_PRINT Serial

    #define EspSerial Serial1

    #include <ESP8266_Lib.h>
    #include <BlynkSimpleShieldEsp8266.h>
    #include <Wire.h> 
    #include <RTClib.h>
    #include <SoftwareSerial.h>

    SoftwareSerial EspSerial(2, 3); // RX, TX
    								// Your ESP8266 baud rate:
    #define ESP8266_BAUD 9600

    ESP8266 wifi(&EspSerial);

    char auth[] = "e76ddc763e7b4ebfaac1b59d9e3a3208";
    char ssid[] = "SweetHome";
    char pass[] = "qazxswedcvfr2213";

    #define buttonPin  7// кнопка
    #define ledSignalPin 2// ИК светодиоды
    #define IN_IR_1 3	// вход ИК фото-приемника 1
    #define switchPin 4   // вход ИК фото-приемника 2 >>#define IN_IR_2 4

    #define ledPin1 5	 // индикация сработки ИК_1 сенсора
    #define ledPin2 6	// индикация сработки ИК_2 сенсора

    #define relayPin1 11 //Дневной свет
    #define relayPin2 13 //Ночной свет

    #define buttonState 0

    boolean buttonOptions;
    boolean timeNow;		// определение время дня
    byte State;				//состоянии для алгоритма, определяющего направление движения
    unsigned int counts;


    RTC_DS1307 rtc; //A4 (SDA), A5 (SCL)      esp8266(nodeMCU) D1 (SLC) , D2 (SDA)

    void setup()
    {
    	Serial.begin(9600);
    	delay(10);
    	EspSerial.begin(ESP8266_BAUD);// Set ESP8266 baud rate
    	delay(10);

    	Blynk.begin(auth, wifi, ssid, pass);
    	//while (Blynk.connect() == false) {}
    	
    	Wire.begin();
    	rtc.begin();
    	
    	pinMode(buttonPin, INPUT_PULLUP);
    	pinMode(ledSignalPin, OUTPUT);
    	pinMode(IN_IR_1, INPUT);
    	pinMode(switchPin, INPUT); 
    	pinMode(ledPin1, OUTPUT);
    	pinMode(ledPin2, OUTPUT);
    	pinMode(relayPin1, OUTPUT);
    	pinMode(relayPin2, OUTPUT);
    	counts = 0;
    }


    void loop()
    {
    	Blynk.run();
    	DateTime now = rtc.now();
    	IntersectionCheck();
    	boolean T = timestatusnow();
    	byte M = MovementDirection();
    	int C = Counter();
    	int S = switcher();
    	/*Serial.println(T);
    	Serial.print(now.hour(), DEC);
    	Serial.print(':');
    	Serial.print(now.minute(), DEC);
    	Serial.print(':');*/
    }


    boolean timestatusnow()
    {
    	DateTime now = rtc.now();
    	//алгоритм дня и ночи//    ( 1 = день 0 = ночь )
    	if (now.hour() >= 6 && now.minute() >= 00 && now.hour() <= 23 && now.minute() <= 59) timeNow = 1;// день
    	if (now.hour() >= 0 && now.minute() >= 00 && now.hour() <= 5 && now.minute() <= 59) timeNow = 0;// ночь
    																									//алгоритм дня и ночи//
    	return timeNow;
    }

    int switcher()
    {
    	if (counts > 0 && timestatusnow() == 1)
    	{

    		digitalWrite(relayPin1, HIGH);
    		digitalWrite(relayPin2, LOW);

    	}
    	if (counts > 0 && timestatusnow() == 0)
    	{
    		digitalWrite(relayPin1, LOW);
    		digitalWrite(relayPin2, HIGH);
    	}
    	if (counts <= 0)
    	{
    		digitalWrite(relayPin1, HIGH);
    		digitalWrite(relayPin2, HIGH);
    	}
    	if (counts < 0) counts = 0;		//обнуляем отрицательные значения количества
    	if (counts >= 2) counts = 1;   // приводим к 1 если больше или равно 2

    }

    int Counter()
    {
    	if (State == 1) {
    		counts = counts + 1;
    		State = 2;
    	}
    	if (State == 5) {
    		counts = counts - 1;
    		State = 0;
    	}

    	/*Serial.print("Counts=");
    	Serial.println(counts);*/
    	/*Blynk.virtualWrite(V3, counts);*/
    	return counts;
    }

    byte MovementDirection()
    {
    	if (digitalRead(IN_IR_1) == LOW)
    	{
    		State = 0;
    	}
    	if (digitalRead(IN_IR_1) == HIGH && State == 0)
    	{
    		State = 1;
    	}
    	if (digitalRead(IN_IR_1) == LOW && State == 2)
    	{
    		State = 3;
    	}
    	if (digitalRead(IN_IR_1) == HIGH && State == 3)
    	{
    		State = 4;
    	}
    	if (digitalRead(switchPin) == LOW && State == 4)
    	{
    		State = 5;
    	}
    	//Serial.print("State=");
    	//Serial.println(State);
    	/*Blynk.virtualWrite(V2, State);*/
    	return State;
    }

    void IntersectionCheck()
    {
    	tone(ledSignalPin, 38000); //38кГц частота с каторой работает ИК фота - приемник


    	if (digitalRead(IN_IR_1) == LOW) { // индикация работы ИК луча 1, если не пересечен то светадиод  ledPin_3 светит, иначе не светит
    		digitalWrite(ledPin1, LOW);
    		/*Blynk.virtualWrite(V1, 0);*/ // выклчить сигнальный диод ИК датчика на сервере

    	}
    	else {
    		digitalWrite(ledPin1, HIGH);
    		/*Serial.println("IR detected");*/
    		/*Blynk.virtualWrite(V1, 255);*/ // включить сигнальный диод ИК датчика на сервере
    	}
    	if (digitalRead(switchPin) == LOW) { // индикация работы ИК луча 2, если не пересечен то светадиод  ledPin_4 светит, иначе не светит
    		digitalWrite(ledPin2, LOW);
    		/*Blynk.virtualWrite(V0, 0);*/ // виключить сигнальный диод PIR датчика на сервере

    	}
    	else {
    		digitalWrite(ledPin2, HIGH);
    		/*Serial.println("Motion detected");*/
    		/*Blynk.virtualWrite(V0, 255);*/ // включить сигнальный диод PIR датчика на сервере
    	}
    }

Move most of this into timer functions instead of trying to run it thousands of times a second. (leave Blynk.run() and add timer.run() )

http://help.blynk.cc/getting-started-library-auth-token-code-examples/blynk-basics/how-to-display-any-sensor-data-in-blynk-app