// GETメソッドに対応 void printDirectory() { if(!server.hasArg("dir")) return returnFail("BAD ARGS"); String path = server.arg("dir"); if(path != "/" && !SD.exists((char *)path.c_str())) return returnFail("BAD PATH"); File dir = SD.open((char *)path.c_str()); path = String(); if(!dir.isDirectory()){ dir.close(); return returnFail("NOT DIR"); } dir.rewindDirectory(); server.setContentLength(CONTENT_LENGTH_UNKNOWN); server.send(200, "text/json", ""); WiFiClient client = server.client(); server.sendContent("["); for (int cnt = 0; true; ++cnt) { File entry = dir.openNextFile(); if (!entry) break; String output; if (cnt > 0) output = ','; output += "{\"type\":\""; output += (entry.isDirectory()) ? "dir" : "file"; output += "\",\"name\":\""; output += entry.name(); output += "\""; output += "}"; server.sendContent(output); entry.close(); } server.sendContent("]"); dir.close(); }
bool loadFromSdCard(String path){ String dataType = "text/plain"; if(path.endsWith("/")) path += "index.htm"; if(path.endsWith(".src")) path = path.substring(0, path.lastIndexOf(".")); else if(path.endsWith(".htm")) dataType = "text/html"; else if(path.endsWith(".css")) dataType = "text/css"; else if(path.endsWith(".js")) dataType = "application/javascript"; else if(path.endsWith(".png")) dataType = "image/png"; else if(path.endsWith(".gif")) dataType = "image/gif"; else if(path.endsWith(".jpg")) dataType = "image/jpeg"; else if(path.endsWith(".ico")) dataType = "image/x-icon"; else if(path.endsWith(".xml")) dataType = "text/xml"; else if(path.endsWith(".pdf")) dataType = "application/pdf"; else if(path.endsWith(".zip")) dataType = "application/zip"; File dataFile = SD.open(path.c_str()); if(dataFile.isDirectory()){ path += "/index.htm"; dataType = "text/html"; dataFile = SD.open(path.c_str()); } if (!dataFile) return false; if (server.hasArg("download")) dataType = "application/octet-stream"; if (server.streamFile(dataFile, dataType) != dataFile.size()) { DBG_OUTPUT_PORT.println("Sent less data than expected!"); } dataFile.close(); return true; }
void handleRoot() { if (server.hasArg("redon")) { digitalWrite(15, HIGH); } else if (server.hasArg("redoff")) { digitalWrite(15, LOW); } else if (server.hasArg("greenon")) { digitalWrite(12, HIGH); } else if (server.hasArg("greenoff")) { digitalWrite(12, LOW); } else if (server.hasArg("blueon")) { digitalWrite(13, HIGH); } else if (server.hasArg("blueoff")) { digitalWrite(13, LOW); } else if (server.hasArg("off")) { digitalWrite(12, LOW); digitalWrite(13, LOW); digitalWrite(15, LOW); } int sensorValue = analogRead(LDR); char lightSensorValue[30]; dtostrf(sensorValue, 4, 3, lightSensorValue); int buttonValue = digitalRead(BUTTON); char buttonSensorValue[30]; dtostrf(buttonValue, 4, 3, buttonSensorValue); char request[1024]; strcpy(request, "<html><head>"); strcat(request, "<title>ESP8266 WittyCloud ESP12 Board</title>"); strcat(request, "<meta name=\"viewport\" content=\"width=device-width, " "initial-scale=1.0\"/>"); strcat(request, "</head><body><ul>"); strcat(request, "<li>Light sensor: "); strcat(request, lightSensorValue); strcat(request, "</li>"); strcat(request, "<li>Button: "); strcat(request, buttonSensorValue); strcat(request, "</li><hr />"); strcat(request, "<li>All: <a href=\"?off=1\">Off</a></li>"); strcat(request, "<li>Red: <a href=\"?redon=1\">On</a> <a " "href=\"?redoff=1\">Off</a></li>"); strcat(request, "<li>Green: <a href=\"?greenon=1\">On</a> <a " "href=\"?greenoff=1\">Off</a></li>"); strcat(request, "<li>Blue: <a href=\"?blueon=1\">On</a> <a " "href=\"?blueoff=1\">Off</a></li>"); strcat(request, "</body></html>"); server.send(200, "text/html", request); }
bool loadFromSpiffs(String path){ String dataType = "text/plain"; if(path.endsWith("/")) path += "index.html"; if(path.endsWith(".src")) path = path.substring(0, path.lastIndexOf(".")); else if(path.endsWith(".htm")) dataType = "text/html"; else if(path.endsWith(".html")) dataType = "text/html"; else if(path.endsWith(".css")) dataType = "text/css"; else if(path.endsWith(".js")) dataType = "application/javascript"; else if(path.endsWith(".png")) dataType = "image/png"; else if(path.endsWith(".gif")) dataType = "image/gif"; else if(path.endsWith(".jpg")) dataType = "image/jpeg"; else if(path.endsWith(".ico")) dataType = "image/x-icon"; else if(path.endsWith(".xml")) dataType = "text/xml"; else if(path.endsWith(".pdf")) dataType = "application/pdf"; else if(path.endsWith(".zip")) dataType = "application/zip"; File dataFile = SPIFFS.open(path.c_str(), "r"); if (httpd.hasArg("download")) dataType = "application/octet-stream"; if (httpd.streamFile(dataFile, dataType) != dataFile.size()) { } dataFile.close(); return true; }
void MyFunctionRequestHandler::apiHandler(ESP8266WebServer& server) { mpIpDisplay->StopShowingIp(); //applicationProblems = -1; //force repaint display in client mode // adjust logo brightness (on/off right now) if (server.hasArg(F("logo"))) { if (server.arg(F("logo")).equals(F("on"))) { mpLedstripLogo->setBrightness(255); } else if (server.arg(F("logo")).equals(F("default"))) { ledsSetLogoDefault(); } else { mpLedstripLogo->setBrightness(0); } } // to quickly set the RGB colors of the logo remotely if (server.hasArg(F("logoled"))) { byte led = byte(server.arg(F("logoled")).toInt()); byte r = byte(server.arg(F("r")).toInt()); byte g = byte(server.arg(F("g")).toInt()); byte b = byte(server.arg(F("b")).toInt()); mpLedstripLogo->setPixelColor(led, r, g, b); } if (server.hasArg(F("top_init"))){ mpDisplayUpperRing->Init(); } if (server.hasArg(F("top"))){ String argument = server.arg(F("top")); unsigned int i = 0; unsigned int ret = 0; while (i < argument.length()) i = mpDisplayUpperRing->ParseLedArg(argument, i); } if (server.hasArg(F("top_bg"))){ String argument = server.arg(F("top_bg")); if (argument.length() == 6) mpDisplayUpperRing->SetBackground(argument.substring(2, 4) + argument.substring(0, 2) + argument.substring(4, 6)); } if (server.hasArg(F("top_whirl"))){ String argument = server.arg(F("top_whirl")); mpDisplayUpperRing->ParseWhirlArg(argument); } if (server.hasArg(F("top_morph"))){ String argument = server.arg(F("top_morph")); mpDisplayUpperRing->ParseMorphArg(argument); } if (server.hasArg(F("bottom_init"))){ mpDisplayLowerRing->Init(); } if (server.hasArg(F("bottom"))){ String argument = server.arg(F("bottom")); unsigned int i = 0; unsigned int ret = 0; while (i < argument.length()) i = mpDisplayLowerRing->ParseLedArg(argument, i); } if (server.hasArg(F("bottom_bg"))){ String argument = server.arg(F("bottom_bg")); if (argument.length() == 6) mpDisplayLowerRing->SetBackground(argument.substring(2, 4) + argument.substring(0, 2) + argument.substring(4, 6)); } if (server.hasArg(F("bottom_whirl"))){ String argument = server.arg(F("bottom_whirl")); mpDisplayLowerRing->ParseWhirlArg(argument); } if (server.hasArg(F("bottom_morph"))){ String argument = server.arg(F("bottom_morph")); mpDisplayLowerRing->ParseMorphArg(argument); } if (server.hasArg(F("dynatrace-environmentid")) && server.hasArg(F("dynatrace-apikey")) && server.hasArg(F("dynatrace-interval"))) { if (mDebug) Serial.println(F("Storing Dynatrace SaaS/Managed environment integration settings")); mpConfig->enabled = server.hasArg(F("dynatrace-on")); mpConfig->dynatraceEnvironmentID = server.arg(F("dynatrace-environmentid")); mpConfig->dynatraceApiKey = server.arg(F("dynatrace-apikey")); mpConfig->pollingIntervalS = server.arg(F("dynatrace-interval")).toInt(); mpConfig->SignalChange(); mpConfig->Write(); server.sendHeader(F("location"), F("/")); server.send(302); return; } if (server.hasArg(F("hostname"))) { String newWifiHostname = server.arg(F("hostname")); eepromSet(newWifiHostname); } // note its required to provide both arguments SSID and PWD if (server.hasArg(F("ssid")) && server.hasArg(F("pwd"))) { String newWifiSSID = server.arg(F("ssid")); String newWifiPwd = server.arg(F("pwd")); // if SSID is given, also update wifi credentials if (newWifiSSID.length()) { WiFi.mode(WIFI_STA); WiFi.begin(newWifiSSID.c_str(), newWifiPwd.c_str() ); } if (mDebug) { Serial.println(String(F("New Wifi settings: ")) + newWifiSSID + F(" / ") + newWifiPwd); Serial.println(String(F("Restarting...."))); Serial.flush(); } httpReboot(server, String(F("New WIFI settings accepted. Mac address: ")) + WiFi.macAddress() + String(F("<p/>"))); } server.sendHeader(F("cache-control"), F("private, max-age=0, no-cache, no-store")); server.send(200); }