Hola.
Tengo un inconveniente con un servidor web que estoy diseñando con un esp32. Estoy recibiendo datos por el ADC del esp32 y graficando los valores recibidos mediante la función Chart en el esp32, la grafica sale sin problemas. Quise agregar botones en la pagina web para controlar otros procesos por el mismo servidor, el problema esta en que cuando presiono los botones, se pierde todo el muestreo de la gráfica debido a que la pagina se vuelve a reiniciar, los botones cumplen su acometido pero no quiero perder la gráfica que se llevaba antes de presionar los botones. adjunto imagen para que se entienda el ejemplo:
Allí se puede ver el funcionamiento del mismo (imagen izquierda), pero una vez que apreto algún botón se pierde el progreso tal como se ve en la imagen de la derecha
Si bien se comienza a graficar nuevamente, además de que los botones cumplen su función, no quiero que el progreso de la grafica se pierda. De momento no tengo idea de como corregir tal problema. Adjunto código del esp32:
#ifdef ESP32
#include <WiFi.h>
#include <ESPAsyncWebServer.h>
#include <SPIFFS.h>
#else
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <Hash.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#include <FS.h>
#endif
#include <Wire.h>
#define led 14
// Replace with your network credentials
const char* ssid = "";
const char* password = "";
// Create AsyncWebServer object on port 80
AsyncWebServer server(80);
String readPOT()
{
float valor_1;
int pot = analogRead(33);
Serial.println(pot);
valor_1 =(100*pot)/4098.0;
delay(1000);
String myString = String(valor_1);
return myString;
}
void setup(){
pinMode(33, INPUT);
pinMode(led,OUTPUT);
digitalWrite(led,LOW);
// Serial port for debugging purposes
Serial.begin(115200);
bool status;
// Initialize SPIFFS
if(!SPIFFS.begin()){
Serial.println("An Error has occurred while mounting SPIFFS");
return;
}
// Connect to Wi-Fi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}
Serial.println(WiFi.localIP());
// graphic
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(SPIFFS, "/index.html");
});
server.on("/temperature", HTTP_GET, [](AsyncWebServerRequest *request){
request->send_P(200, "text/plain", readPOT().c_str());
});
server.on("/humidity", HTTP_GET, [](AsyncWebServerRequest *request){
request->send_P(200, "text/plain", readPOT().c_str());
});
//button
server.on("/led/on", HTTP_GET, [](AsyncWebServerRequest * request)
{
digitalWrite(led, HIGH);
request->send(SPIFFS, "/index.html", "text/html");
});
server.on("/led/off", HTTP_GET, [](AsyncWebServerRequest * request)
{
digitalWrite(led, LOW);
request->send(SPIFFS, "/index.html", "text/html");
});
// Start server
server.begin();
}
void loop(){
Serial.println(analogRead(33));
delay(1000);
}
¿Cómo puedo corregir eso?
