#include <ESP8266WiFi.h> #include <DNSServer.h> #include <ESP8266mDNS.h> #include <ESP8266WebServer.h> #include <ESP8266httpUpdate.h> #include <FS.h> #include <Ticker.h> #include <EEPROM.h> #include "config.h" void setup() { Serial.begin(115200); EEPROM.begin(eepromSize); while (!Serial) ; Serial.println(); pinMode(L1, OUTPUT); pinMode(L2, OUTPUT); WiFi.mode(WIFI_AP); WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0)); setChangeAP(); dnsServer.setErrorReplyCode(DNSReplyCode::NoError); dnsServer.start(DNS_PORT, "*", apIP); webServer.on("/", handleRoot); webServer.on("/generate_204", handleRoot); webServer.on("/fwlink", handleRoot); webServer.on("/wifi", handleWifi); webServer.on("/wifisave", handleWifiSave); webServer.onNotFound(handleNotFound); webServer.on("/admin", handleAdmin); webServer.on("/info", HTTP_GET, handleGetFSInfo); // 文件信息 webServer.on("/update", HTTP_POST, handleFileUploadAfter, handleFileUpload); // 上传文件 webServer.on("/is", HTTP_GET, handleIS); // 指令集 webServer.on("/led", HTTP_GET, handleLed); // led操作 webServer.on("/config", HTTP_GET, handleConfig); // 配置信息 webServer.on("/putConfig", HTTP_GET, handlePutConfig); // 设置配置 webServer.on("/wifiscan", HTTP_GET, handleWifiscan); // 返回 Wi-Fi 扫描结果 webServer.on("/wificonn", HTTP_GET, handleWificonn); // 连接 Wi-Fi webServer.on("/wificonf", HTTP_GET, handleWificonf); // 返回 Wi-Fi 配置 webServer.on("/version", HTTP_GET, handleVersion); // 返回版本 webServer.on("/nVersion", HTTP_GET, handleNVersion); // 返回最新版本 webServer.on("/update", HTTP_GET, handleUpdate); // 升级 webServer.on("/progress", HTTP_GET, handleProgress); //获取进度 webServer.begin(); if (!SPIFFS.begin()) { Serial.println("fs begin error"); return; } getEEPROM(); connect = strlen(ssid) > 0; ledLight(1); ticker.once_ms(1000, offLed); } void loop() { if (connect) { Serial.println("Connect requested"); connect = false; connectWifi(); lastConnectTry = millis(); } { unsigned int s = WiFi.status(); if (s == 0 && millis() > (lastConnectTry + 60000)) { connect = true; } if (status != s) { // WLAN status change Serial.print("Status: "); Serial.println(s); status = s; if (s == WL_CONNECTED) { Serial.println("Wi-Fi connection successful"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); // Setup MDNS responder if (!MDNS.begin(myHostname)) { Serial.println("Error setting up MDNS responder!"); } else { Serial.println("mDNS responder started"); // Add service to MDNS-SD MDNS.addService("http", "tcp", 80); } } else if (s == WL_NO_SSID_AVAIL) { WiFi.disconnect(); } } if (s == WL_CONNECTED) { MDNS.update(); } } dnsServer.processNextRequest(); webServer.handleClient(); }