Tengo un WeMos D1 mini con un programa de riego en el que hay varios tiempos de riego que son disparados desde un Android mediante widget Timer a través de un Server local Blynk.
Una vez colocado los tiempo de cada Timer. todo funciona correctamente y a partir de ahí no lo puedo resetear y cambiarlo por otros tiempos.
• Smartfone Android version 9
• Blynk local server
• Blynk Library version 0.6.0
Mi programa resumido es:
#include “Arduino.h” // Para LORA E32
#include “LoRa_E32.h”
//---------------------------
#include <NTPClient.h> // Para fecha y hora
#include <time.h>
#include <TimeLib.h>
#include <Timezone.h>
//---------------------------
#include <ESP8266WiFi.h> // Para WiFi
#include <WiFiUdp.h>
//---------------------------
#include<Wire.h> // para BME280
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
//---------------------------
#include <BlynkSimpleEsp8266.h> // para Blynk
#define BLYNK_PRINT Serial
BlynkTimer timer;
char auth[] = “xxxxxxxxxxxxxxxxxxxxx”;
//---------------------------
const char* ssid = “xxxxxxxxxxxxxxxx”;
const char* pass = “xxxxxxxxxxxxxxx”;
//---------------------------
int peticion; // declaración variables
int ESTACION = 0;
/* Aqui van colocadas opciones del programa que no afectan
* a este caso
*/
//---------------------------
/*Ahora lo que sigue si es parte del caso que se consulta
*/
//Mando RIEGO 1 en ESTACION 1
BLYNK_WRITE(V4)
{
int Riego53 = param.asInt();
Serial.print(“Valor de V4------”);
Serial.println(Riego53);
if (Riego53 == 1)
{
peticion = 1;
ESTACION = 1;
}
else{
peticion = 0;
ESTACION = 1;
}
Serial.print("–V53—");
Serial.print(ESTACION);
Serial.println(peticion);
}
// Mando RIEGO 2 en ESTACION 2
BLYNK_WRITE(V5)
{
int Riego55 = param.asInt();
if (Riego55 == 1)
{
peticion = 1;
ESTACION = 2;
}
else {
peticion = 0;
ESTACION = 2;
}
Serial.println("–V5—");
Serial.print(ESTACION);
Serial.println(peticion);
}
// Mando RIEGO 3 en ESTACION 3
BLYNK_WRITE(V6)
{
int Riego57 = param.asInt();
if (Riego57 == 1)
{
peticion = 1;
ESTACION = 3;
}
else {
peticion = 0;
ESTACION = 3;
}
Serial.println("–V6—");
Serial.print(ESTACION);
Serial.println(peticion);
}
/* Aqui siguen para el resto de riegos
*/
//---------------------------------------
void setup()
Serial.begin(115200);
while (!Serial) {
;
}
Serial.println(“iniciada comunicacion serie”);
delay(2000);
Serial.println("");
Serial.print("conectando a ");
Serial.print(ssid);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println(“WiFi conectada”);
Serial.println("");
Serial.println("Inicializando BLYNK ");
Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,160), 8080);
/* Aqui sigue arranques aenos al problema actual
*/
timer.setInterval(10000L, METEREOLOGICO);
timer.setInterval(10000L, CALENDARIO);
timer.setInterval(100L, TRANSMISION);
timer.setInterval(100L, SENALIZACION); .
//---------------------------------------
void METEREOLOGICO(){
/* Aqui va el programa Metereologico
*/
}
//---------------------------------------
void CALENDARIO(){
/* Aqui va el programa Calendario
*/
}
//---------------------------------------
void TRANSMISION (){
/* Aqui va el programa en el que se utilizan las variables
* declaradas "peticion" y "ESTACION" en las BLYNK_WRITE(V4)
* y siguientes
*/
}
//---------------------------------------
void SENALIZACION(){
/* Aqui sige el programa de Señalizacion
*/
}
//---------------------------------------
void loop()
{
timer.run();
Blynk.run();
}
//---------------------------------------
Cuando intento cambiar el tiempo, previamente reseteado y cepto el nuevo tiempo con OK
el valor se cambia aparentemente pero no funciona a la nueva hora.
Si salimos de Blynk y volvemos a entrar, se observa que vuelve a tener el tiempo antiguo que es el que sigue funcionando.
He comprobado que en otro programa que hace como un año funcionaba correctamente, ahora tiene el mismo defecto.
He actualizado la biblioteca de Blynk y el programa del Server local en la Raspberry que ahora tiene la versión 0.41.15
¿Que puede estar sucediendo?
saludos