# LEDLamp – ESP8266 WLAN LED Controller ## Übersicht **LEDLamp** ist ein ESP8266-Projekt für den Wemos D1 Mini, das eine integrierte LED über eine Weboberfläche und WebSockets steuert. Das Gerät arbeitet in zwei Modi: 1. **Access Point (AP) Modus** * Erstkonfiguration des WLANs * Captive Portal für die WLAN-Einrichtung * Speicherung der Zugangsdaten im EEPROM 2. **Station (STA) Modus** * Verbindung mit dem konfigurierten WLAN * Bereitstellung einer Steuerungs-Webseite * Echtzeit-Kommunikation über WebSockets --- ## Funktionen * WLAN-Konfiguration über Captive Portal * Speicherung der WLAN-Daten im EEPROM * Automatische Wiederverbindung bei WLAN-Verlust * Steuerung der integrierten LED * WebSocket-basierte Echtzeitkommunikation * Zurücksetzen der WLAN-Konfiguration per WebSocket-Befehl * Zustandsbasierte Anwendung (State Machine) --- ## Hardware ### Unterstützte Hardware * Wemos D1 Mini (ESP8266) * Andere ESP8266-Boards (ggf. Anpassung des LED-Pins erforderlich) ### Verwendeter Pin | Funktion | Pin | | ----------- | ------------------------ | | Interne LED | LED_BUILTIN (D4 / GPIO2) | --- ## Verwendete Bibliotheken * ESP8266WebServer * WebSocketsServer * EEPROM * DNSServer * ArduinoJson --- ## Projektstruktur ```text LEDLamp.ino ├── States.h ├── Commands.h ├── HtmlPages.h └── weitere Projektdateien ``` --- ## Erster Start Beim ersten Start sind keine WLAN-Daten gespeichert. Das Gerät startet deshalb automatisch im Access-Point-Modus. ### Access Point ```text SSID: Wemos_Setup Passwort: admin123 ``` ### Einrichtung 1. Mit dem WLAN `Wemos_Setup` verbinden. 2. Browser öffnen. 3. Captive Portal erscheint automatisch. 4. Heim-WLAN auswählen bzw. eingeben. 5. Zugangsdaten speichern. 6. Das Gerät startet automatisch neu. 7. Anschließend verbindet sich der ESP mit dem konfigurierten WLAN. --- ## Netzwerkdienste ### HTTP Server Port: ```text 80 ``` ### WebSocket Server Port: ```text 81 ``` --- ## WebSocket-Kommandos ### LED einschalten ```json { "cmd": "SWITCH_LED", "val": "on" } ``` Antwort: ```text LED ON ``` --- ### LED ausschalten ```json { "cmd": "SWITCH_LED", "val": "off" } ``` Antwort: ```text LED OFF ``` --- ### WLAN-Konfiguration zurücksetzen ```json { "cmd": "RESET_WIFI_CFG" } ``` Antwort: ```text Wifi_Reset_Success ``` Danach wird das Gerät automatisch neu gestartet und kehrt in den AP-Modus zurück. --- ## Zustandsmaschine Die Anwendung verwendet folgende Zustände: | Zustand | Beschreibung | | ---------------- | ----------------------------------- | | STATE_BOOT | Initialisierung | | STATE_CONNECTING | Verbindung mit WLAN wird aufgebaut | | STATE_AP_MODE | Access Point + Captive Portal aktiv | | STATE_STA_MODE | Normalbetrieb im WLAN | | STATE_ERROR | Fehlerzustand | --- ## Ablauf ```text BOOT │ ├─ WLAN-Konfiguration vorhanden? │ ├─ Nein │ └─ AP_MODE │ └─ Ja └─ CONNECTING │ ├─ Erfolgreich │ └─ STA_MODE │ └─ Timeout └─ AP_MODE ``` --- ## EEPROM-Speicher Folgende Daten werden dauerhaft gespeichert: ```cpp struct Config { char ssid[32]; char pass[64]; bool valid; }; ``` --- ## Sicherheitshinweise * Das Standard-AP-Passwort sollte für produktive Anwendungen geändert werden. * WLAN-Zugangsdaten werden unverschlüsselt im EEPROM gespeichert. * WebSocket-Kommunikation erfolgt ohne Authentifizierung. --- ## Kompilieren ### Arduino IDE Board: ```text LOLIN(WEMOS) D1 R2 & mini ``` Empfohlene Einstellungen: ```text CPU Frequency: 80 MHz Flash Size: 4MB Upload Speed: 921600 ``` --- ## Lizenz Dieses Projekt kann frei für private und nicht-kommerzielle Zwecke verwendet und angepasst werden.