Hello sir,
Thanks for the Guide on ESP it's really helpful. Kindly assist me to Debug the code attached
despite my many attempts to get it working, i have been constantly getting the same error:-
Request page : /Sindex.html [Not Found]
I got the code from an online site and my attempts to reach the person who published it have all failed.
It is a persistence of vision code, am loading it to a Node MCU and connect to the esp as an Access Point. Whenever i type in the static ip to my web browser am receiving the Request page : /Sindex.html [Not Found] Error.
}
break;
case WStype_TEXT: // this for webSocket request
String text = String((char *) &payload[0]);
Serial.print("[WS:"); Serial.print(num);Serial.print("]");Serial.println(text);
parse_webSocket(text,num);
break;
}
server.begin(); Serial.println(F("\t\t\tHTTP server started"));
const char headerkeys[] = {"User-Agent","Cookie"} ; //here the list of headers to be recorded
size_t hz = sizeof(headerkeys)/sizeof(char);
server.collectHeaders(headerkeys, hz ); //ask server to track these headers
This is an issue tracker for the Beginner's Guide to the ESP8266.
Please use the appropriate online fora if you have questions about your specific project.
Hello sir, Thanks for the Guide on ESP it's really helpful. Kindly assist me to Debug the code attached despite my many attempts to get it working, i have been constantly getting the same error:-
Request page : /Sindex.html [Not Found]
I got the code from an online site and my attempts to reach the person who published it have all failed. It is a persistence of vision code, am loading it to a Node MCU and connect to the esp as an Access Point. Whenever i type in the static ip to my web browser am receiving the Request page : /Sindex.html [Not Found] Error.
Kindly inform what am doing wrong missing. Thanks
``
include
include
include
include
include
include
include
include
include
int LineIntervalDelay;
define HalSensor 2
define NUM_LEDS 9
define IMAGES_LINES 200
define FASTLED_FORCE_SOFTWARE_SPI
define FASTLED_ESP8266_RAW_PIN_ORDER
include
define SPI_FLASH_SEC_SIZE 4096
//#define HalSensor 14
define DATA_PIN 13 // (8,15),( 4,2) (6,12) (7,13)
define CLOCK_PIN 14 //
CRGB leds[NUM_LEDS];
const char configHtml[] PROGMEM = R"=====( <!DOCTYPE html>+
)=====";
String SSID="keyno"; //add 15-29 String SSIDPASS="09127163464";//add 30-44 String AP_SSID="Smart POV";//add 45-59 String AP_SSIDPASS="12345678";//add 60-74 bool ACCESS=false,STATIC=false; unsigned long Ego_Seconds=27000; byte client_num=0;
String MyMode=""; // add 0 String myHostname = ""; //add 1-14
byte reset_number=0;//add 76 String Server_IP="192.168."; // add 77-79 String Static_IP="192.168.";//81-83 String MyIP=""; String PerfixID=""; String license="Keyno"; String Software="KEASI Ver 0.7"; String uploadError="";
String PATH="/"; String preSetUser=""; String preSetPass=""; String STRING="",Last_store_time="",Last_store_date="";
bool StartUpShow=true,SHOW=false,TEST=false; String IMAGES[30]={}; byte IMAGES_Prior[]={0,1,2,3,4}; byte IMAGE_NUM=0; int DURATION[]={5,5,5,5,5};
static int image_index=0, Current_imageLine=0;
static volatile uint32_t t_start_round=0,t_stop_round=0,lastFrameShow=0; static volatile uint32_t lineInterval=100,RPM=0; static volatile bool Start_new_round=false; uint32_t free_Space_location_start; uint32_t start_address_of_imagefile[10]; static uint32_t current_raw_location; //uint8_t BUFFER; uint8_t LED_BUFFER; byte number_of_file;
static uint32_t _memory_pointer=0,OpenlastTime=0,frame_time=0,lastLineShow=0;
WebSocketsServer webSocket = WebSocketsServer(81); ESP8266WebServer server(80);
IPAddress apIP(192, 168, 4, 1),_ip;
File fsUploadFile;
void UpdateContent(String path, String income){ // general file
File f = SPIFFS.open(path, "w+");
if (!f) { Serial.println("[F-w-"+path+"]");// now write two lines in key/value style with end-of-line characters
return; }
else { // income.replace(";", "\n\r"); f.println(income); f.close(); }
} String read_line(String _path,byte line_num){ File f = SPIFFS.open(_path, "r"); if (!f) return "" ; byte counter=0; String line=""; while(f.available())//1AAA@THAT54545646|1$15: { line = f.readStringUntil('\n'); line.trim(); //Serial.print("read line="); Serial.println(line);
if(line.length() >2 && counter==line_num) break; counter++; } f.close();
return line; } void Restore_address(void){ String s=read_line("/data/address.inf",0); byte As=0; for(byte i=0;i<IMAGE_NUM;i++) { As=s.indexOf('@'); start_address_of_imagefile[i]=s.substring(0,As).toInt(); Serial.printf("Address of File %s=%u\n",IMAGES[i].c_str(),start_address_of_imagefile[i]); s=s.substring(As+1); } } void Store_address(void){ String s=""; for(byte i=0;i<IMAGE_NUM;i++) s+=String(start_address_of_imagefile[i])+"@"; Serial.println(s); UpdateContent("/data/address.inf",s);
} String compose(void){ //BYTES=compose_bytes();
String s=""; s=myHostname+"@"+SSID+"@"+SSIDPASS+"@"+AP_SSID+"@"+AP_SSIDPASS+"@"+Static_IP+"@"+Server_IP+"@";//+BYTES+"@"; return s; } void decompose(String s){ //A@myHostname@SSID@ byte As=0;
As=s.indexOf('@'); As=s.indexOf('@'); myHostname=s.substring(0,As); if(myHostname.length()<3) myHostname="KGC"; s=s.substring(As+1); As=s.indexOf('@'); SSID=s.substring(0,As); if(SSID.length()<3) SSID="Unknown"; s=s.substring(As+1); As=s.indexOf('@'); SSIDPASS=s.substring(0,As); if(SSIDPASS.length()<3) SSIDPASS="Unknown"; s=s.substring(As+1); As=s.indexOf('@'); AP_SSID=s.substring(0,As); if(AP_SSID.length()<3) AP_SSID="SmartNode" +String(ESP.getChipId(), HEX); s=s.substring(As+1); As=s.indexOf('@');AP_SSIDPASS=s.substring(0,As); if(AP_SSIDPASS.length()<3) AP_SSIDPASS="12345678"; s=s.substring(As+1);
As=s.indexOf('@'); Static_IP=s.substring(0,As); if(Static_IP.length()<3) Static_IP="192.168.1.11"; s=s.substring(As+1); As=s.indexOf('@'); Server_IP=s.substring(0,As); if(Server_IP.length()<3) Server_IP="192.168.4.1";
} void restore_setting(void) { STRING=read_line("/data/mydevice.dat",0); decompose(STRING);
preSetUser=String(ESP.getChipId());// preSetPass=String(ESP.getChipId(), HEX); preSetPass.toUpperCase(); } void store_setting(void){ STRING=compose(); UpdateContent("/data/device.inf",STRING);
Serial.println("[Stored]"); } String Retrive_file(String _File,String perfix){ File f = SPIFFS.open("/data/"+_File, "r");
if (!f) return ""; String content=""; while(f.available()) { char c=f.read(); if(c=='\n') break; content+=c; } content.trim(); return perfix+"$"+content;
} void copy_file_from_SPIFF_to_Raw_Flash(String path, byte file_num){ uint32_t startTime = millis(); File f = SPIFFS.open(path, "r"); if(!f) { Serial.println("Could not open file for reading"); return; } size_t i = f.size(); start_address_of_imagefile[file_num]=current_raw_location; Serial.printf("File size is %u Bytes Start location =%u\n", i,start_address_of_imagefile[file_num]); uint8_t BUFFER = new uint8_t[SPI_FLASH_SEC_SIZE]; while(i > SPI_FLASH_SEC_SIZE){ f.read(BUFFER, SPI_FLASH_SEC_SIZE); optimistic_yield(10000); ESP.flashEraseSector(current_raw_location/FLASH_SECTOR_SIZE); ESP.flashWrite(current_raw_location,(uint32_t ) BUFFER, SPI_FLASH_SEC_SIZE);
Serial.print("."); i -= SPI_FLASH_SEC_SIZE; current_raw_location+=SPI_FLASH_SEC_SIZE; } f.read(BUFFER, i); for(int n=0;n<i;n++){Serial.print((char)BUFFER[n]); Serial.print(",");}Serial.println(); optimistic_yield(10000); ESP.flashEraseSector(current_raw_location/FLASH_SECTOR_SIZE); ESP.flashWrite(current_raw_location,(uint32_t ) BUFFER, i);
current_raw_location+=i;
f.close(); delete [] BUFFER; Serial.printf("copy took %u ms, memory end address=%u\n", millis() - startTime,current_raw_location);
} ///////////////////////////////// webSocket /////////////////////////////////////// void parse_webSocket(String income, byte num){ byte eqI1 = income.indexOf('='); String cammand = income.substring(0, eqI1);// Serial.print(" cammand=");Serial.println(cammand); String value = income.substring(eqI1+1); //Serial.print(" value=");Serial.println(value); if(cammand=="RST") { // [-Standalone-] / wifimode hostID localip serverip _SSID AP_name software license
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' else if(cammand=="WFM") { lineInterval+=100; webSocket.sendTXT(client_num,"RPM$"+String(lineInterval));}//EEPROM.write(1, value[0]);EEPROM.commit(); } // Set Wifi Mode MyMode [-Standalone-] else if(cammand=="SHN") {lineInterval-=10; webSocket.sendTXT(client_num,"RPM$"+String(lineInterval));}// myHostname=value; // Set Host Name myHostname [-Standalone-] else if(cammand=="SNW") { // SSID SSIDPASS Select Network user&pass [-Standalone-]
eqI1 = value.indexOf('&'); SSID= value.substring(0, eqI1);// Serial.print(" SSID=");Serial.println(_ssid); SSIDPASS= value.substring(eqI1+1); //Serial.print(" pass=");Serial.println(pass); Serial.println(lineInterval);
} else if(cammand=="APN") {lineInterval+=1; webSocket.sendTXT(client_num,"RPM$"+String(lineInterval));}//AP_SSID=value; // Set AP Name AP_SSID [-Standalone-] else if(cammand=="APP") {lineInterval-=1; webSocket.sendTXT(client_num,"RPM$"+String(lineInterval));}// AP_SSIDPASS=value; // Set AP Password AP_SSIDPASS [-Standalone-] else if(cammand=="ESI") { EEPROM.write(2, value[0]);EEPROM.commit();(value[0]=='1')?STATIC=true:STATIC=false;} // [-Standalone-]
else if(cammand=="SIP") {lineInterval-=100; webSocket.sendTXT(client_num,"RPM$"+String(lineInterval));} //Server_IP=value;// Set Server IP Server_IP [-Standalone-]
else if(cammand=="STI") {lineInterval+=10; webSocket.sendTXT(client_num,"RPM$"+String(lineInterval));}// Static_IP=value;// Set Static_IP 81-82 [-Standalone-]
else if(cammand=="SGT") { //time of browser webSocket recieved: SGT=20160510 77666 119-133 [---SN---] Last_store_date=value.substring(2,8); // Last_store_time=value.substring(8);
Ego_Seconds=Last_store_time.toInt(); Serial.print(" Base second=");Serial.println(Ego_Seconds); //77666000
} // Set global date setting
else if(cammand=="SVE") {if(TEST) TEST=false; else TEST=true;Serial.println(TEST);}//webSocket.sendTXT(num,"SVE$");store_setting(); }
//''''''''''''''''''''''''''''''''''''' setting page '''''''''''''''''''''''''''''''''''''''''''''' else if(cammand=="SHO") { //SHO=1 [-Standalone-] (value[0]=='1')?SHOW=true:SHOW=false; if(SHOW) _memory_pointer=start_address_of_imagefile[image_index]; Serial.print("SHOW=");Serial.println(SHOW); }
else if(cammand=="CLR") ;//// clear store sensor data [-Standalone-] else if(cammand=="SIM") // SIM=0#1@1 value.indexOf('#'); { byte _index = value.substring(0, value.indexOf('#')).toInt(); // Serial.print(" _index");Serial.println(_index); byte Priority=value.substring(value.indexOf('#')+1, value.indexOf('@')).toInt();// Serial.print(" Priority=");Serial.println(Priority); byte duration=value.substring(value.indexOf('@')+1).toInt(); // Serial.print(" duration=");Serial.println(duration); EEPROM.write(_index+20, Priority); EEPROM.commit(); EEPROM.write(_index+70, duration); EEPROM.commit();
}
//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
else if(cammand=="RRE") ESP.restart();// restart [----SN---] else if(cammand=="CSP") if(IMAGE_NUM) { for(byte i=0;i<IMAGE_NUM;i++) copy_file_from_SPIFF_to_Raw_Flash("/SHOW/"+IMAGES[i], i); Store_address(); } // [-Standalone-] else if(cammand=="RUF") { // UpdateContent [-CONFIG-]
eqI1 = value.indexOf('&'); String filename = value.substring(0, eqI1); //Serial.print(" filename=");Serial.println(filename); String content = value.substring(eqI1+1); //Serial.print(" content=");Serial.println(content); UpdateContent(filename,content);
}
else if(cammand=="RUP") PATH=value;// EEPROM_Write(value,0,1); // Set AP IP [-CONFIG-] } void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t lenght) { client_num=num; switch(type) { case WStype_DISCONNECTED: Serial.printf("[WS:%u Disconnected!]\n", num); ACCESS=false; break; case WStype_CONNECTED: { IPAddress ip = webSocket.remoteIP(num); ACCESS=true; Serial.print("[WS:]Clinet "); Serial.print(num); Serial.print(" CONNECTED with IP: ");Serial.println(ip);
} ///////////////////////////////// webSocket /////////////////////////////////////// String formatBytes(size_t bytes){ if (bytes < 1024) return String(bytes)+"B"; else if(bytes < (1024 1024)) return String(bytes/1024.0)+"KB"; else if(bytes < (1024 1024 * 1024)) return String(bytes/1024.0/1024.0)+"MB"; else return String(bytes/1024.0/1024.0/1024.0)+"GB"; } String getContentType(String filename){ if(server.hasArg("download")) return "application/octet-stream"; else if(filename.endsWith(".htm")) return "text/html"; else if(filename.endsWith(".html")) return "text/html"; else if(filename.endsWith(".css")) return "text/css"; else if(filename.endsWith(".js")) return "application/javascript"; else if(filename.endsWith(".png")) return "image/png"; else if(filename.endsWith(".gif")) return "image/gif"; else if(filename.endsWith(".jpg")) return "image/jpeg"; else if(filename.endsWith(".ico")) return "image/x-icon"; else if(filename.endsWith(".xml")) return "text/xml"; else if(filename.endsWith(".pdf")) return "application/x-pdf"; else if(filename.endsWith(".zip")) return "application/x-zip"; else if(filename.endsWith(".gz")) return "application/x-gzip"; return "text/plain"; } void show_user_list(String path,String _ID,String parseFunction){ //"/data/user.dat","ListUserListBox","parse_line_and_put_inform" String records="<select name=\"Combobox2\" size=\"5\" id=\""+_ID+"\" onChange=\""+parseFunction+"();\" >"; File f = SPIFFS.open(path, "a+"); ///a+ if not exist then create it if (!f) return server.send(200, "text/plain", records); byte line_num_count=0; //String line=""; while(f.available()) { String line = f.readStringUntil('\n');
f.close();
records+=""; server.send(200, "text/plain", records); } void AddUser(String user,String pass,String scop){ String line="\n"+user+ "," + pass + "," + scop; //Serial.println(line); File f = SPIFFS.open("/data/user.dat", "a+");
if (!f) return ; f.print(line); f.close(); } void RemoveUser(byte num){ //Serial.print("lndex number:");Serial.println(num); String temp=""; File f = SPIFFS.open("/data/user.dat", "r"); byte num_count=0; while(f.available()) {//Lets read line by line from the file
String line = f.readStringUntil('\n'); if(line.length() >2) { //Serial.print("line number:");Serial.print(num_count);Serial.println("="+line); if(num!=num_count)temp=temp+line+"\n\r";
num_count++; } }
f.close(); f = SPIFFS.open("/data/user.dat", "w+"); f.println(temp); f.close(); } void Createfile(String path, String filename){ if(SPIFFS.exists(path+filename)) return server.send(500, "text/plain", "FILE EXISTS"); File file = SPIFFS.open(path+filename, "w"); if(file) file.close();
else return server.send(500, "text/plain", "CREATE FAILED"); } void removefile(String path, String filename){ if(!SPIFFS.exists(path+filename)) return server.send(404, "text/plain", "FileNotFound");
SPIFFS.remove(path+filename); server.send(200, "text/plain", "removed"); } void RenameFile(String patch,String oldfilename,String newfilename){ String fold=patch+oldfilename; String fnew=patch+newfilename; if (SPIFFS.exists(fold)) { SPIFFS.rename(fold,fnew); server.send(200, "text/plain", "Renamed"); }
} void show_listfile(void){ ///replace all item of list box String records="<select name=\"Combobox1\" size=\"20\" id=\"listfile\" onChange=\"parse_line();\" >"; byte i=0; Dir dir = SPIFFS.openDir("/"); while (dir.next()) {
String fileName = dir.fileName(); size_t fileSize = dir.fileSize(); records+="<option value=\"" + String(i)+"\">" +fileName +""; i++; } records+=""; server.send(200, "text/plain", records);
} void show_file_content(String patch, String filename){ //show_file_content() _AJX RGP String content="";
File f = SPIFFS.open(patch+filename, "r"); while(f.available()) {//Lets read line by line from the file
String line = f.readStringUntil('\n');
f.close(); server.send(200, "text/plain", content); } void DIR(void){ uint32_t total=0; Dir dir = SPIFFS.openDir("/"); while (dir.next()) {
String fileName = dir.fileName(); size_t fileSize = dir.fileSize(); total+=fileSize; Serial.printf("FS File: %s, size: %s\n", fileName.c_str(), formatBytes(fileSize).c_str()); } Serial.print("\t\t\tTotal:");Serial.println(total);
} void handleFileUpload(){ // "/update" if(server.uri() != "/upload" ) return; HTTPUpload& upload = server.upload(); if(upload.status == UPLOAD_FILE_START){ String filename = upload.filename;
if(!filename.startsWith("/")) filename = "/"+filename; if(PATH.length()>3) filename=PATH+filename;
else if(upload.status == UPLOAD_FILE_WRITE){ //Serial.print("handleFileUpload Data: "); Serial.println(upload.currentSize); if(fsUploadFile) fsUploadFile.write(upload.buf, upload.currentSize); } else if(upload.status == UPLOAD_FILE_END){ if(fsUploadFile) fsUploadFile.close(); Serial.print("handleFileUpload Size: "); Serial.println(upload.totalSize); } } byte list_images_filename(String _path){ Dir dir = SPIFFS.openDir(_path); int j=0; while (dir.next()) IMAGES[j++] = dir.fileName().substring(6);
for(int i=0;i<j;i++) Serial.printf("Image File=%s\n",IMAGES[i].c_str()); return j;
} void sort_image(void){ String copy=""; byte due=0,pri=0; for(int i=0;i<IMAGE_NUM;i++) IMAGES_Prior[i]=(byte)EEPROM.read(i+20); for(int i=0;i<IMAGE_NUM;i++) DURATION[i]=(byte)EEPROM.read(i+70); for(int i=0;i<IMAGE_NUM;i++){ for(int j=0;j<IMAGE_NUM-1;j++) { if(IMAGES_Prior[j]>IMAGES_Prior[j+1]) {
for(int i=0;i<IMAGE_NUM;i++) Serial.printf("IMAGES[%d]=%s , priority=%d, Duration=%d \n",i,IMAGES[i].c_str(),IMAGES_Prior[i],DURATION[i]); } void showActiveImage(void){
IMAGE_NUM=list_images_filename("/SHOW"); sort_image();
String records="<table style=\"position:absolute;color:#FFFFFF;width:400px;font-size:13px; border: 0px #000000 none;\" id=\"mytable\">"; records+="
records+="<\tr>"; for(int i=0;i<IMAGE_NUM;i++) {
records+=""; server.send(200, "text/plain", records); } void Show_Image_List(void){ String records="<select name=\"Combobox1\" width=\"340\" size=\"20\" id=\"listfile\" onChange=\"parse_line();\" >"; byte i=0; Dir dir = SPIFFS.openDir("/SHOW"); while (dir.next()) {
String fileName = dir.fileName(); size_t fileSize = dir.fileSize(); records+="<option value=\"" + String(i)+"\">" +fileName +""; i++; } records+=""; server.send(200, "text/plain", records);
} void update_show_list(void){ IMAGE_NUM=list_images_filename("/SHOW"); sort_image(); String records="<table style=\"position:absolute;color:#FFFFFF;width:600px;font-size:13px; border: 2px #000000 none;\" id=\"mytable\">"; records+="
records+=""; server.send(200, "text/plain", records); } //////////////////////////////////////////////////////////////// void process() // this for httml request { Serial.print("[HTML]"); Serial.print(server.arg(0)); Serial.print(" ACCESS="); Serial.println(ACCESS);
if(server.arg(0)=="IMG") Show_Image_List() ;// CONFIG
else if(server.arg(0)=="SLF") show_listfile() ;// CONFIG
else if(server.arg(0)=="RNF") RenameFile(server.arg(1),server.arg(2),server.arg(3));//http://192.168.4.1/process?code=RRN&patch=patch& [-CONFIG-] else if(server.arg(0)=="CRF") Createfile(server.arg(1),server.arg(2)) ; //http://192.168.4.1/process?code=RCF&patch=patch&file=file [-CONFIG-] else if(server.arg(0)=="RRF") removefile(server.arg(1),server.arg(2)) ; //http://192.168.4.1/process?code=RRF&patch=patch&file=file [-CONFIG-] else if(server.arg(0)=="SFC") show_file_content(server.arg(1),server.arg(2)) ;//http://192.168.4.1/process?code=RGP&patch=patch&file=file [-CONFIG-] else if(server.arg(0)=="USL") update_show_list(); //update_show_list()->_AJX-> _imageList [-CONFIG-] else if(server.arg(0)=="RUL") show_user_list("/data/user.dat","ListUserListBox","parse_line_and_put_inform"); else if(server.arg(0)=="AUS") AddUser(server.arg(1),server.arg(2),server.arg(3));//http://192.168.4.1/process?code=RAU&user=user&pass=pass&scop=scop [-Standalone-] else if(server.arg(0)=="RUS") RemoveUser(server.arg(1)[0]-'0');//http://192.168.4.1/process?code=RRU&index=index [-Standalone-] } bool handleFileRead(String path){///>>>>>>>>> Authentification before sending page Serial.print(" Request page : " + path); if(path.endsWith("/")) path += "index.html";
String contentType = getContentType(path);
String pathWithGz = path + ".gz"; if(SPIFFS.exists(pathWithGz) || SPIFFS.exists(path)){ if(SPIFFS.exists(pathWithGz)) path += ".gz";
File file = SPIFFS.open(path, "r"); size_t sent = server.streamFile(file, contentType);///>>>>>>>>> file.close(); Serial.println("\t[SENT]"); return true; } Serial.println("\t[Not Found]"); return false; } void handleFileUploadImage(){ if(server.uri() != "/updateImage" ) return; HTTPUpload& upload = server.upload(); if(upload.status == UPLOAD_FILE_START){ String filename = upload.filename;
if(!filename.startsWith("/")) filename = "/SHOW/"+filename; //if(PATH.length()>3) filename=PATH+filename;
else if(upload.status == UPLOAD_FILE_WRITE){ //Serial.print("handleFileUpload Data: "); Serial.println(upload.currentSize); if(fsUploadFile) fsUploadFile.write(upload.buf, upload.currentSize); } else if(upload.status == UPLOAD_FILE_END){ if(fsUploadFile) fsUploadFile.close(); Serial.print("handleFileUpload Size: "); Serial.println(upload.totalSize); } } void handleRoot() { handleFileRead("/Sindex.html"); } void send_config_html(void){server.send ( 200, "text/html", configHtml ); } void handleConfig(){ if(!server.authenticate(preSetUser.c_str(), preSetPass.c_str())) return server.requestAuthentication(); ACCESS=true; send_config_html();} void handleOther(){ if(!handleFileRead(server.uri())) { //Serial.println("Request other files");
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 print_chip_info(void){ preSetUser=String(ESP.getChipId());// preSetPass=String(ESP.getChipId(), HEX); preSetPass.toUpperCase(); Serial.println("\n\nDevice ID=" + preSetPass +"(" + preSetUser + ")"); Serial.print("Slected FlashChipSize: ");Serial.println(formatBytes(ESP.getFlashChipSize())); Serial.print("FlashChipRealSize: ");Serial.println(formatBytes(ESP.getFlashChipRealSize())); Serial.print("SketchSize:");Serial.println(formatBytes(ESP.getSketchSize())); Serial.print("FreeSketchSpace:");Serial.println(formatBytes(ESP.getFreeSketchSpace())); Serial.print("FreeHeap:");Serial.println(formatBytes(ESP.getFreeHeap()));
//Serial.print("\nChipId: ");Serial.println(ESP.getChipId()); Serial.print("CpuFreqMHz: ");Serial.println(ESP.getCpuFreqMHz());
Serial.print("SdkVersion: ");Serial.println(ESP.getSdkVersion()); Serial.print("FlashChipSpeed: ");Serial.println(ESP.getFlashChipSpeed()); Serial.print("FlashChipMode: ");Serial.println(ESP.getFlashChipMode()); } void Rotate_1_round(void){
t_stop_round=micros(); RPM=(t_stop_round-t_start_round)/(IMAGES_LINES); lineInterval=(lineInterval+RPM)/2;
t_start_round=t_stop_round; Start_new_round=true; }
static uint8_t tint_poz = 0;
void setup() { Serial.begin(115200); // Serial.begin(115200, SERIAL_8N1,SERIAL_TX_ONLY); delay(500); Serial.setDebugOutput(true); Serial.println(F("\n \nStarting....."));
SPIFFS.begin(); EEPROM.begin(128); FastLED.addLeds<APA102,DATA_PIN,CLOCK_PIN,RGB,DATA_RATE_MHZ(16)>(leds,NUM_LEDS); FastLED.setBrightness(255); FastLED.clear(); FastLED.show(); print_chip_info();
DIR(); IMAGE_NUM=list_images_filename("/SHOW"); sort_image(); Restore_address(); WiFi.mode(WIFI_AP); WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0)); WiFi.softAP(AP_SSID.c_str(),AP_SSIDPASS.c_str());
delay(500); // Without delay I've seen the IP address blank
//MyIP=WiFi.softAPIP().toString(); Serial.print("AP IP address: ");Serial.println(WiFi.softAPIP()); server.on("/upload", HTTP_POST, [](){ Serial.println("Upload post"); server.send(200, "text/plain", ""); / Redirect("/setting.html");/ }, handleFileUpload); server.on("/updateImage", HTTP_POST, [](){ Serial.println("Upload post"); server.send(200, "text/plain", "Loaded"); / Redirect("/setting.html");/ }, handleFileUploadImage); server.on("/", handleRoot); server.on("/process", process); server.on("/config.html", handleConfig); server.onNotFound(handleOther);
server.begin(); Serial.println(F("\t\t\tHTTP server started"));
const char headerkeys[] = {"User-Agent","Cookie"} ; //here the list of headers to be recorded size_t hz = sizeof(headerkeys)/sizeof(char); server.collectHeaders(headerkeys, hz ); //ask server to track these headers
Serial.printf("New Start Address= %u\n",current_raw_location); LED_BUFFER = (uint8_t )malloc(NUM_LEDS3); Serial.print(F("Number of Image=")); Serial.println(IMAGE_NUM); webSocket.begin(); webSocket.onEvent(webSocketEvent); delay(500); pinMode(HalSensor, INPUT); attachInterrupt(digitalPinToInterrupt(HalSensor), Rotate_1_round, FALLING); OpenlastTime=millis(); }
byte hue=0;
void loop() { if(!SHOW && !TEST) server.handleClient();
if(SHOW) { if( (millis()- OpenlastTime) >DURATION[image_index]1000) {
if(image_index>=IMAGE_NUM) image_index=0; _memory_pointer=start_address_of_imagefile[image_index]; Serial.printf("File number=%u name:%s address:%u duration:%u\n", image_index,IMAGES[image_index].c_str(),start_address_of_imagefile[image_index],DURATION[image_index]); Current_imageLine=0;
image_index++; OpenlastTime=millis(); } if((micros()-lastLineShow)> lineInterval) {
lastLineShow=micros(); ESP.flashRead(_memory_pointer,(uint32_t )leds ,NUM_LEDS3 );
FastLED.show(); _memory_pointer+=(NUM_LEDS3); Current_imageLine++; delay(LineIntervalDelay);
} if(Current_imageLine>=IMAGES_LINES) { Current_imageLine=0; _memory_pointer=start_address_of_imagefile[image_index-1]; }
optimistic_yield(1000);
}
This is an issue tracker for the Beginner's Guide to the ESP8266.
Please use the appropriate online fora if you have questions about your specific project.