#ifndef _MY_HTTP_H #define _MY_HTTP_H #include #include "my_constants.h" #include "my_ble.h" #ifdef USE_OTA #include "my_ota.h" #include #endif //USE_OTA #define PORT 80 WebServer server(PORT); String message=""; String page_header="\n\n \n \n "+String(APPNAME)+"\n\n\n\n"; String page_links=""; String page_footer=""; String getMACstr() { byte mac[6]; char macStr[6]; WiFi.macAddress(mac); sprintf(macStr,"%02x%02x%02x", mac[3], mac[4], mac[5]); String macStrString=macStr; return macStrString; } void handleRoot() { server.sendHeader("Connection", "close"); message = page_header; message += "

esp32-"+getMACstr()+"

"; message += "

Date "+String(acTimeStringTZ)+"

"; message += "
\n"; message += ss.str().c_str(); message += "
\n"; message += "
"+String(compile_date)+"
"; message += page_links; message += page_footer; server.send(200, "text/html", message ); } void handleJSON() { server.sendHeader("Connection", "close"); message = "{"; message += "\"ota_name\": \"esp32-"+getMACstr()+"\","; message += "\"uptime\": "+String(millis())+","; message += "\"countMeasures\": "+String(countMeasures)+","; message += "\"last_update\": \""+String(acTimeStringTZ)+"\","; message += "\"epoch\":" +String(acTimeEpoch)+","; message += "\"ble\": "+String(listBLEElts.str().c_str()); message += "}"; server.send(200, "text/html", String(message) ); } void handleSTATUS() { server.sendHeader("Connection", "close"); message = page_header; message += "

esp32-"+getMACstr()+" Status

"; message += "{"; message += "\"app_name\": \""+String(APPNAME)+"\","; message += "\"app_version\": \""+String(APPVER)+"\","; message += "\"build_date\": \""+String(compile_time)+"\","; message += "\"mac\": \""+WiFi.macAddress()+"\","; message += "\"ip\": \""+WiFiIP+"\","; message += "\"ota_name\": \"esp32-"+getMACstr()+"\","; message += "\"uptime\": "+String(millis())+","; message += "\"countMeasures\": "+String(countMeasures)+","; message += "\"period\": "+String(UPDATE_PERIOD)+","; message += "\"loop_delay\": "+String(LOOP_DELAY)+","; message += "\"last_update\": \""+String(acTimeStringTZ)+"\","; message += "\"epoch\":" +String(acTimeEpoch); message += "}"; message += page_links; message += page_footer; server.send(200, "text/html", String(message) ); } void handleOTA() { server.sendHeader("Connection", "close"); //message = ""; message = page_header; //message += ""; if( 0 == strcmp(aplist[currentAPIndex].ssid,"kawifi") ) { message += "\n"; } else { message += "\n"; } message += "

esp32-"+getMACstr()+" OTA

"; message += "
\n"; message += "Firmware:
\n"; message += "\n"; message += "
\n"; message += "
progress: 0%
\n"; message += otaScript; message += page_links; message += page_footer; server.send(200, "text/html", String(message) ); } void handleCONFIG() { server.sendHeader("Connection", "close"); message = page_header; message += "

esp32-"+getMACstr()+" Configuration

"; message += "
\n"; message += "
\n"; message += "
\n"; message += "
\n"; message += "
\n"; message += "
\n"; message += "
\n"; message += "\n"; message += "
\n"; for (uint8_t i = 0; i < server.args(); i++) { if( String(server.argName(i)) == String("gInterval") ) { if( gInterval != String(server.arg(i)).toInt() ) { gInterval = String(server.arg(i)).toInt(); message += "Changing gInterval
"; } } else if( String(server.argName(i)) == String("gWindow") ) { if( gWindow != String(server.arg(i)).toInt() ) { gWindow = String(server.arg(i)).toInt(); message += "Changing gWindow
"; } } else if( String(server.argName(i)) == String("gScanTime") ) { if( gScanTime != String(server.arg(i)).toInt() ) { gScanTime = String(server.arg(i)).toInt(); message += "Changing gScanTime
"; } } } message += page_links; message += page_footer; server.send(200, "text/html", String(message) ); } void handleNotFound() { server.sendHeader("Connection", "close"); //String message = "File Not Found\n\n"; String message = page_header; 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"; } message += page_links; message += page_footer; server.send(404, "text/html", message); } void http_set() { server.on("/", handleRoot); server.on("/status", handleSTATUS); server.on("/json", handleJSON); server.on("/config", handleCONFIG); server.onNotFound(handleNotFound); server.begin(); #ifdef USE_OTA server.on("/ota", HTTP_GET, handleOTA); server.on("/update", HTTP_POST, []() { server.sendHeader("Connection", "close"); server.send(200, "text/plain", (Update.hasError()) ? "FAIL" : "OK"); ESP.restart(); }, []() { HTTPUpload& upload = server.upload(); upgradeInProgress=1; if (upload.status == UPLOAD_FILE_START) { Serial.printf("Update: %s\n", upload.filename.c_str()); if (!Update.begin(UPDATE_SIZE_UNKNOWN)) { //start with max available size Update.printError(Serial); } } else if (upload.status == UPLOAD_FILE_WRITE) { if (Update.write(upload.buf, upload.currentSize) != upload.currentSize) { Update.printError(Serial); } else { uint8_t percent_new=(100*((float)(Update.progress())/(float)(Update.size()))); if( percent_old != percent_new ) { Serial.printf("Update: %d%%\n", percent_new); percent_old=percent_new; } } } else if (upload.status == UPLOAD_FILE_END) { if (Update.end(true)) { //true to set the size to the current progress Serial.printf("Update Success: %u\nRebooting...\n", upload.totalSize); } else { Update.printError(Serial); } } }); #endif //USE_OTA } #endif //_MY_HTTP_H