Wemos D1 Mini Frimware zur Steuerung einer RGBW-LED-Lampe
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gituser 8d27a33ca4 LEDStripManager 1 päivä sitten
.settings LEDStripManager 1 päivä sitten
.cproject LEDStripManager 1 päivä sitten
.gitignore Hide/show password 1 viikko sitten
.project LEDStripManager 1 päivä sitten
.sproject LEDStripManager 1 päivä sitten
Commands.h Messages as JSON's with ArduinoJson lib 1 viikko sitten
HtmlPages.h Messages as JSON's with ArduinoJson lib 1 viikko sitten
LEDLamp.ino LEDStripManager 1 päivä sitten
LEDStripManager.cpp LEDStripManager 1 päivä sitten
LEDStripManager.h LEDStripManager 1 päivä sitten
README.md README.md 1 viikko sitten
States.h New state machine 1 viikko sitten
sloeber.ino.cpp LEDStripManager 1 päivä sitten
spec.d Initial commit 1 viikko sitten

README.md

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

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

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:

80

WebSocket Server

Port:

81

WebSocket-Kommandos

LED einschalten

{
  "cmd": "SWITCH_LED",
  "val": "on"
}

Antwort:

LED ON

LED ausschalten

{
  "cmd": "SWITCH_LED",
  "val": "off"
}

Antwort:

LED OFF

WLAN-Konfiguration zurücksetzen

{
  "cmd": "RESET_WIFI_CFG"
}

Antwort:

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

BOOT
 │
 ├─ WLAN-Konfiguration vorhanden?
 │
 ├─ Nein
 │   └─ AP_MODE
 │
 └─ Ja
     └─ CONNECTING
           │
           ├─ Erfolgreich
           │    └─ STA_MODE
           │
           └─ Timeout
                └─ AP_MODE

EEPROM-Speicher

Folgende Daten werden dauerhaft gespeichert:

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:

LOLIN(WEMOS) D1 R2 & mini

Empfohlene Einstellungen:

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.