diff --git a/platformio.ini b/platformio.ini index 5262536..f52a88d 100644 --- a/platformio.ini +++ b/platformio.ini @@ -60,3 +60,22 @@ lib_deps = esp32async/AsyncTCP@^3.4.2 mlesniew/PicoMQTT@^1.3.0 miguelbalboa/MFRC522@^1.4.12 + +[env:esp32thing] +board = esp32thing +monitor_speed = 115200 +build_flags = + -DBOARD_HAS_PSRAM + -mfix-esp32-psram-cache-issue +targets = uploadfs +board_build.psram = disabled +lib_deps = + bblanchon/ArduinoJson@^7.4.1 + esp32async/ESPAsyncWebServer@^3.7.7 + lostincompilation/PrettyOTA@^1.1.3 + esp32async/AsyncTCP@^3.4.2 + mlesniew/PicoMQTT@^1.3.0 + miguelbalboa/MFRC522@^1.4.12 + + + diff --git a/src/master.cpp b/src/master.cpp index 0778cf2..c7dbb71 100644 --- a/src/master.cpp +++ b/src/master.cpp @@ -184,19 +184,12 @@ void saveWifiSettings() { preferences.putString("ssid", ssidSTA); preferences.putString("password", passwordSTA); preferences.end(); + Serial.printf("WLAN-Einstellungen gespeichert: SSID=%s, Passwort=%s\n", ssidSTA, passwordSTA); } void loadWifiSettings() { preferences.begin("wifi", true); - // Speicher freigeben, falls bereits zugewiesen - if (ssidSTA) { - free(ssidSTA); - } - if (passwordSTA) { - free(passwordSTA); - } - // Neue Werte laden und dynamisch zuweisen String ssid = preferences.getString("ssid", ""); String password = preferences.getString("password", ""); @@ -282,6 +275,7 @@ void setup() { loadButtonConfig(); loadBestTimes(); loadSettings(); + loadWifiSettings(); setupWifi(); // WiFi initialisieren setupOTA(&server); diff --git a/src/master.h b/src/master.h index f637328..27943e7 100644 --- a/src/master.h +++ b/src/master.h @@ -5,6 +5,11 @@ #include #include +const char* ssidAP; +const char* passwordAP = nullptr; + +char* ssidSTA = nullptr; +char* passwordSTA = nullptr; // Timer Struktur struct TimerData { @@ -61,6 +66,8 @@ void saveBestTimes(); void loadBestTimes(); void saveSettings(); void loadSettings(); +void loadWifiSettings(); +void saveWifiSettings(); void unlearnButton(); int checkLicence(); String getTimerDataJSON(); \ No newline at end of file diff --git a/src/statusled.h b/src/statusled.h index 8394d48..226fb17 100644 --- a/src/statusled.h +++ b/src/statusled.h @@ -1,7 +1,7 @@ #include -#define LED_PIN LED_BUILTIN +#define LED_PIN 13 // Status LED diff --git a/src/webserverrouter.h b/src/webserverrouter.h index d3d8cc0..c5cfa12 100644 --- a/src/webserverrouter.h +++ b/src/webserverrouter.h @@ -191,6 +191,8 @@ void setupRoutes(){ ssidSTA = strdup(ssid.c_str()); passwordSTA = strdup(password.c_str()); + saveWifiSettings(); + // Rückmeldung DynamicJsonDocument doc(64); doc["success"] = true; diff --git a/src/wificlass.h b/src/wificlass.h index 989b71c..7dbaa78 100644 --- a/src/wificlass.h +++ b/src/wificlass.h @@ -10,11 +10,6 @@ #include "licenceing.h" String uniqueSSID; -const char* ssidAP; -const char* passwordAP = nullptr; - -char* ssidSTA = strdup("Obiwlankenobi"); -char* passwordSTA = strdup("Delfine1!"); PrettyOTA OTAUpdates; @@ -24,15 +19,32 @@ void setupWifi() { uniqueSSID = getUniqueSSID(); ssidAP = uniqueSSID.c_str(); + //print station SSID + Serial.println("Access Point SSID: " + String(ssidSTA)); + Serial.println("Access Point PW: " + String(passwordSTA)); - WiFi.mode(WIFI_MODE_APSTA); - WiFi.softAP(ssidAP, passwordAP); - WiFi.begin(ssidSTA, passwordSTA); - - while (WiFi.status() != WL_CONNECTED) { - delay(500); - Serial.print("."); +if ((ssidSTA == nullptr) || (passwordSTA == nullptr)) { + Serial.println("Fehler: ssidSTA oder passwordSTA ist null!"); + WiFi.mode(WIFI_MODE_AP); + WiFi.softAP(ssidAP, passwordAP); } + else + { + + WiFi.mode(WIFI_MODE_APSTA); + WiFi.begin(ssidSTA, passwordSTA); + WiFi.softAP(ssidAP, passwordAP); + + while (WiFi.status() != WL_CONNECTED){ + delay(500); + Serial.print("."); + } + + } + + + //Only wait for connection if ssidSTA and passwordSTA are set + Serial.println(""); Serial.println("Verbunden mit WLAN!"); Serial.print("IP-Adresse: ");