@@ -205,7 +234,8 @@
loadSystemInfo();
loadCurrentTime();
updateCurrentTimeDisplay();
- loadLicence()
+ loadLicence();
+ loadWifiSettings();
};
// Aktuelle Zeit anzeigen (Live-Update)
@@ -423,6 +453,51 @@
.catch((error) => showMessage("Verbindungsfehler", "error"));
}
+ // WLAN-Einstellungen laden
+ function loadWifiSettings() {
+ fetch("/api/get-wifi")
+ .then(response => response.json())
+ .then(data => {
+ document.getElementById("wifi-ssid").value = data.ssid || "";
+ document.getElementById("wifi-password").value = data.password || "";
+ })
+ .catch(error => showMessage("Fehler beim Laden der WLAN-Einstellungen", "error"));
+ }
+
+ // WLAN-Einstellungen beim Laden der Seite abrufen
+ window.addEventListener('load', loadWifiSettings);
+
+ // WLAN-Formular Handler
+ document.getElementById("wifiForm").addEventListener("submit", function(e) {
+ e.preventDefault();
+
+ const ssid = document.getElementById("wifi-ssid").value;
+ const password = document.getElementById("wifi-password").value;
+
+ if (!ssid) {
+ showMessage("Bitte WLAN-Namen eingeben", "error");
+ return;
+ }
+
+ fetch("/api/set-wifi", {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/x-www-form-urlencoded",
+ },
+ body: `ssid=${encodeURIComponent(ssid)}&password=${encodeURIComponent(password)}`,
+ })
+ .then(response => response.json())
+ .then(data => {
+ if (data.success) {
+ showMessage("WLAN-Einstellungen erfolgreich gespeichert!", "success");
+ } else {
+ showMessage(data.error || "Fehler beim Speichern der WLAN-Einstellungen", "error");
+ }
+ })
+ .catch(error => showMessage("Verbindungsfehler", "error"));
+ });
+
+
// Update OTA button access based on license level
function updateOTAButtonAccess(licenseLevel) {
const otaButton = document.getElementById("otaUpdateBtn");
diff --git a/src/webserverrouter.h b/src/webserverrouter.h
index bda2ed9..e273193 100644
--- a/src/webserverrouter.h
+++ b/src/webserverrouter.h
@@ -161,6 +161,46 @@ void setupRoutes(){
request->send(200, "application/json", result);
});
+ // Setze WLAN-Name und Passwort (POST)
+ server.on("/api/set-wifi", HTTP_POST, [](AsyncWebServerRequest *request){
+ Serial.println("/api/set-wifi called");
+ String ssid, password;
+ if (request->hasParam("ssid", true)) {
+ ssid = request->getParam("ssid", true)->value();
+ }
+ if (request->hasParam("password", true)) {
+ password = request->getParam("password", true)->value();
+ }
+ if (ssid.length() > 0) {
+ // Hier speichern wir die neuen Werte (z.B. in Preferences oder global)
+ // Beispiel: strcpy(ssidSTA, ssid.c_str());
+ // Beispiel: strcpy(passwordSTA, password.c_str());
+ // In deinem Projekt ggf. persistent speichern!
+ // Hier als global (unsicher, nach Neustart verloren!):
+ ssidSTA = strdup(ssid.c_str());
+ passwordSTA = strdup(password.c_str());
+ // Rückmeldung
+ DynamicJsonDocument doc(64);
+ doc["success"] = true;
+ String result;
+ serializeJson(doc, result);
+ request->send(200, "application/json", result);
+ Serial.println("WiFi-Settings updated (nur bis zum Neustart aktiv!)");
+ } else {
+ request->send(400, "application/json", "{\"success\":false,\"error\":\"SSID fehlt\"}");
+ }
+ });
+
+ // Liefert aktuelle WLAN-Einstellungen (GET)
+ server.on("/api/get-wifi", HTTP_GET, [](AsyncWebServerRequest *request){
+ DynamicJsonDocument doc(128);
+ doc["ssid"] = ssidSTA ? ssidSTA : "";
+ doc["password"] = passwordSTA ? passwordSTA : "";
+ String result;
+ serializeJson(doc, result);
+ request->send(200, "application/json", result);
+ });
+
// Statische Dateien
server.serveStatic("/", SPIFFS, "/");
server.begin();
diff --git a/src/wificlass.h b/src/wificlass.h
index b40c5c5..3f0967a 100644
--- a/src/wificlass.h
+++ b/src/wificlass.h
@@ -4,6 +4,7 @@
#include
#include
#include
+#include // <-- mDNS hinzufügen
#include "master.h"
#include "licenceing.h"
@@ -36,7 +37,13 @@ void setupWifi() {
Serial.print("IP Adresse: ");
Serial.println(WiFi.softAPIP());
Serial.println("PrettyOTA can be accessed at: http://" + WiFi.softAPIP().toString() + "/update");
-
+
+ // mDNS starten
+ if (MDNS.begin("aquacross-timer")) { // z.B. http://aquacross-timer.local/
+ Serial.println("mDNS responder gestartet: http://aquacross-timer.local/");
+ } else {
+ Serial.println("Fehler beim Starten von mDNS!");
+ }
}
void setupOTA(AsyncWebServer *server) {
@@ -56,4 +63,3 @@ void setupOTA(AsyncWebServer *server) {
// WiFi als Access Point
-
\ No newline at end of file