Arduino Mega + ESP 8266-E12

Hi all,
when Arduino sends the data to the app, widgets are updated but if i change some values by Blynk app on my iPhone, Arduino receives no trigger and makes no action.
I used ESP 8266-E12 to connect Arduino on the network.

Here my code:
//#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <ESP8266_Lib.h>
#include <BlynkSimpleShieldEsp8266.h>
#include <SimpleTimer.h>
#include <OneWire.h>
#include <SPI.h>


#define oFAN_3_LED		12
#define oFAN_2_LED		11
#define oFAN_1_LED		10
#define oFAN_3			  9
#define oFAN_2			  8
#define oFAN_1			  7
#define oRELAY_OUT		  6			
#define oRELAY_OUT_LED 5
#define oSTATUS		  4
#define iPUSH_USER		  3
#define iDS1820			  2
#define iHIH_4030		  A0

#define SIMPLE_TIME		2500		// Tempo di campionamento 1sec
#define ELAPSE_TIME_ON	500
#define ELAPSE_TIME_FAN	500
#define SEMPLE_DS_SENS	1000
#define SYS_OFF			    0
#define SYS_ON			    1
#define SYS_GET_TEMP	  2
#define SYS_GET_PARAM	  3
#define N_AQUIRE		    2

#define ON		HIGH
#define OFF		LOW
#define LED_ON	16

/*	Define the virtual pins.
*	Need to comunicate with app
*/

#define VI_ENABLE_SYS		    V0		// System on off
#define VI_SET_FANS			    V1		// Fan setting
#define VO_VIS_GAUGE_HUMID	V2		// Virtual min to send umidity at gauge
#define VO_ZONA_STS			    V3		// Need to mapping state zone on the chart
#define VO_LED_SYS_STS		  V4		// Led system on-off
#define VO_LED_ZONA_STS		  V5		// Led zona on-off
#define VO_LED_FAN_OFF		  V15		// Led Fan_OFF
#define VO_LED_FAN_1_ON		  V6		// Led Fan_1
#define VO_LED_FAN_2_ON		  V7		// Led Fan_2
#define VO_LED_FAN_3_ON		  V8		// Led Fan_3
#define VI_SET_TEMP_UP	    V9		// Push Button Increase Temp
#define VI_SET_TEMP_DW		  V10		// Push Button Decrease Temp
#define VI_SET_ISTERESI_UP  V16  // Push Button Increase Isteresi
#define VI_SET_ISTERESI_DW  V17  // Push Button Increase Isteresi

#define VO_VIS_POINT_H		  V11		// Show Set point_h
#define VO_VIS_POINT_L		  V12		// Show Set point_l
#define VO_VIS_ISTERESI		  V13		// Show show isetersi %	
#define VO_VIS_GAUGE_TEMP	  V14		// Gauge temperature

#define EspSerial Serial1 
#define ESP8266_BAUD 115200

ESP8266 wifi(&EspSerial);

OneWire  s_DS1820(iDS1820);

SimpleTimer TimerSend2App;
SimpleTimer TimerGet_T_H;

bool oRelayState	= false;
bool interLook		= false;      
bool buttonPressed	= false;
bool programHasExit = false;
bool isFirstConnect = true;
bool resetFanState = false;

byte sensorType		= -1;
byte countAquire	= 0;
byte indexManual	= 0;

int fanSpeed;
int fanSpeedPrev;
int systemState		  = 0;
int systemStatePrev = -1;
long timeElapse		  = 0;
long timeSimple		  = 0;
long timeSimple_1	  = 0;
long sampligDS_Sens = 0;

float avgTemp		  = 0.0;
float setPoint_H  = 22.5; // Default
float setPoint_L;
float Isteresi = 5;				
float Temperatura;
float Umidita;

byte address[8];			// Address of sensor
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).

char auth[] = "xxx";
char ssid[] = "xxx";
char pass[] = "xxx";

WidgetLED LED_SYS(VO_LED_SYS_STS);
WidgetLED LED_ZONA(VO_LED_ZONA_STS);
WidgetLED LED_FAN_0(VO_LED_FAN_OFF);
WidgetLED LED_FAN_1(VO_LED_FAN_1_ON);
WidgetLED LED_FAN_2(VO_LED_FAN_2_ON);
WidgetLED LED_FAN_3(VO_LED_FAN_3_ON);


void setup()
{
	Serial.begin(9600); 
	EspSerial.begin(ESP8266_BAUD);
	delay(50);
	Blynk.begin(auth, wifi, ssid, pass);

	pinMode(oFAN_1, OUTPUT);
	pinMode(oFAN_2, OUTPUT);
	pinMode(oFAN_3, OUTPUT);
	pinMode(oFAN_1_LED, OUTPUT);
	pinMode(oFAN_2_LED, OUTPUT);
	pinMode(oFAN_3_LED, OUTPUT);
	pinMode(oSTATUS, OUTPUT);
	pinMode(oRELAY_OUT, OUTPUT);
	pinMode(oRELAY_OUT_LED, OUTPUT);
	pinMode(iPUSH_USER, INPUT);

	SetOutFan(0);
	if (!s_DS1820.search(address))
	{
  	s_DS1820.reset_search();
		delay(250);
		programHasExit = true;
    Serial.println("No sensor temp found");
		return;
	}

	if (OneWire::crc8(address, 7) != address[7])
	{
		programHasExit = true;
		return;
	}
	
	switch (address[0])  // the first ROM byte indicates which chip
	{
	case 0x28:
		sensorType = 0; // DS18B20
		break;

	case 0x22:
		sensorType = 0; // DS1822
		break;
	}
 
  SetOutFan(fanSpeed);
  timeSimple_1 = millis();
  timeSimple = millis();
  TimerSend2App.setInterval(1000L, RefreshApp);
  TimerGet_T_H.setInterval(500L, GetTempAndHumid);
}


void loop()
{
  Blynk.run();
  TimerSend2App.run();
  TimerGet_T_H.run();
  
	ManualSetUp(digitalRead(iPUSH_USER));

	setPoint_L = setPoint_H - (setPoint_H * Isteresi / 100);

	if(systemState)
		analogWrite(oSTATUS, LED_ON);
	else
		analogWrite(oSTATUS, OFF);
	switch (systemState)
	{
  	case SYS_OFF:
  		oRelayState = OFF;
  		digitalWrite(oRELAY_OUT, OFF);
  		analogWrite(oRELAY_OUT_LED, OFF);
  		SetOutFan(0);
  		break;
  
  	case SYS_ON:
  			SetOut(Temperatura);
  			digitalWrite(oRELAY_OUT, oRelayState);
  			if (!resetFanState)
  			{
  				resetFanState = true;
  				SetOutFan(fanSpeed);
  			}
  			if (oRelayState)
  				analogWrite(oRELAY_OUT_LED, LED_ON);
  			else
  				analogWrite(oRELAY_OUT_LED, OFF);
  		break;
	}
}

void GetTempAndHumid()
{
	Temperatura = Arrotonda(GetTemp(), 1);
	Umidita = Arrotonda(getHumidity(Temperatura), 1);
}

float Arrotonda(const float v, const int cifre)
{
	int i;
	i = (int)(v*pow(10, cifre));
	return((float)(i / pow(10, cifre)));
}

void ManualSetUp(bool iButtonState)
{
	switch (indexManual)
	{
	case 0:	//Is button pressed?
		if (iButtonState) 
		{
  			timeElapse = millis();
			indexManual++;
		}
		break;
	case 1: // If button is released state change, else go to next step
		if ((millis() - timeElapse) >= ELAPSE_TIME_ON)
		{
			timeElapse = millis();
			if (!iButtonState)
			{
				systemState = !systemState;
				indexManual = 0;
        Serial.print("State systeme is: "); Serial.println(systemState);
			}
			else
			{	// Button still pressed
				timeElapse = millis();
				indexManual++;
			}
		}
		break;
	case 2: // if button still pressed and system is on, fan speed change
		if ((millis() - timeElapse) >= ELAPSE_TIME_FAN) 
		{
			if (!iButtonState) // Button released
			{
				indexManual = 0;
			}
			else if (iButtonState && (systemState == SYS_ON))
			{
				timeElapse = millis();
				fanSpeed++;
				delay(500);
				if (fanSpeed > 3)
					fanSpeed = 0;
         
				SetOutFan(fanSpeed);
			}
		}
		break;
	}
}
void SetOutFan(int valueFan) 
{
	switch (valueFan)
	{
	case 0:
		SetFansOff();
		break;
	case 1:
		SetFansOff();
		analogWrite(oFAN_1_LED, LED_ON);
		digitalWrite(oFAN_1, ON);
		break;
	case 2:
		SetFansOff();
		analogWrite(oFAN_2_LED, LED_ON);
		digitalWrite(oFAN_2, ON);
		break;
	case 3:
		SetFansOff();
		analogWrite(oFAN_3_LED, LED_ON);
		digitalWrite(oFAN_3, ON);
		break;
	}
}

void SetFansOff()
{
	digitalWrite(oFAN_1, OFF);
	digitalWrite(oFAN_2, OFF);
	digitalWrite(oFAN_3, OFF);

	digitalWrite(oFAN_1_LED, OFF);
	digitalWrite(oFAN_2_LED, OFF);
	digitalWrite(oFAN_3_LED, OFF);
}

/*
 Determines when enable heating..
*/
void SetOut(float temp)
{	/* Attiva il riscaldamento */
	if	((temp < setPoint_H) &&	!interLook)
	{
		oRelayState = ON;
	}
	/* Temperatura inferiore alla soglia minima; accendi riscaldamento */
	if	((temp < setPoint_L) &&	interLook)
	{
		oRelayState = ON;
		interLook = false;
	}
	/* Temperatura superiore alla soglia massima; spegni riscaldamento */
	if (temp > setPoint_H)
	{
		oRelayState = OFF;
		interLook = true;
	}
}
float GetTemp()
{
	byte data[12];         // Hear will be stored data coming from scrachPad sensor
	s_DS1820.reset();
	s_DS1820.select(address);
	s_DS1820.write(0x44, 1);     // start conversion, with parasite power on at the end

	delay(300);   

	s_DS1820.reset();
	s_DS1820.select(address);
	s_DS1820.write(0xBE);          // Read Scratchpad

	for (int i = 0; i < 9; i++)		// we need 9 bytes
	{
		data[i] = s_DS1820.read();
	}

	int16_t raw = (data[1] << 8) | data[0];

		byte cfg = (data[4] & 0x60);    // at lower res, the low bits are undefined, so let's zero them
		if (cfg == 0x00)
			raw = raw & ~7;  // 9 bit resolution, 93.75 ms
		else if (cfg == 0x20)
			raw = raw & ~3; // 10 bit res, 187.5 ms
		else if (cfg == 0x40)
			raw = raw & ~1; // 11 bit res, 375 ms
	return (float)raw / 16.0;
}

float getHumidity(float degreesCelsius) 
{
	//caculate relative humidity
	float supplyVolt = 5.0;

	// read the value from the sensor:
	int HIH4030_Value = analogRead(iHIH_4030);
	float voltage = HIH4030_Value / 1023. * supplyVolt; // convert to voltage value

														// convert the voltage to a relative humidity
														// - the equation is derived from the HIH-4030/31 datasheet
														// - it is not calibrated to your individual sensor
														//  Table 2 of the sheet shows the may deviate from this line
	float sensorRH = 161.0 * voltage / supplyVolt - 25.8;
	float trueRH = sensorRH / (1.0546 - 0.0026 * degreesCelsius); //temperature adjustment 

	return trueRH;
}
/* WRITE VALUE FROM APP */
BLYNK_CONNECTED()
{ // SYNC DATA
	if (isFirstConnect)
	{
		isFirstConnect = false;
		Blynk.syncAll();
	}
}
BLYNK_READ(VO_VIS_POINT_H)
{
	Blynk.virtualWrite(VO_VIS_POINT_H, setPoint_H);
}
BLYNK_READ(VO_VIS_POINT_L)
{
	Blynk.virtualWrite(VO_VIS_POINT_L, setPoint_L);
}
BLYNK_READ(VO_VIS_GAUGE_TEMP)
{
	Blynk.virtualWrite(VO_VIS_GAUGE_TEMP, Temperatura);
}
BLYNK_READ(VO_VIS_GAUGE_HUMID)
{
	Blynk.virtualWrite(VO_VIS_GAUGE_HUMID, Umidita);
}
BLYNK_READ(VO_VIS_ISTERESI)
{
	Blynk.virtualWrite(VO_VIS_ISTERESI, Isteresi);
}
BLYNK_READ(VO_ZONA_STS)
{
	Blynk.virtualWrite(VO_ZONA_STS, oRelayState * 10);
}

/* Send data from app to hardware */
BLYNK_WRITE(VI_ENABLE_SYS) // GET toogle of switch (SYS ON-OFF) from app
{
	systemState = param.asInt()-1;
}
BLYNK_WRITE(VI_SET_FANS) // GET toogle of switch (FAN_1) from app
{
	int status = param.asInt();
	if (systemState) 
	{
		fanSpeed = status - 1;
		SetOutFan (fanSpeed);
	}

}
BLYNK_WRITE(VI_SET_TEMP_UP) // GET toogle of switch Increase temp from app
{
	  setPoint_H = param.asInt();
}

// Isteresi
BLYNK_WRITE(VI_SET_ISTERESI_UP) // GET toogle of switch Increase temp from app
{
  Isteresi =param.asInt();;
}

void RefreshApp()
{
	if (systemState == SYS_ON)
	{
		LED_SYS.on();
	}
	else if (systemState == SYS_OFF)
	{
		LED_SYS.off();
	}
	
	if (oRelayState)
		LED_ZONA.on();	
	else
		LED_ZONA.off();

	switch (fanSpeed)
	{
		case 0:
			LED_FAN_0.on();
			LED_FAN_1.off();
			LED_FAN_2.off();
			LED_FAN_3.off();
			break;
		case 1:
			LED_FAN_0.off();
			LED_FAN_1.on();
			LED_FAN_2.off();
			LED_FAN_3.off();
			break;
		case 2:
			LED_FAN_0.off();
			LED_FAN_1.off();
			LED_FAN_2.on();
			LED_FAN_3.off();
			break;
		case 3:
			LED_FAN_0.off();
			LED_FAN_1.off();
			LED_FAN_2.off();
			LED_FAN_3.on();
			break;
	}
}

Someone can help me?

Thanks in advance