#define STRINGIFY(x) #x #define TOSTRING(x) STRINGIFY(x) void WebHandleRoot() { server.send(200, "text/html", "" "

You are connected to " + String(hostName) + "

" "
" "Sensors" "Temperature " + String(temp, 2) + "C
" "Pressure " + String(pressure, 2) + "mB
" "
" "
" #ifdef CONFIG_WEB_CONTROLLED_GPIO "Relay" "Relay ON
" "Relay OFF
" "
" #endif "
" "Settings" "Enter Setup
" "Put device in OTA mode
" "MQTT Status: " + (MqttIsConnected() ? "Connected" : "Disconnected") + "
" "BMP 180 (Temp+Pression) Status: " + (BMP180IsConnected() ? "Connected" : "Disconnected") + "
" "Free space: " + ESP.getFreeSketchSpace() + "
" "Free heap: " + ESP.getFreeHeap() + "
" "
" ); } void WebHandleSetup() { uint8_t mode; char *confSsid = ""; char *confPassword = ""; char *confHost = ""; char *mqttServer = ""; char *mqttUser = ""; char *mqttPasswd = ""; int mqttPort = 1883; EepromReadConfig(mode, &confSsid, &confPassword, &confHost, &mqttServer, &mqttUser, &mqttPasswd, mqttPort); server.send(200, "text/html", "
" "
" "Wifi configuration:" "

" "

" "

" "
" "
" "MQTT:" "

" "

" "

" "

" "
" "
" "
"); } void WebHandleGpio() { if (!server.hasArg("gpio") || !server.hasArg("value")) { server.send(500, "text/plain", "Bad arguments\r\n"); return; } MqttChangeGpioValue(server.arg("gpio").toInt(), server.arg("value").toInt()); server.send(200, "text/html", "

GPIO" + server.arg("gpio") + " changed to " + server.arg("value") + "

"); } void WebHandleSave() { String password; String ssid; String hostName; String mqttServer; String mqttUser; String mqttPasswd; if (!server.hasArg("ssid") || !server.hasArg("password") || !server.hasArg("host") || !server.hasArg("mqttServer") || !server.hasArg("mqttUser") || !server.hasArg("mqttPasswd") || !server.hasArg("mqttPort") ) { server.send(500, "text/plain", "Bad arguments\r\n"); return; } if (EepromSaveConfig(BOOTMODE_NORMAL, server.arg("ssid"), server.arg("password"), server.arg("host"), server.arg("mqttServer"), server.arg("mqttUser"), server.arg("mqttPasswd"), server.arg("mqttPort").toInt()) < 0) { server.send(500, "text/plain", "Cannot Save Credentials (Too long ?Contains \";\"?)\r\n"); return; } server.send(200, "text/html", "

Configuration Saved


" "Reboot
"); } void WebHandleOTA() { SKETCH_DEBUG_PRINTLN("Boot mode Set to OTA"); EepromSaveBootMode(BOOTMODE_OTA); server.send(200, "text/html", "

OTA Mode set


" "You can reboot now" "Reboot
"); } void WebHandleNotFound() { String message = "File Not Found\n\n"; message += "URI: "; message += server.uri(); message += "\nMethod: "; message += (server.method() == HTTP_GET) ? "GET" : "POST"; message += "\nArguments: "; message += server.args(); message += "\n"; for (uint8_t i = 0; i < server.args(); i++) { message += " " + server.argName(i) + ": " + server.arg(i) + "\n"; } server.send(404, "text/plain", message); } void WebHandleReboot() { SKETCH_DEBUG_PRINTLN("HTTP request to reboot"); server.send(200, "text/html", "

Device Reboot


"); ESP.restart(); } void WebSetupServer(int bootmode) { server.on("/", WebHandleRoot); server.on("/setup", WebHandleSetup); server.on("/save", WebHandleSave); server.on("/gpio", WebHandleGpio); server.on("/otamode", WebHandleOTA); server.on("/reboot", WebHandleReboot); server.onNotFound(WebHandleNotFound); server.begin(); SKETCH_DEBUG_PRINTLN("HTTP server started"); }