first commit

This commit is contained in:
Carsten Graf
2025-06-01 11:51:02 +02:00
commit 2d2ee0a41a
22 changed files with 3241 additions and 0 deletions

169
src/webserverrouter.h Normal file
View File

@@ -0,0 +1,169 @@
#include <Arduino.h>
#include "master.h"
#include <ESPAsyncWebServer.h>
#include <ArduinoJson.h>
#include <SPIFFS.h>
#include <esp_wifi.h>
AsyncWebServer server(80);
void setupRoutes(){
// Web Server Routes
// SPIFFS initialisieren
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(SPIFFS, "/index.html", "text/html");
});
server.on("/settings", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(SPIFFS, "/settings.html", "text/html");
});
server.on("/about", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(SPIFFS, "/about.html", "text/html");
});
server.on("/api/data", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(200, "application/json", getTimerDataJSON());
});
server.on("/api/reset-best", HTTP_POST, [](AsyncWebServerRequest *request){
Serial.println("/api/reset-best called");
timerData.bestTime1 = 0;
timerData.bestTime2 = 0;
saveBestTimes();
DynamicJsonDocument doc(64);
doc["success"] = true;
String result;
serializeJson(doc, result);
request->send(200, "application/json", result);
});
server.on("/api/unlearn-button", HTTP_POST, [](AsyncWebServerRequest *request){
Serial.println("/api/unlearn-button called");
unlearnButton();
request->send(200, "application/json", "{\"success\":true}");
});
server.on("/api/set-max-time", HTTP_POST, [](AsyncWebServerRequest *request){
Serial.println("/api/set-max-time called");
bool changed = false;
if (request->hasParam("maxTime", true)) {
maxTimeBeforeReset = request->getParam("maxTime", true)->value().toInt() * 1000;
changed = true;
}
if (request->hasParam("maxTimeDisplay", true)) {
maxTimeDisplay = request->getParam("maxTimeDisplay", true)->value().toInt() * 1000;
changed = true;
}
if (changed) {
saveSettings();
DynamicJsonDocument doc(32);
doc["success"] = true;
String result;
serializeJson(doc, result);
request->send(200, "application/json", result);
} else {
request->send(400, "application/json", "{\"success\":false}");
}
});
server.on("/api/get-settings", HTTP_GET, [](AsyncWebServerRequest *request){
Serial.println("/api/get-settings called");
DynamicJsonDocument doc(256);
doc["maxTime"] = maxTimeBeforeReset / 1000;
doc["maxTimeDisplay"] = maxTimeDisplay / 1000;
String result;
serializeJson(doc, result);
request->send(200, "application/json", result);
});
server.on("/api/start-learning", HTTP_POST, [](AsyncWebServerRequest *request){
Serial.println("/api/start-learning called");
learningMode = true;
learningStep = 0;
DynamicJsonDocument doc(64);
doc["success"] = true;
String result;
serializeJson(doc, result);
Serial.println("Learning mode started");
request->send(200, "application/json", result);
});
server.on("/api/stop-learning", HTTP_POST, [](AsyncWebServerRequest *request){
Serial.println("/api/stop-learning called");
learningMode = false;
learningStep = 0;
DynamicJsonDocument doc(64);
doc["success"] = true;
String result;
serializeJson(doc, result);
Serial.println("Learning mode stopped");
request->send(200, "application/json", result);
});
server.on("/api/learn/status", HTTP_GET, [](AsyncWebServerRequest *request){
DynamicJsonDocument doc(256);
doc["active"] = learningMode;
doc["step"] = learningStep;
String response;
serializeJson(doc, response);
request->send(200, "application/json", response);
});
server.on("/api/buttons/status", HTTP_GET, [](AsyncWebServerRequest *request){
DynamicJsonDocument doc(128);
doc["lane1Start"] = buttonConfigs.start1.isAssigned;
doc["lane1Stop"] = buttonConfigs.stop1.isAssigned;
doc["lane2Start"] = buttonConfigs.start2.isAssigned;
doc["lane2Stop"] = buttonConfigs.stop2.isAssigned;
String result;
serializeJson(doc, result);
request->send(200, "application/json", result);
});
server.on("/api/info", HTTP_GET, [](AsyncWebServerRequest *request){
DynamicJsonDocument doc(256);
// IP address
IPAddress ip = WiFi.softAPIP();
doc["ip"] = ip.toString();
doc["channel"] = WiFi.channel();
// MAC address
uint8_t mac[6];
esp_wifi_get_mac(WIFI_IF_STA, mac);
char macStr[18];
sprintf(macStr, "%02X:%02X:%02X:%02X:%02X:%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
doc["mac"] = macStr;
// Free memory
doc["freeMemory"] = ESP.getFreeHeap();
// Connected buttons (count assigned)
int connected = 0;
if (buttonConfigs.start1.isAssigned) connected++;
if (buttonConfigs.stop1.isAssigned) connected++;
if (buttonConfigs.start2.isAssigned) connected++;
if (buttonConfigs.stop2.isAssigned) connected++;
doc["connectedButtons"] = connected;
doc["valid"] = checkLicence() > 0 ? "Ja" : "Nein";
doc["tier"] = checkLicence() ;
String result;
serializeJson(doc, result);
request->send(200, "application/json", result);
});
// Statische Dateien
server.serveStatic("/", SPIFFS, "/");
server.begin();
Serial.println("Web Server gestartet");
}