void WEBINTERFACE_CLASS::WebServer() { // Routing Table server.on("/wifisetup.html", handleWifi); server.on("/scan.json",handleScan); server.on("/", handleWifi); server.onNotFound(handleNotFound); server.begin(); Serial.println("HTTP server started"); }
void webServerSetup() { webServer.on("/status.json", handleStatus); webServer.serveStatic("/config.json", SPIFFS, "/config.json"); webServer.serveStatic("/", SPIFFS, "/public/index.html"); webServer.serveStatic("/assets/brewMonitor.js", SPIFFS, "/public/assets/brewMonitor.js"); webServer.onNotFound(handleNotFound); webServer.begin(); }
void WifiServerinit(void){ if (MDNS.begin(host)) { MDNS.addService("http", "tcp", 80); DBG_OUTPUT_PORT.println("MDNS responder started"); DBG_OUTPUT_PORT.print("You can now connect to http://"); DBG_OUTPUT_PORT.print(host); DBG_OUTPUT_PORT.println(".local"); } // uri,HTTPメソッド,そのメソッドに対応する関数を指定する server.on("/list", HTTP_GET, printDirectory); server.on("/edit", HTTP_DELETE, handleDelete); server.on("/edit", HTTP_PUT, handleCreate); server.on("/edit", HTTP_POST, [](){ returnOK(); }); server.onNotFound(handleNotFound); // ハンドラが割り当てられていない場合に呼び出す関数の設定 server.onFileUpload(handleFileUpload); // ファイルアップロード server.begin(); DBG_OUTPUT_PORT.println("HTTP server started"); }
void setup() { memset(voltsChr,0,sizeof(voltsChr)); memset(amps0Chr,0,sizeof(amps0Chr)); memset(amps1Chr,0,sizeof(amps1Chr)); memset(tmpChr,0,sizeof(tmpChr)); // if the program crashed, skip things that might make it crash String rebootMsg = ESP.getResetReason(); if (rebootMsg=="Exception") safeMode=true; else if (rebootMsg=="Hardware Watchdog") safeMode=true; else if (rebootMsg=="Unknown") safeMode=true; else if (rebootMsg=="Software Watchdog") safeMode=true; if (sw1>=0) { pinMode(sw1, OUTPUT); } if (sw2>=0) { pinMode(sw2, OUTPUT); } if (sw3>=0) { pinMode(sw3, OUTPUT); } if (sw4>=0) { pinMode(sw4, OUTPUT); } // "mount" the filesystem bool success = SPIFFS.begin(); if (!success) SPIFFS.format(); if (!safeMode) fsConfig(); // read node config from FS #ifdef _TRAILER wifiMulti.addAP("DXtrailer", "2317239216"); #else wifiMulti.addAP("Tell my WiFi I love her", "2317239216"); #endif int wifiConnect = 240; while ((wifiMulti.run() != WL_CONNECTED) && (wifiConnect-- > 0)) { // spend 2 minutes trying to connect to wifi // connecting to wifi delay(1000); } if (wifiMulti.run() != WL_CONNECTED ) { // still not connected? reboot! ESP.reset(); delay(5000); } if (hasHostname) { // valid config found on FS, set network name WiFi.hostname(String(nodename)); // set network hostname ArduinoOTA.setHostname(nodename); // OTA hostname defaults to esp8266-[ChipID] MDNS.begin(nodename); // set mDNS hostname } WiFi.macAddress(mac); // get esp mac address, store it in memory, build fw update url sprintf(macStr,"%x%x%x%x%x%x", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); sprintf(theURL,"/iotfw?mac=%s", macStr); // request latest config from web api if (!safeMode) getConfig(); // check web api for new firmware if (!safeMode) httpUpdater(); // start UDP for ntp client udp.begin(localPort); updateNTP(); setSyncProvider(getNtptime); // use NTP to get current time setSyncInterval(600); // refresh clock every 10 min #ifndef _MINI // start the webserver httpd.onNotFound(handleNotFound); httpd.begin(); // Add service to MDNS-SD MDNS.addService("http", "tcp", 80); #endif // start websockets server webSocket.begin(); webSocket.onEvent(webSocketEvent); // setup other things setupOTA(); setupMQTT(); // setup i2c if configured, basic sanity checking on configuration if (hasI2C && iotSDA>=0 && iotSCL>=0 && iotSDA!=iotSCL) { sprintf(str,"I2C enabled, using SDA=%u SCL=%u", iotSDA, iotSCL); mqtt.publish(mqttpub, str); Wire.begin(iotSDA, iotSCL); // from api config file //Wire.begin(12, 14); // from api config file i2c_scan(); printConfig(); if (hasRGB) setupRGB(); if (hasIout) setupADS(); if (hasSpeed) setupSpeed(); } // OWDAT = 4; if (OWDAT>0) { // setup onewire if data line is using pin 1 or greater sprintf(str,"Onewire Data OWDAT=%u", OWDAT); mqtt.publish(mqttpub, str); oneWire.begin(OWDAT); if (hasTout) { ds18b20 = DallasTemperature(&oneWire); ds18b20.begin(); // start one wire temp probe } if (hasTpwr>0) { pinMode(hasTpwr, OUTPUT); // onewire power pin as output digitalWrite(hasTpwr, LOW); // ow off } } if (useMQTT) { String rebootReason = String("Last reboot cause was ") + rebootMsg; rebootReason.toCharArray(str, rebootReason.length()+1); mqtt.publish(mqttpub, str); } }
void Threm::start() { _thremContext->isStarted = true; #ifdef LOG LOG << "Threm::start" << endl; LOG << "Free heap " << ESP.getFreeHeap() << endl; #endif spiffsOk = SPIFFS.begin(); if (!spiffsOk) { #ifdef LOG LOG << "SPIFFS failed" << endl; #endif } ESP8266WebServer* server = _thremContext->getServer(); IThremPlugin* plugin; PluginMeta* meta; for (int i = 0; i < _plugins->size(); i++) { plugin = _plugins->get(i); bool canEnable = true; int pluginId = plugin->getUniqueId(); { String state = getJsonStateFor(pluginId); yield(); StaticJsonBuffer<JSON_BUFFER_SIZE> jsonBuffer; JsonObject& root = jsonBuffer.parseObject(state); if (!root.success()) { #ifdef LOG LOG << "Failed to parse config for " << String(plugin->getUniqueId()) << endl; #endif } else { bool isDisabled = root["off"]; if (isDisabled) { canEnable = false; } } if (canEnable) { canEnable = plugin->init(_thremContext, root); } } meta = _pluginMeta->get(i); meta->isEnabled = canEnable; #ifdef DEBUG DEBUG << String(plugin->getName()) << " enabled=" << canEnable << endl; #endif _pluginMeta->set(i, meta); yield(); } #ifdef DEBUG DEBUG << "Plugins declared: " << _plugins->size() << endl; #endif #ifdef LOG LOG << getJsonState() << endl; #endif #ifdef DEBUG DEBUG << "default callbacks setup." << endl; #endif server->onNotFound([=](){ IThremPlugin*plugin; PluginMeta* meta; String uri = server->uri(); for (int i = 0; i < _plugins->size(); i++) { plugin = _plugins->get(i); meta = _pluginMeta->get(i); if (meta->isEnabled) { if (plugin->handleNotFound(_thremContext, uri)) { #ifdef LOG LOG << "NotFound handled by: " << plugin->getName() << endl; #endif return; } } } 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->sendHeader("Cache-Control", "no-cache, no-store, must-revalidate"); server->sendHeader("Pragma", "no-cache"); server->sendHeader("Expires", "-1"); server->send(404, "text/plain", message); }); #ifdef DEBUG DEBUG << "Starting webserver." << endl; #endif server->begin(); #ifdef DEBUG DEBUG << "Web server started." << endl; #endif }
void setup(void){ pinMode(led, OUTPUT); digitalWrite(led, LED_OFF); // Note the serial rate - if you don't match it when connecting you'll get garbage. Serial.begin(115200); WiFi.begin(ssid, password); Serial.println(""); // Wait for connection while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("Connected to "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP()); // This tells the network that you can access the ip address of the esp8266 via 'esp8266.local' // The first arg is the hostname - '.local' will be appended to it, the second arg is the ip address if (mdns.begin("esp8266", WiFi.localIP())) { Serial.println("MDNS responder started"); } server.on("/", handleRoot); server.on("/inline", [](){ server.send(200, "text/plain", "this works as well"); }); server.onNotFound(handleNotFound); server.begin(); Serial.println("HTTP server started"); }