Blynk y wemos

Buenas tardes, estoy realizando un proyecto para monitorizar las plantas (humedad ambiental, temperatura, presion atmosferica etc), y actuar sobre ellas, riego, luz, ventiladores, deshumidificador...
Todo esto lo he hecho con un wemos pro mini, una placa de reles, dht22, bme280.
El programa lo tengo realizado ya, y aparentemente funciona, digo aparentemente, porque mientras estoy con la app en el movil abierta, todo funciona correctamente, pero en el momento que salgo de la app (sin llegar a cerrarla, ejecutandola en segundo plano), deja de responder a las condiciones (el widget eventor por ejemplo). Ya no se si es tema de software, o tema de configuración del smartphone (poco x3 nfc). Dejo por aqui el programa.

#include "DHT.h" // DHT Sensor
#include <ESP8266WiFi.h>
#include <Blynk.h>
#define BLYNK_PRINT Serial
#include <BlynkSimpleEsp8266.h>
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#define SEALEVELPRESSURE_HPA (1007.8)
//Setup connection of the sensor
Adafruit_BME280 bme; // I2C

char auth[] = "ZD6rUdonhyXNQBdwWDY-JVUxkd9t7bUu";
char ssid[] = "MGME";
char pass[] = "945281783";
BlynkTimer timer;

DHT dhtA(15, DHT22); // DHT instance named dhtA, D8 and sensor type

//Variables
float pressure; //To store the barometric pressure (Pa)
float temperature; //To store the temperature (oC)
float humidity; //To store the humidity (%)
int altimeter; //To store the humidity (%) (you can also use it as a float variable)

const int riego1 = D7;
const int riego2 = D0;

int riego1State = 0;
int riego2State = 0;

void setup() {
Serial.begin(9600);
Serial.println("ArduPlantas:");
Blynk.begin(auth, ssid, pass);
dhtA.begin(); // Starting the DHT-22
bme.begin(0x76); //Begin the sensor
pinMode(riego1, INPUT);
pinMode(riego2, INPUT);
digitalWrite(riego1, riego1State);
digitalWrite(riego2, riego2State);
digitalWrite(0,HIGH);
digitalWrite(2,HIGH);
digitalWrite(12,HIGH);
digitalWrite(14,HIGH);
timer.setInterval(5000L, ReadSensors); // read sensor every 5s
}

void ReadSensors(){
//Read values from the sensor:
pressure = bme.readPressure();
temperature = bme.readTemperature();
humidity = bme.readHumidity ();
altimeter = bme.readAltitude (1010);

Blynk.virtualWrite(V2, pressure/100); // write pressure to V1 value display widget
Blynk.virtualWrite(V3, temperature); // write temperature to V2 value display widget
Blynk.virtualWrite(V4, altimeter); //write altimeter to V3 value display widget
Blynk.virtualWrite(V5, humidity);// write humidity to V4 value display widget

//Print values to serial monitor:
Serial.print(F("Pressure: "));
Serial.print(pressure);
Serial.print(" Mb");
Serial.print("\t");
Serial.print(("Temp: "));
Serial.print(temperature);
Serial.print(" °C");
Serial.print("\t");
Serial.print("Humidity: ");
Serial.print(humidity); // this should be adjusted to your local forcase
Serial.println(" %");
Serial.print("Altimeter: ");
Serial.print(altimeter); // this should be adjusted to your local forcase
Serial.println(" m");
//delay(2000); //Update every 5 sec
}

void climateRoutine() {
byte h1 = dhtA.readHumidity(); // f1 and h1 are celsius and humidity readings
// byte t1 = dhtA.readTemperature(true); // for temperature in farenheits
byte t1 = dhtA.readTemperature(); // from DHT/A
Blynk.virtualWrite(V0, t1); // Set Virtual Pin 0 frequency to PUSH in Blynk app
Blynk.virtualWrite(V1, h1); // Set Virtual Pin 1 frequency to PUSH in Blynk app
}

void loop() {
Blynk.run();
timer.run();
climateRoutine(); // Climate routine
riego1State = digitalRead(riego1);
riego2State = digitalRead(riego2);
}
BLYNK_READ(V7)
{
if (riego1State == HIGH){

Blynk.virtualWrite(V7, 1);
}
else
{
Blynk.virtualWrite(V7, 0);
}
}
BLYNK_READ(V8)
{
if (riego2State == HIGH){

Blynk.virtualWrite(V8, 1);
}
else
{
Blynk.virtualWrite(V8, 0);
}
delay(4700); // 4.7 sec between routines
}

Lee las normas, te van a llamar la atención sobre cómo posteaste el código

Para mi es claro que el problema es que la aplicación deja de "escuchar".
Tienes que revisar la configuración de la aplicación en el móvil.
Verifica que no se ponga en modo de ahorro de energía cuando está en segundo plano.

Tuve problemas con WhatsApp por esto. Lo excluí del ahorro de energía y listo.

Saludos

Moderador
Hola, lo que te pidió @TonyDiana y ahora yo vuelvo a reclamar es que EDITES tu post incial y no que copies dicho post para presentarlo de otro modo.
Los códigos solo se muestran usando etiquetas para tal fin. No como citas.
Además no debes repetir lo que ya se lee arriba.
Te dejo las normas para que le des una buena lectura y corrijas tu error.

Normas del foro

Se que estas empezando, y que lo que has hecho te ha dado su buen trabajo pero ve a Documentación y lee las recomendación para reemplazar delay() x millis().
En códigos en los que se debe presetar atención a lo que el usuario hace tener algo que detiene el mismo por 4.7 segundos es inaceptable.

Ve a Documentacion => Indice de temas tutoriales => millis()