|
|
|
@@ -7,6 +7,7 @@ |
|
|
|
#include <Adafruit_Neopixel.h> |
|
|
|
#include "States.h" |
|
|
|
#include "Commands.h" |
|
|
|
#include "ConfigManager.h" |
|
|
|
#include "HtmlPages.h" |
|
|
|
#include "LEDStripManager.h" |
|
|
|
|
|
|
|
@@ -17,39 +18,22 @@ unsigned long connectStart = 0; |
|
|
|
const byte DNS_PORT = 53; |
|
|
|
|
|
|
|
// WLAN Config |
|
|
|
struct Config { |
|
|
|
char ssid[32]; |
|
|
|
char pass[64]; |
|
|
|
bool valid; |
|
|
|
}; |
|
|
|
//struct Config { |
|
|
|
// char ssid[32]; |
|
|
|
// char pass[64]; |
|
|
|
// bool valid; |
|
|
|
//}; |
|
|
|
|
|
|
|
// AP Daten |
|
|
|
const char *ap_ssid = "Wemos_Setup"; |
|
|
|
const char *ap_pass = "admin123"; |
|
|
|
|
|
|
|
|
|
|
|
ESP8266WebServer webServer(80); |
|
|
|
WebSocketsServer webSocket(81); |
|
|
|
DNSServer dnsServer; |
|
|
|
LEDStripManager ledMngr(LED_COUNT, LED_STRIP_DATA_PIN); |
|
|
|
Config config; |
|
|
|
|
|
|
|
// ---------- EEPROM ---------- |
|
|
|
//TODO: move to onw class |
|
|
|
void saveConfig() { |
|
|
|
EEPROM.begin(sizeof(Config)); |
|
|
|
EEPROM.put(0, config); |
|
|
|
EEPROM.commit(); |
|
|
|
} |
|
|
|
|
|
|
|
void loadConfig() { |
|
|
|
EEPROM.begin(sizeof(Config)); |
|
|
|
EEPROM.get(0, config); |
|
|
|
ConfigManager configManager; |
|
|
|
|
|
|
|
if (config.valid != true) { |
|
|
|
config.valid = false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// ---------- CAPTIVE PORTAL PAGE ---------- |
|
|
|
void handleSetupPage() { |
|
|
|
@@ -67,14 +51,26 @@ void handleSTAControlPage() { |
|
|
|
|
|
|
|
// ---------- SAVE ---------- |
|
|
|
void handleSave() { |
|
|
|
// String ssid = webServer.arg("ssid"); |
|
|
|
// String pass = webServer.arg("pass"); |
|
|
|
// |
|
|
|
// ssid.toCharArray(config.ssid, 32); |
|
|
|
// pass.toCharArray(config.pass, 64); |
|
|
|
// config.valid = true; |
|
|
|
// |
|
|
|
// saveConfig(); |
|
|
|
|
|
|
|
Config cfg; |
|
|
|
|
|
|
|
String ssid = webServer.arg("ssid"); |
|
|
|
String pass = webServer.arg("pass"); |
|
|
|
|
|
|
|
ssid.toCharArray(config.ssid, 32); |
|
|
|
pass.toCharArray(config.pass, 64); |
|
|
|
config.valid = true; |
|
|
|
ssid.toCharArray(cfg.ssid, sizeof(cfg.ssid)); |
|
|
|
pass.toCharArray(cfg.pass, sizeof(cfg.pass)); |
|
|
|
|
|
|
|
saveConfig(); |
|
|
|
cfg.wifiValid = true; |
|
|
|
|
|
|
|
configManager.saveConfig(cfg); |
|
|
|
|
|
|
|
webServer.send(200, "text/html", getConnectionSuccessPage()); |
|
|
|
|
|
|
|
@@ -178,9 +174,18 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t *payload, size_t length) |
|
|
|
} |
|
|
|
|
|
|
|
void resetWifiConfiguration(uint8_t num) { |
|
|
|
EEPROM.begin(sizeof(Config)); |
|
|
|
config.valid = false; |
|
|
|
EEPROM.put(0, config); |
|
|
|
// EEPROM.begin(sizeof(Config)); |
|
|
|
// config.valid = false; |
|
|
|
// EEPROM.put(0, config); |
|
|
|
|
|
|
|
Config cfg = configManager.getConfig(); |
|
|
|
String ssid = ""; |
|
|
|
String pass = ""; |
|
|
|
ssid.toCharArray(cfg.ssid, sizeof(cfg.ssid)); |
|
|
|
pass.toCharArray(cfg.pass, sizeof(cfg.pass)); |
|
|
|
cfg.wifiValid = false; |
|
|
|
|
|
|
|
configManager.saveConfig(cfg); |
|
|
|
|
|
|
|
webSocket.sendTXT(num, "Wifi_Reset_Success"); |
|
|
|
delay(200); |
|
|
|
@@ -195,9 +200,9 @@ void setState(AppState newState) { |
|
|
|
} |
|
|
|
|
|
|
|
void handleBoot() { |
|
|
|
if (config.valid) { |
|
|
|
if (configManager.getConfig().wifiValid) { |
|
|
|
WiFi.mode(WIFI_STA); |
|
|
|
WiFi.begin(config.ssid, config.pass); |
|
|
|
WiFi.begin(configManager.getConfig().ssid, configManager.getConfig().pass); |
|
|
|
setState(STATE_CONNECTING); |
|
|
|
} |
|
|
|
else { |
|
|
|
@@ -231,7 +236,7 @@ void handleSTAMode() { |
|
|
|
|
|
|
|
if (WiFi.status() != WL_CONNECTED) { |
|
|
|
Serial.println("WLAN verloren"); |
|
|
|
WiFi.begin(config.ssid, config.pass); |
|
|
|
WiFi.begin(configManager.getConfig().ssid, configManager.getConfig().pass); |
|
|
|
connectStart = millis(); |
|
|
|
setState(STATE_CONNECTING); |
|
|
|
} |
|
|
|
@@ -268,7 +273,7 @@ void setup() { |
|
|
|
Serial.begin(115200); |
|
|
|
ledMngr.begin(); |
|
|
|
|
|
|
|
loadConfig(); |
|
|
|
configManager.loadConfig(); |
|
|
|
|
|
|
|
setState(STATE_BOOT); |
|
|
|
connectStart = millis(); |