#include #include #include #include #include "defines.h" #include "configuration.h" tConfigBlock configBlock; const uint32_t MAGIC = 3235774468; 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, "TwoLedSignal1"); configBlock.mqttPort = 1883; strcpy(configBlock.mqttTopicLed1, "IoT/TwoLedSignal1/Led1"); strcpy(configBlock.mqttTopicLed2, "IoT/TwoLedSignal1/Led2"); strcpy(configBlock.mqttDebugTopic, "IoT/TwoLedSignal1/Debug"); configBlock.debugMode = 0; } if (! checkAuthentication()) { return webServer.requestAuthentication(); } String buffer = "" " " " ESP8266 based TwoLedSignal" " " " " "

ESP8266 based TwoLedSignal - 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("mqttPort"); configBlock.mqttPort = atoi(arg.c_str()); arg = webServer.arg("mqttTopicLed1"); strcpy(configBlock.mqttTopicLed1, arg.c_str()); arg = webServer.arg("mqttTopicLed2"); strcpy(configBlock.mqttTopicLed2, 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("mqttPort = <"); Serial.print(configBlock.mqttPort); Serial.println(">"); Serial.print("mqttTopicLed1 = <"); Serial.print(configBlock.mqttTopicLed1); Serial.println(">"); Serial.print("mqttTopicLed2 = <"); Serial.print(configBlock.mqttTopicLed2); Serial.println(">"); Serial.print("mqttDebugTopic = <"); Serial.print(configBlock.mqttDebugTopic); Serial.println(">"); Serial.print("debugMode = <"); Serial.print(configBlock.debugMode); Serial.println(">"); Serial.println("---"); }