#include #include #include #include #include "defines.h" #include "configuration.h" tConfigBlock configBlock; const uint32_t MAGIC = 0xC0DE0001; extern ESP8266WebServer webServer; void configServeIndex() { bool configValid = (configBlock.magic == MAGIC); if (! configValid) { strcpy(configBlock.wifiSsid, "EG-WLAN"); strcpy(configBlock.wifiKey, "shae3sheuthai2oluNgiqueiyahyumeiphughi8jequeil6taethooyeik1joh5"); strcpy(configBlock.mqttBroker, "broker.hottis.de"); strcpy(configBlock.mqttUser, "esp1"); strcpy(configBlock.mqttPass, "geheim123"); strcpy(configBlock.mqttClientId, "espClient1"); strcpy(configBlock.mqttTopic, "IoT/espThermometer2/espTherm1/measurement"); configBlock.mqttPort = 8883; configBlock.measurePeriod = 300; } String buffer = "" " " " ESP8266 Thermometer Configuration Page" " " " " "

ESP8266 Configuration Page

" "
" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "
" " " " " " " "
" " " " " " " "
" " " " " " " "
" " " " " " " "
" " " " " " " "
" " " " " " " "
" " " " " " " "
" " " " " " " "
" " " " " " " "
" " " "
" "
" " " ""; webServer.send(200, "text/html", buffer); #ifdef DEBUG Serial.println("indexHtml request served"); #endif } void configServeGetConfiguration() { String arg; arg = webServer.arg("wifiSsid"); Serial.print("wifiSsid"); Serial.println(arg); strcpy(configBlock.wifiSsid, arg.c_str()); arg = webServer.arg("wifiKey"); Serial.print("wifiKey"); Serial.println(arg); strcpy(configBlock.wifiKey, arg.c_str()); arg = webServer.arg("mqttBroker"); Serial.print("mqttBroker"); Serial.println(arg); strcpy(configBlock.mqttBroker, arg.c_str()); arg = webServer.arg("mqttUser"); Serial.print("mqttUser"); Serial.println(arg); strcpy(configBlock.mqttUser, arg.c_str()); arg = webServer.arg("mqttPass"); Serial.print("mqttPass"); Serial.println(arg); strcpy(configBlock.mqttPass, arg.c_str()); arg = webServer.arg("mqttClientId"); Serial.print("mqttClientId"); Serial.println(arg); strcpy(configBlock.mqttClientId, arg.c_str()); arg = webServer.arg("mqttTopic"); Serial.print("mqttTopic"); Serial.println(arg); strcpy(configBlock.mqttTopic, arg.c_str()); arg = webServer.arg("mqttPort"); Serial.print("mqttPort"); Serial.println(arg); configBlock.mqttPort = atoi(arg.c_str()); arg = webServer.arg("measurePeriod"); Serial.print("measurePeriod"); Serial.println(arg); configBlock.measurePeriod = atoi(arg.c_str()); configBlock.magic = MAGIC; showConfiguration(); EEPROM.begin(512); for (uint16_t i = 0; i < sizeof(configBlock); i++) { char c = *(((char*)(&configBlock))+i); Serial.print("write to eeprom: "); Serial.print(i); Serial.print(" "); Serial.println(c); EEPROM.write(EEPROM_ADDR + i, c); } EEPROM.commit(); Serial.println("EEPROM saved"); webServer.send(200, "text/html", "configuration saved"); } void showConfiguration() { Serial.println("Configuration is"); Serial.print("magic = "); Serial.println(configBlock.magic); Serial.print("wifiSsid = "); Serial.println(configBlock.wifiSsid); Serial.print("wifiKey = "); Serial.println(configBlock.wifiKey); Serial.print("mqttBroker = "); Serial.println(configBlock.mqttBroker); Serial.print("mqttUser = "); Serial.println(configBlock.mqttUser); Serial.print("mqttPass = "); Serial.println(configBlock.mqttPass); Serial.print("mqttClientId = "); Serial.println(configBlock.mqttClientId); Serial.print("mqttTopic = "); Serial.println(configBlock.mqttTopic); Serial.print("mqttPort = "); Serial.println(configBlock.mqttPort); Serial.print("measurePeriod = "); Serial.println(configBlock.measurePeriod); Serial.println("---"); }