diff --git a/include/Server.hpp b/include/Server.hpp
new file mode 100644
index 0000000..b0a93e5
--- /dev/null
+++ b/include/Server.hpp
@@ -0,0 +1,188 @@
+/* Instancia de AsyncWebServer */
+#include "HttpHandler.cpp"
+#include "logger.cpp"
+
+AsyncWebServer server(80);
+StringDictionary dataset = StringDictionary();
+CompilerDictionary compilers = CompilerDictionary();
+PageProcessor mainPageCgi = PageProcessor("/index.html", &dataset);
+PageProcessor settingsPageCgi = PageProcessor("/config.html", &dataset);
+
+#define MIME_HTML "text/html"
+#define MIME_JSON "application/json"
+
+#define ERROR_500 "
Error 500
Internal server error
"
+
+String compiler(String input)
+{
+ input.replace("", "Compilation done
");
+ return input;
+}
+
+void RefreshDataset()
+{
+ dataset.Set("&DeviceName&", id);
+ dataset.Set("&APSSID&", nameap);
+ dataset.Set("&APPASS&", passwordap);
+}
+
+void InitServer()
+{
+ // Servir las dependencias estáticas
+ server.serveStatic("/bootstrap.min.css", SPIFFS, "/bootstrap.min.css").setDefaultFile("bootstrap.min.css");
+ server.serveStatic("/style.css", SPIFFS, "/style.css").setDefaultFile("style.css");
+ // server.serveStatic("/bootstrap-responsive.min.css", SPIFFS, "/bootstrap-responsive.min.css").setDefaultFile("bootstrap-responsive.min.css");
+ // server.serveStatic("/jquery.easy-pie-chart.css", SPIFFS, "/jquery.easy-pie-chart.css").setDefaultFile("jquery.easy-pie-chart.css");
+ // server.serveStatic("/bootstrap.min.js", SPIFFS, "/bootstrap.min.js").setDefaultFile("bootstrap.min.js");
+ // server.serveStatic("/jquery-1.9.1.min.js", SPIFFS, "/jquery-1.9.1.min.js").setDefaultFile("jquery-1.9.1.min.js");
+ // server.serveStatic("/jquery.easy-pie-chart.js", SPIFFS, "/jquery.easy-pie-chart.js").setDefaultFile("jquery.easy-pie-chart.js");
+ // server.serveStatic("/modernizr.min.js", SPIFFS, "/modernizr.min.js").setDefaultFile("modernizr.min.js");
+ // server.serveStatic("/sweetalert2.min.css", SPIFFS, "/sweetalert2.min.css").setDefaultFile("sweetalert2.min.css");
+ // server.serveStatic("/sweetalert2.min.js", SPIFFS, "/sweetalert2.min.js").setDefaultFile("sweetalert2.min.js");
+ // server.serveStatic("/scripts.js", SPIFFS, "/scripts.js").setDefaultFile("scripts.js");
+ // server.serveStatic("/glyphicons-halflings.png", SPIFFS, "/glyphicons-halflings.png").setDefaultFile("glyphicons-halflings.png");
+ // server.serveStatic("/glyphicons-halflings-white.png", SPIFFS, "/glyphicons-halflings-white.png").setDefaultFile("glyphicons-halflings-white.png");
+ // server.serveStatic("/logo.png", SPIFFS, "/logo.png").setDefaultFile("logo.png");
+
+ /**********************************************/
+ // Inicializar los compiladores de texto para las páginas
+ mainPageCgi.Compilers = &compilers;
+ settingsPageCgi.Compilers = &compilers;
+ compilers.Set("", &compiler);
+
+ // Handler (server, "/", HTTP_GET);
+ server.on("/", HTTP_GET, [](AsyncWebServerRequest *request)
+ {
+ RefreshDataset();
+ request->send(200, MIME_HTML, mainPageCgi.Execute()); });
+
+ server.on("/config", HTTP_GET, [](AsyncWebServerRequest *request)
+ {
+ RefreshDataset();
+ request->send(200, MIME_HTML, settingsPageCgi.Execute()); });
+
+ /**********************************************/
+ // server.on("/configwifi", HTTP_GET, [](AsyncWebServerRequest *request){
+ // // Config
+ // File file = SPIFFS.open(F("/configwifi.html"), "r");
+ // if (file){
+ // file.setTimeout(100);
+ // String s = file.readString();
+ // file.close();
+ // // Atualiza el contenido al cargar
+ // s.replace(F("#id#"), id);
+ // s.replace(F("#ssid#"), ssid);
+ // //sección ap
+ // s.replace(F("#nameap#"), String(nameap));
+ // // Send data
+ // request->send(200, "text/html", s);
+ // }else{
+ // request->send(500, "text/html", ""
+ // "");
+ // log(F("\nError: Config - ERROR leyendo el archivo"));
+ // }
+ // });
+ ///**********************************************/
+ // server.on("/configmqtt", HTTP_GET, [](AsyncWebServerRequest *request){
+ // // Config
+ // File file = SPIFFS.open(F("/configmqtt.html"), "r");
+ // if (file){
+ // file.setTimeout(100);
+ // String s = file.readString();
+ // file.close();
+ // // Atualiza el contenido al cargar
+ // s.replace(F("#idMqtt#"), idMqtt);
+ // s.replace(F("#mqttuser#"), mqttuser);
+ // s.replace(F("#mqttserver#"), mqttserver);
+ // // Send data
+ // request->send(200, "text/html", s);
+ // }else{
+ // request->send(500, "text/html", ""
+ // "");
+ // log(F("\nError: Config - ERROR leyendo el archivo"));
+ // }
+ // });
+ /**********************************************/
+
+ server.on("/confwifiSave", HTTP_POST, [](AsyncWebServerRequest *request)
+ {
+ String response;
+ StaticJsonDocument<300> doc;
+ // Graba Configuración desde Config
+ // Verifica número de campos recebidos
+ // ESP32 envia 5 campos
+ if (request->params() == 5){
+ String s;
+ // ID
+ if(request->hasArg("id"))
+ s = request->arg("id");
+ s.trim();
+ if (s == ""){
+ s = deviceID();
+ }
+ strlcpy(id, s.c_str(), sizeof(id));
+ // SSID
+ if(request->hasArg("ssid"))
+ s = request->arg("ssid");
+ s.trim();
+ if (s == ""){
+ s = ssid;
+ }
+ strlcpy(ssid, s.c_str(), sizeof(ssid));
+ // PW SSID
+ if(request->hasArg("pw"))
+ s = request->arg("pw");
+ s.trim();
+ if (s != ""){
+ // Actualiza contraseña
+ strlcpy(pw, s.c_str(), sizeof(pw));
+ }
+ // Nombre AP
+ if(request->hasArg("nameap"))
+ s = request->arg("nameap");
+ s.trim();
+ if (s != ""){
+ // Atualiza ssid ap
+ strlcpy(nameap, s.c_str(), sizeof(nameap));
+ }
+ // Contraseña AP
+ if(request->hasArg("passwordap"))
+ s = request->arg("passwordap");
+ s.trim();
+ if (s != ""){
+ // Atualiza contraseña ap
+ strlcpy(passwordap, s.c_str(), sizeof(passwordap));
+ }
+ // Graba configuracion
+ if (Config::Save()){
+ request->send(200, "text/html", "Configuración WIFI guardada, se requiere reiniciar el Equipo");
+ }else{
+ request->send(500, "text/html", "ERROR salvando Configuración");
+ Logger::Log(Logger::ERROR, "/configSave: ERROR salvando Configuración");
+ }
+ }else{
+ request->send(500, "text/html", "Error en parámetros WiFi");
+ } });
+ server.onNotFound([](AsyncWebServerRequest *request)
+ { request->send(404, "text/html", "404 Not Found"); });
+ server.begin();
+ Logger::Log("Servidor HTTP Iniciado");
+}