27-10-2023, 02:19 AM
Saludos,
Soy nuevo en el foro y vengo desesperado a buscar ayuda porque me estoy quedando sin ideas.
En mi trabajo tengo una máquina electromecánica, y quiero medir los tiempos de trabajo y paro de la máquina.
Para esto, estoy usando un esp32 dev kit 1 con un shield que incluye los bornes para poder conectar cables.
He conectado los contactos normal abiertos de 2 relays a GND (común proveniente de GND de la tarjeta) y a los GPIO 35 y 27.
estas GPIO están configuradas como entradas PULLUP.
Al detectar que los relay se activan o se desactivan, mando a una base de datos de hostinger el estado (marcha, paro o alarma), y luego descargo los datos.
Mi problema es qué, mi ESP 32, empieza trabajando como se espera, pero al cabo de unas horas deja de responder. no reacciona a los relay.
Aunque puede parecer que se queda en algún fallo por comunicación, el puerto serial deja de imprimir lo que está haciendo o envía una serie de caracteres que no he programado en algún baudrate que no he seteado y desconozco.
me parece que no son fallas de conexión porque la falla sucede y un led que le he conectado me ha dejado ver que la salida GPIO 4 que está configurada como LOW, se pasa sola a un estado como si no estuviera configurada o definida.
me da fallo subir el archivo con el código, así que lo pondré acá:
//Librerías de Wifi
#include <WiFi.h>
#include <HTTPClient.h>
//Librerías y objeto para manejo de memoria eeprom
//#include <Preferences.h> //Incluye la blioteca de EEPROM
//Preferences pref; //inicia un objeto de memoria no volatil
/*
//Definir los hilos de multi tarea
TaskHandle_t FBTask;
TaskHandle_t SQLTask;
*/
//Server y credenciales de la base de datos
const char* serverName = "https://linkdemanejoyalmacenajededatos.php";
String apiKeyValue = "jfhdskls";
String nodo = "/nodonodo"; //dirección del nodo dentro de la base
//Definir las variables del programa principal y app
bool viSRUN = false;
bool viALARM = false;
int mSTAT = 10;
int INICIAR = 1;
//Definir variables a enviar por el POST
int RUN = 0;
int STOP = 0;
int ALARM = 0;
int COMANDO = 0;
int SENDDATA = 0;
String TALARM = "INICIO";
String USER = "";
String PRODUCT = "";
String SPAUSA = "";
int COUNTP = 0;
//Variables para reinicio de conexión en caso de fallas del wifi
bool reenvio = true; //Variable para reenviar los datos http en caso de falla
int concheck = 0;
int resetcon = 0;
int intentos = 0;
bool aok = true;
int cuentare = 0; //contador de fallas
//Define el objeto Servidor para recibir datos por WiFi
WiFiServer server(80);
String header;
//Variables para confirma de lectura de entradas
bool iRun = false;
bool iAlarm = false;
bool tRun = false;
bool tAlarm = false;
unsigned long lastTime, timeout = 2000;
unsigned long tread = 1000;
unsigned long tr1 = 0;
unsigned long tr2 = 0;
//*********Determinar los credenciales de conección a WIFI****************************//
const char* ssid = "wifi";
const char* password = "contraseña";
void conectarWiFi() {
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED && intentos < 30) {
intentos++;
Serial.print("Intento de conexión número ");
Serial.print(intentos);
Serial.println("...");
delay(1000);
}
if (WiFi.status() == WL_CONNECTED) {
Serial.println("Conexión WiFi exitosa");
Serial.print("Dirección IP: ");
Serial.println(WiFi.localIP());
intentos = 0;
} else {
Serial.println("No se pudo conectar a la red WiFi");
ESP.restart();
}
}
void setup() {
//Setear el PINOUT
pinMode(2, OUTPUT); //habilita el pin 4 como salida
pinMode(4, OUTPUT); //habilita el pin 4 como salida
pinMode(14, OUTPUT); //habilita el pin 14 como salida
pinMode(22, OUTPUT); //habilita como Salida START
pinMode(23, OUTPUT); //habilita como Salida STOP
pinMode(27, INPUT_PULLUP); //habilita el pin 27 como entrada RUN
pinMode(26, INPUT_PULLUP); //habilita el pin 26 como entrada SENSOR
pinMode(35, INPUT_PULLUP); //habilita el pin 35 como entrada ALARMA
digitalWrite(4, LOW); //Apaga el RS485
digitalWrite(14, LOW); //0VDC
digitalWrite(22, HIGH); //RELÉ DE RUN
digitalWrite(23, HIGH); //RELÉ DE STOP
//Definimos los objetos Multitask
/*
xTaskCreatePinnedToCore(LFB, "Task1", 8000, NULL, 1, &FBTask, 0); // Core 0
xTaskCreatePinnedToCore(LSQL, "Task2", 8000, NULL, 1, &SQLTask, 0); // Core 0
*/
//Serial.begin(9600); //Inicia la comunicación Serial por el puerto COM
delay(1000);
Serial.println("Iniciando Wifi...");
//Llama la funcion de conexion wifi
conectarWiFi();
//inicia el objeto de servidor Wifi para leer los post desde la app
server.begin();
//Carga los datos de la EEPROM en ajustes de whatsapp
//pref.begin("WhaSettings", false);
INICIAR = 1;
TALARM = "INICIO";
}
void loop() {
if (INICIAR == 1) {
if (digitalRead(35) == HIGH) {
ALARM = 1;
}
if (digitalRead(27) == LOW) {
RUN = 1;
} else {
STOP = 1;
}
SENDDATA = 1;
delay(1000);
INICIAR = 0;
}
//Evaluacion si se solicitó enviar datos
if (SENDDATA == 1) {
enviodata();
Serial.println("Envio de data");
} else {
//En caso de no intentar enviar datos, se mantiene leyendo cambios de estado
//Rutina al iniciar el ESP32, manda un registro a la base de datos con el status actual y avisa que se acaba de iniciar el void loop
//Evaluación y filtrado de los pulsos o interferencias en las entradas del ESP32 (ALARMA)
if (digitalRead(35) == HIGH) {
if (tAlarm == false) {
tr1 = millis();
tAlarm = true;
} else {
if (millis() - tr1 >= tread) {
iAlarm = true;
}
}
} else {
if (tAlarm == true) {
tr1 = millis();
tAlarm = false;
} else {
if (millis() - tr1 >= tread) {
iAlarm = false;
}
}
}
//Evaluación y filtrado de los pulsos o interferencias en las entradas del ESP32 (RUN/STOP)
if (digitalRead(27) == LOW) {
if (tRun == false) {
tr2 = millis();
tRun = true;
} else {
if (millis() - tr2 >= tread) {
iRun = true;
}
}
} else {
if (tRun == true) {
tr2 = millis();
tRun = false;
} else {
if (millis() - tr2 >= tread) {
iRun = false;
}
}
}
//Rutina de checkeo de cambio de estados
if (iAlarm == true) {
if (ALARM == 0) {
ALARM = 1;
TALARM = "ALARMA";
SENDDATA = 1;
}
ALARM = 1;
mSTAT = 3;
}
if (iAlarm == false) {
if (ALARM == 1) {
ALARM = 0;
TALARM = "CONFIRMA ALARMA";
SENDDATA = 1;
}
ALARM = 0;
mSTAT = 4;
}
if (iRun == true) {
if (RUN == 0) {
RUN = 1;
STOP = 0;
TALARM = "RUN";
SENDDATA = 1;
Serial.println("MARCHA");
}
RUN = 1;
STOP = 0;
digitalWrite(2, HIGH);
mSTAT = 1;
}
if (iRun == false) {
if (RUN == 1) {
RUN = 0;
STOP = 1;
TALARM = "STOP";
SENDDATA = 1;
Serial.println("DETENIDA");
}
RUN = 0;
STOP = 1;
mSTAT = 2;
digitalWrite(2, LOW);
}
}
/*
WiFiClient client = server.available();
if (client) {
lastTime = millis();
Serial.println("Nuevo cliente");
String currentLine = "";
while (client.connected() && millis() - lastTime <= timeout) {
if (client.available()) {
char c = client.read();
Serial.write©;
header += c;
if (c == '\n') {
if (currentLine.length() == 0) {
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println("Connection: close");
client.println();
//pruebas, habrá que modificar esto
if (header.indexOf("GET /refresh") >= 0) {
client.println(mSTAT);
} else {
int start = header.indexOf("GET ") + 4;
int end = header.indexOf("HTTP/1.1") - 1;
String requestValue = header.substring(start, end);
Serial.println("Request:");
//Serial.println(requestValue);
client.println(mSTAT);
aok = false;
char* token = strtok(requestValue.begin(), "$");
USER = token;
token = strtok(NULL, "$");
USER = token;
token = strtok(NULL, "$");
PRODUCT = token;
token = strtok(NULL, "$");
String strtoint = token;
COMANDO = strtoint.toInt();
token = strtok(NULL, "$");
SPAUSA = token;
token = strtok(NULL, "$");
}
break;
} else {
currentLine = "";
}
} else if (c != '\r') {
currentLine += c;
}
}
}
header = "";
client.stop();
Serial.println("Cliente desconectado.");
Serial.println("");
Serial.println("Valores extraídos:");
//Serial.println(USER);
//Serial.println(PRODUCT);
Serial.println(COMANDO);
if (aok == false) {
switch (COMANDO) {
case 1:
Serial.println("SOLICITUD DE RUN");
viSRUN = true;
viALARM = false;
if (RUN != 1) {
digitalWrite(22, LOW);
digitalWrite(23, HIGH);
TALARM = "CONFIRMA SEGURIDAD";
Serial.println("ON RELÉ RUN");
aok == true;
}
break;
case 2:
viSRUN = false;
Serial.println("SOLICITUD DE STOP");
if (STOP != 1) {
digitalWrite(23, LOW);
digitalWrite(22, HIGH);
TALARM = "CONFIRMA SEGURIDAD";
Serial.println("ON RELÉ STOP");
aok == true;
}
break;
//Lectura de Comando Alarm
case 3:
viALARM = true;
viSRUN = false;
if (TALARM != "ALARMA DESDE LA APP") {
TALARM = "ALARMA DESDE LA APP";
digitalWrite(23, LOW);
digitalWrite(22, HIGH);
if (RUN == 0) {
SENDDATA = 1;
}
Serial.println("SET ALARM");
aok == true;
}
break;
case 5:
if (TALARM != SPAUSA) {
viSRUN = false;
Serial.println("SET " + SPAUSA);
digitalWrite(23, LOW);
digitalWrite(22, HIGH);
TALARM = SPAUSA;
SENDDATA = 1;
aok == true;
}
break;
}
}
}
//Evalua si el estado de de la maquina coincide con la solicitud de la app
if ((viSRUN == true && mSTAT == 1) || (viSRUN == false && mSTAT == 2)) {
//Si está en pide run y está en run deja las salidas inactivas
digitalWrite(23, HIGH);
digitalWrite(22, HIGH);
//Serial.println("RELÉS DESACTIVADOS");
COMANDO = 10;
//Serial.println("SOLICITUD DE LA APP RESUELTA");
}
*/
delay(200);
}
void enviodata() {
//Si está habilitado el WiFi inicia el objeto HTTP
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin(serverName);
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
//Envia los datos recibidos a la base de datos
String httpRequestData = "api_key=" + apiKeyValue + "&RUN=" + RUN + "&STOP=" + STOP + "&ALARM=" + ALARM + "&TALARM=" + TALARM + "&USER=" + USER + "&PRODUCT=" + PRODUCT + "&COUNTP=" + COUNTP + "";
Serial.print("httpRequestData: ");
Serial.println(httpRequestData);
int httpResponseCode = http.POST(httpRequestData);
//Codigo de verifiacion de la request
if (httpResponseCode > 0) {
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
reenvio = false;
concheck = 0;
SENDDATA = 0;
} else {
reenvio = true;
Serial.print("Error code: ");
Serial.println(httpResponseCode);
concheck = concheck + 1;
Serial.println("Fallas de conexión: ");
Serial.println(concheck);
if (concheck >= 20) {
Serial.println("Demasiadas fallas, reseteando conexión");
desconectarWiFi();
reconectarWiFi();
}
http.end();
}
} else {
Serial.println("WiFi Disconnected");
desconectarWiFi();
reconectarWiFi();
delay(500);
}
}
//Funcion para desconectar el wifi en caso de exeder errores
void desconectarWiFi() {
WiFi.disconnect();
Serial.println("Desconectado de la red WiFi");
}
//Funcion para reconectar el wifi
void reconectarWiFi() {
WiFi.reconnect();
Serial.println("Reconectando a la red WiFi...");
conectarWiFi();
}
/*
void LFB(void* parameter) { //
while (1 == 1) {
delay(1000);
}
}
void LSQL(void* parameter) { //
while (1 == 1) {
if (SENDDATA == 1) {
enviodata();
Serial.println("Envio por el core: " + xPortGetCoreID());
}
delay(200);
}
}
*/
Soy nuevo en el foro y vengo desesperado a buscar ayuda porque me estoy quedando sin ideas.
En mi trabajo tengo una máquina electromecánica, y quiero medir los tiempos de trabajo y paro de la máquina.
Para esto, estoy usando un esp32 dev kit 1 con un shield que incluye los bornes para poder conectar cables.
He conectado los contactos normal abiertos de 2 relays a GND (común proveniente de GND de la tarjeta) y a los GPIO 35 y 27.
estas GPIO están configuradas como entradas PULLUP.
Al detectar que los relay se activan o se desactivan, mando a una base de datos de hostinger el estado (marcha, paro o alarma), y luego descargo los datos.
Mi problema es qué, mi ESP 32, empieza trabajando como se espera, pero al cabo de unas horas deja de responder. no reacciona a los relay.
Aunque puede parecer que se queda en algún fallo por comunicación, el puerto serial deja de imprimir lo que está haciendo o envía una serie de caracteres que no he programado en algún baudrate que no he seteado y desconozco.
me parece que no son fallas de conexión porque la falla sucede y un led que le he conectado me ha dejado ver que la salida GPIO 4 que está configurada como LOW, se pasa sola a un estado como si no estuviera configurada o definida.
me da fallo subir el archivo con el código, así que lo pondré acá:
//Librerías de Wifi
#include <WiFi.h>
#include <HTTPClient.h>
//Librerías y objeto para manejo de memoria eeprom
//#include <Preferences.h> //Incluye la blioteca de EEPROM
//Preferences pref; //inicia un objeto de memoria no volatil
/*
//Definir los hilos de multi tarea
TaskHandle_t FBTask;
TaskHandle_t SQLTask;
*/
//Server y credenciales de la base de datos
const char* serverName = "https://linkdemanejoyalmacenajededatos.php";
String apiKeyValue = "jfhdskls";
String nodo = "/nodonodo"; //dirección del nodo dentro de la base
//Definir las variables del programa principal y app
bool viSRUN = false;
bool viALARM = false;
int mSTAT = 10;
int INICIAR = 1;
//Definir variables a enviar por el POST
int RUN = 0;
int STOP = 0;
int ALARM = 0;
int COMANDO = 0;
int SENDDATA = 0;
String TALARM = "INICIO";
String USER = "";
String PRODUCT = "";
String SPAUSA = "";
int COUNTP = 0;
//Variables para reinicio de conexión en caso de fallas del wifi
bool reenvio = true; //Variable para reenviar los datos http en caso de falla
int concheck = 0;
int resetcon = 0;
int intentos = 0;
bool aok = true;
int cuentare = 0; //contador de fallas
//Define el objeto Servidor para recibir datos por WiFi
WiFiServer server(80);
String header;
//Variables para confirma de lectura de entradas
bool iRun = false;
bool iAlarm = false;
bool tRun = false;
bool tAlarm = false;
unsigned long lastTime, timeout = 2000;
unsigned long tread = 1000;
unsigned long tr1 = 0;
unsigned long tr2 = 0;
//*********Determinar los credenciales de conección a WIFI****************************//
const char* ssid = "wifi";
const char* password = "contraseña";
void conectarWiFi() {
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED && intentos < 30) {
intentos++;
Serial.print("Intento de conexión número ");
Serial.print(intentos);
Serial.println("...");
delay(1000);
}
if (WiFi.status() == WL_CONNECTED) {
Serial.println("Conexión WiFi exitosa");
Serial.print("Dirección IP: ");
Serial.println(WiFi.localIP());
intentos = 0;
} else {
Serial.println("No se pudo conectar a la red WiFi");
ESP.restart();
}
}
void setup() {
//Setear el PINOUT
pinMode(2, OUTPUT); //habilita el pin 4 como salida
pinMode(4, OUTPUT); //habilita el pin 4 como salida
pinMode(14, OUTPUT); //habilita el pin 14 como salida
pinMode(22, OUTPUT); //habilita como Salida START
pinMode(23, OUTPUT); //habilita como Salida STOP
pinMode(27, INPUT_PULLUP); //habilita el pin 27 como entrada RUN
pinMode(26, INPUT_PULLUP); //habilita el pin 26 como entrada SENSOR
pinMode(35, INPUT_PULLUP); //habilita el pin 35 como entrada ALARMA
digitalWrite(4, LOW); //Apaga el RS485
digitalWrite(14, LOW); //0VDC
digitalWrite(22, HIGH); //RELÉ DE RUN
digitalWrite(23, HIGH); //RELÉ DE STOP
//Definimos los objetos Multitask
/*
xTaskCreatePinnedToCore(LFB, "Task1", 8000, NULL, 1, &FBTask, 0); // Core 0
xTaskCreatePinnedToCore(LSQL, "Task2", 8000, NULL, 1, &SQLTask, 0); // Core 0
*/
//Serial.begin(9600); //Inicia la comunicación Serial por el puerto COM
delay(1000);
Serial.println("Iniciando Wifi...");
//Llama la funcion de conexion wifi
conectarWiFi();
//inicia el objeto de servidor Wifi para leer los post desde la app
server.begin();
//Carga los datos de la EEPROM en ajustes de whatsapp
//pref.begin("WhaSettings", false);
INICIAR = 1;
TALARM = "INICIO";
}
void loop() {
if (INICIAR == 1) {
if (digitalRead(35) == HIGH) {
ALARM = 1;
}
if (digitalRead(27) == LOW) {
RUN = 1;
} else {
STOP = 1;
}
SENDDATA = 1;
delay(1000);
INICIAR = 0;
}
//Evaluacion si se solicitó enviar datos
if (SENDDATA == 1) {
enviodata();
Serial.println("Envio de data");
} else {
//En caso de no intentar enviar datos, se mantiene leyendo cambios de estado
//Rutina al iniciar el ESP32, manda un registro a la base de datos con el status actual y avisa que se acaba de iniciar el void loop
//Evaluación y filtrado de los pulsos o interferencias en las entradas del ESP32 (ALARMA)
if (digitalRead(35) == HIGH) {
if (tAlarm == false) {
tr1 = millis();
tAlarm = true;
} else {
if (millis() - tr1 >= tread) {
iAlarm = true;
}
}
} else {
if (tAlarm == true) {
tr1 = millis();
tAlarm = false;
} else {
if (millis() - tr1 >= tread) {
iAlarm = false;
}
}
}
//Evaluación y filtrado de los pulsos o interferencias en las entradas del ESP32 (RUN/STOP)
if (digitalRead(27) == LOW) {
if (tRun == false) {
tr2 = millis();
tRun = true;
} else {
if (millis() - tr2 >= tread) {
iRun = true;
}
}
} else {
if (tRun == true) {
tr2 = millis();
tRun = false;
} else {
if (millis() - tr2 >= tread) {
iRun = false;
}
}
}
//Rutina de checkeo de cambio de estados
if (iAlarm == true) {
if (ALARM == 0) {
ALARM = 1;
TALARM = "ALARMA";
SENDDATA = 1;
}
ALARM = 1;
mSTAT = 3;
}
if (iAlarm == false) {
if (ALARM == 1) {
ALARM = 0;
TALARM = "CONFIRMA ALARMA";
SENDDATA = 1;
}
ALARM = 0;
mSTAT = 4;
}
if (iRun == true) {
if (RUN == 0) {
RUN = 1;
STOP = 0;
TALARM = "RUN";
SENDDATA = 1;
Serial.println("MARCHA");
}
RUN = 1;
STOP = 0;
digitalWrite(2, HIGH);
mSTAT = 1;
}
if (iRun == false) {
if (RUN == 1) {
RUN = 0;
STOP = 1;
TALARM = "STOP";
SENDDATA = 1;
Serial.println("DETENIDA");
}
RUN = 0;
STOP = 1;
mSTAT = 2;
digitalWrite(2, LOW);
}
}
/*
WiFiClient client = server.available();
if (client) {
lastTime = millis();
Serial.println("Nuevo cliente");
String currentLine = "";
while (client.connected() && millis() - lastTime <= timeout) {
if (client.available()) {
char c = client.read();
Serial.write©;
header += c;
if (c == '\n') {
if (currentLine.length() == 0) {
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println("Connection: close");
client.println();
//pruebas, habrá que modificar esto
if (header.indexOf("GET /refresh") >= 0) {
client.println(mSTAT);
} else {
int start = header.indexOf("GET ") + 4;
int end = header.indexOf("HTTP/1.1") - 1;
String requestValue = header.substring(start, end);
Serial.println("Request:");
//Serial.println(requestValue);
client.println(mSTAT);
aok = false;
char* token = strtok(requestValue.begin(), "$");
USER = token;
token = strtok(NULL, "$");
USER = token;
token = strtok(NULL, "$");
PRODUCT = token;
token = strtok(NULL, "$");
String strtoint = token;
COMANDO = strtoint.toInt();
token = strtok(NULL, "$");
SPAUSA = token;
token = strtok(NULL, "$");
}
break;
} else {
currentLine = "";
}
} else if (c != '\r') {
currentLine += c;
}
}
}
header = "";
client.stop();
Serial.println("Cliente desconectado.");
Serial.println("");
Serial.println("Valores extraídos:");
//Serial.println(USER);
//Serial.println(PRODUCT);
Serial.println(COMANDO);
if (aok == false) {
switch (COMANDO) {
case 1:
Serial.println("SOLICITUD DE RUN");
viSRUN = true;
viALARM = false;
if (RUN != 1) {
digitalWrite(22, LOW);
digitalWrite(23, HIGH);
TALARM = "CONFIRMA SEGURIDAD";
Serial.println("ON RELÉ RUN");
aok == true;
}
break;
case 2:
viSRUN = false;
Serial.println("SOLICITUD DE STOP");
if (STOP != 1) {
digitalWrite(23, LOW);
digitalWrite(22, HIGH);
TALARM = "CONFIRMA SEGURIDAD";
Serial.println("ON RELÉ STOP");
aok == true;
}
break;
//Lectura de Comando Alarm
case 3:
viALARM = true;
viSRUN = false;
if (TALARM != "ALARMA DESDE LA APP") {
TALARM = "ALARMA DESDE LA APP";
digitalWrite(23, LOW);
digitalWrite(22, HIGH);
if (RUN == 0) {
SENDDATA = 1;
}
Serial.println("SET ALARM");
aok == true;
}
break;
case 5:
if (TALARM != SPAUSA) {
viSRUN = false;
Serial.println("SET " + SPAUSA);
digitalWrite(23, LOW);
digitalWrite(22, HIGH);
TALARM = SPAUSA;
SENDDATA = 1;
aok == true;
}
break;
}
}
}
//Evalua si el estado de de la maquina coincide con la solicitud de la app
if ((viSRUN == true && mSTAT == 1) || (viSRUN == false && mSTAT == 2)) {
//Si está en pide run y está en run deja las salidas inactivas
digitalWrite(23, HIGH);
digitalWrite(22, HIGH);
//Serial.println("RELÉS DESACTIVADOS");
COMANDO = 10;
//Serial.println("SOLICITUD DE LA APP RESUELTA");
}
*/
delay(200);
}
void enviodata() {
//Si está habilitado el WiFi inicia el objeto HTTP
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin(serverName);
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
//Envia los datos recibidos a la base de datos
String httpRequestData = "api_key=" + apiKeyValue + "&RUN=" + RUN + "&STOP=" + STOP + "&ALARM=" + ALARM + "&TALARM=" + TALARM + "&USER=" + USER + "&PRODUCT=" + PRODUCT + "&COUNTP=" + COUNTP + "";
Serial.print("httpRequestData: ");
Serial.println(httpRequestData);
int httpResponseCode = http.POST(httpRequestData);
//Codigo de verifiacion de la request
if (httpResponseCode > 0) {
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
reenvio = false;
concheck = 0;
SENDDATA = 0;
} else {
reenvio = true;
Serial.print("Error code: ");
Serial.println(httpResponseCode);
concheck = concheck + 1;
Serial.println("Fallas de conexión: ");
Serial.println(concheck);
if (concheck >= 20) {
Serial.println("Demasiadas fallas, reseteando conexión");
desconectarWiFi();
reconectarWiFi();
}
http.end();
}
} else {
Serial.println("WiFi Disconnected");
desconectarWiFi();
reconectarWiFi();
delay(500);
}
}
//Funcion para desconectar el wifi en caso de exeder errores
void desconectarWiFi() {
WiFi.disconnect();
Serial.println("Desconectado de la red WiFi");
}
//Funcion para reconectar el wifi
void reconectarWiFi() {
WiFi.reconnect();
Serial.println("Reconectando a la red WiFi...");
conectarWiFi();
}
/*
void LFB(void* parameter) { //
while (1 == 1) {
delay(1000);
}
}
void LSQL(void* parameter) { //
while (1 == 1) {
if (SENDDATA == 1) {
enviodata();
Serial.println("Envio por el core: " + xPortGetCoreID());
}
delay(200);
}
}
*/