#include #include #include #include #include "defines.h" #include "configuration.h" tConfigBlock configBlock; const uint32_t MAGIC = 3235774465; const char* CONFIG_SSID = "espconfig"; extern ESP8266WebServer webServer; bool configSaved = false; static bool checkAuthentication() { Serial.print("User: "); Serial.println(configBlock.confUser); Serial.print("Pass: "); Serial.println(configBlock.confPasswd); return webServer.authenticate(configBlock.confUser, configBlock.confPasswd); } void configServeIndex() { bool configValid = (configBlock.magic == MAGIC); if (! configValid) { configBlock.magic = MAGIC; strcpy(configBlock.confUser, "admin"); strcpy(configBlock.confPasswd, "geheim123"); strcpy(configBlock.wifiSsid, "test"); strcpy(configBlock.wifiKey, "geheim"); strcpy(configBlock.mqttBroker, "broker.hottis.de"); strcpy(configBlock.mqttClientId, "WifiRelay"); strcpy(configBlock.mqttTopic, "IoT/WifiRelay1/State"); strcpy(configBlock.mqttDebugTopic, "IoT/WifiRelay1/Debug"); configBlock.debugMode = 0; } if (! checkAuthentication()) { return webServer.requestAuthentication(); } String buffer = "" " " " ESP8266 based WifiRelay" " " " " "

ESP8266 based WifiRelay - ESP8266 Configuration Page

"; if (configSaved) { configSaved = false; buffer += "

Configuration saved

"; } buffer += "
" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "
" " " " " " " "
" " " " " " " "
" " " " " " " "
" " " " " " " "
" " " " " " " "
" " " " " " " "
" " " " " " " "
" " " " " " " "
" " " " " " " "
" " " "
" "
" " " ""; webServer.send(200, "text/html", buffer); #ifdef DEBUG Serial.println("indexHtml request served"); #endif } void configServeGetConfiguration() { if (! checkAuthentication()) { return webServer.requestAuthentication(); } String arg; arg = webServer.arg("confUser"); strcpy(configBlock.confUser, arg.c_str()); arg = webServer.arg("confPasswd"); strcpy(configBlock.confPasswd, arg.c_str()); arg = webServer.arg("wifiSsid"); strcpy(configBlock.wifiSsid, arg.c_str()); arg = webServer.arg("wifiKey"); strcpy(configBlock.wifiKey, arg.c_str()); arg = webServer.arg("mqttBroker"); strcpy(configBlock.mqttBroker, arg.c_str()); arg = webServer.arg("mqttClientId"); strcpy(configBlock.mqttClientId, arg.c_str()); arg = webServer.arg("mqttTopic"); strcpy(configBlock.mqttTopic, arg.c_str()); arg = webServer.arg("mqttDebugTopic"); strcpy(configBlock.mqttDebugTopic, arg.c_str()); arg = webServer.arg("debugMode"); configBlock.debugMode = atoi(arg.c_str()); configBlock.magic = MAGIC; showConfiguration(); EEPROM.begin(512); EEPROM.put(EEPROM_ADDR, configBlock); EEPROM.commit(); Serial.println("EEPROM saved"); configSaved = true; webServer.sendHeader("Location", String("/"), true); webServer.send(302, "text/plain", ""); //webServer.send(200, "text/html", "configuration saved"); } void showConfiguration() { Serial.println("Configuration is"); Serial.print("magic = <"); Serial.print(configBlock.magic); Serial.println(">"); Serial.print("confUser = <"); Serial.print(configBlock.confUser); Serial.println(">"); Serial.print("confPasswd = <"); Serial.print(configBlock.confPasswd); Serial.println(">"); Serial.print("wifiSsid = <"); Serial.print(configBlock.wifiSsid); Serial.println(">"); Serial.print("wifiKey = <"); Serial.print(configBlock.wifiKey); Serial.println(">"); Serial.print("mqttBroker = <"); Serial.print(configBlock.mqttBroker); Serial.println(">"); Serial.print("mqttClientId = <"); Serial.print(configBlock.mqttClientId); Serial.println(">"); Serial.print("mqttTopic = <"); Serial.print(configBlock.mqttTopic); Serial.println(">"); Serial.print("mqttDebugTopic = <"); Serial.print(configBlock.mqttDebugTopic); Serial.println(">"); Serial.print("debugMode = <"); Serial.print(configBlock.debugMode); Serial.println(">"); Serial.println("---"); }