|
|
|
@@ -1,3 +1,251 @@ |
|
|
|
# LEDLamp |
|
|
|
# LEDLamp – ESP8266 WLAN LED Controller |
|
|
|
|
|
|
|
Wemos D1 Mini Frimware zur Steuerung einer RGBW-LED-Lampe |
|
|
|
## Ü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. |