/** * TEST SKETCH 3.3 – WiFiManager Verbindungstest * * Testet: * - Erstverbindung: Öffnet AP "LaserCutter-Setup" falls keine Credentials gespeichert * - Auto-Reconnect: Nach Neustart verbindet sich der ESP32 automatisch * - Status-Callback: jede Statusänderung wird auf Serial ausgegeben * - Reconnect nach Verbindungsabbruch (Simulation: WLAN kurz abschalten) * * Ablauf: * 1. Erstes Flash: AP "LaserCutter-Setup" erscheint → mit Handy/PC verbinden * → http://192.168.4.1 öffnet sich automatisch → SSID + Passwort eingeben * 2. ESP32 verbindet sich, zeigt IP auf Serial * 3. ESP32 neu starten → verbindet sich automatisch ohne Portal * 4. Optional: WLAN-Router kurz ausschalten → Reconnect-Meldung beobachten * * Flash: pio run -e test-wifi --target upload * Monitor: pio device monitor -e test-wifi * * Credentials löschen (Portal erzwingen): * Im Serial Monitor erscheint nach 30s die Meldung mit Reset-Hinweis. * Alternativ: GPIO 0 (BOOT-Taste) beim Start 3s gedrückt halten. */ #include #include "wifi_connector.h" // BOOT-Taste (GPIO 0) für 3 Sekunden → Credentials löschen + Neustart #define RESET_BUTTON_PIN 0 #define RESET_HOLD_MS 3000 // --------------------------------------------------------------------------- // Status-Callback – wird von WifiConnector aufgerufen // --------------------------------------------------------------------------- static void onWifiStatus(WifiStatus s) { switch (s) { case WifiStatus::DISCONNECTED: Serial.println("[WIFI-CB] Status: DISCONNECTED"); break; case WifiStatus::CONNECTING: Serial.println("[WIFI-CB] Status: CONNECTING ..."); break; case WifiStatus::AP_ACTIVE: Serial.println("[WIFI-CB] Status: AP aktiv – oeffne http://192.168.4.1"); Serial.println("[WIFI-CB] SSID: " WIFI_AP_NAME); break; case WifiStatus::CONNECTED: Serial.println("[WIFI-CB] Status: CONNECTED ✓"); break; } } // --------------------------------------------------------------------------- void setup() { Serial.begin(115200); delay(500); pinMode(RESET_BUTTON_PIN, INPUT_PULLUP); Serial.println("\n========================================"); Serial.println(" TEST 3.3 – WiFiManager"); Serial.println("========================================"); Serial.println(" BOOT-Taste 3s halten → Credentials loeschen"); Serial.println("========================================\n"); // BOOT-Taste beim Start prüfen → Credentials löschen uint32_t holdStart = millis(); bool resetTriggered = false; while (digitalRead(RESET_BUTTON_PIN) == LOW) { if (millis() - holdStart >= RESET_HOLD_MS) { resetTriggered = true; break; } delay(50); } if (resetTriggered) { Serial.println("[RESET] BOOT-Taste erkannt – WiFi-Credentials werden geloescht!"); wifiConnector.resetCredentials(); delay(500); ESP.restart(); } // Status-Callback registrieren wifiConnector.onStatusChange(onWifiStatus); // WiFi starten (blockiert bis verbunden oder Timeout → Neustart) wifiConnector.begin(); // Verbindungsdetails ausgeben wifiConnector.printToSerial(); } // --------------------------------------------------------------------------- void loop() { // Verbindung überwachen – bei Abbruch automatischer Reconnect wifiConnector.loop(); // Alle 10 s Heartbeat mit aktuellem Status static uint32_t lastPrint = 0; if (millis() - lastPrint >= 10000) { lastPrint = millis(); if (wifiConnector.isConnected()) { Serial.printf("[LIVE] Verbunden mit %s | IP: %s | RSSI: %d dBm\n", wifiConnector.getSSID().c_str(), wifiConnector.getIP().toString().c_str(), wifiConnector.getRSSI()); } else { Serial.println("[LIVE] Nicht verbunden"); } } }