From 7dc6f8cec5115a55f51350f4a4efc02d61615359 Mon Sep 17 00:00:00 2001 From: Fl1s Date: Mon, 20 Oct 2025 20:45:44 +0700 Subject: [PATCH 1/2] feat: add esp32 support and did a minor refactor --- library.json | 2 +- library.properties | 2 +- platformio.ini | 19 ++++++++++++++++--- src/EasyWiFi.cpp | 20 ++++++++------------ src/EasyWiFi.h | 39 ++++++++++++++++++++++++++++----------- 5 files changed, 54 insertions(+), 28 deletions(-) diff --git a/library.json b/library.json index ade8290..3327775 100644 --- a/library.json +++ b/library.json @@ -16,5 +16,5 @@ ], "license": "MIT", "frameworks": "arduino", - "platforms": ["espressif8266"] + "platforms": ["espressif8266", "espressif32"] } diff --git a/library.properties b/library.properties index d2796ac..ca70755 100644 --- a/library.properties +++ b/library.properties @@ -6,4 +6,4 @@ sentence=Minimal WiFi Manager with captive portal. paragraph=Library for WiFi managemnent and credential storage for ESP8266 boards. category=Communication url=https://github.com/localrice/EasyWiFi -architectures=esp8266 +architectures=esp8266,esp32 \ No newline at end of file diff --git a/platformio.ini b/platformio.ini index 2b0265a..fde6b30 100644 --- a/platformio.ini +++ b/platformio.ini @@ -8,11 +8,24 @@ ; Please visit documentation for the other options and examples ; https://docs.platformio.org/page/projectconf.html +[platformio] +default_envs = nodemcuv2 + +[env] +framework = arduino +upload_speed = 115200 +monitor_speed = 115200 + +; ESP8266 [env:nodemcuv2] platform = espressif8266 board = nodemcuv2 -framework = arduino board_build.filesystem = littlefs -upload_speed = 115200 -monitor_speed = 115200 +; ESP32 +[env:esp32] +platform = espressif32 +board = esp32dev +lib_deps = + LITTLEFS_esp32 +board_build.filesystem = littlefs \ No newline at end of file diff --git a/src/EasyWiFi.cpp b/src/EasyWiFi.cpp index 2d8fee9..c846d96 100644 --- a/src/EasyWiFi.cpp +++ b/src/EasyWiFi.cpp @@ -1,10 +1,6 @@ #include "EasyWiFi.h" #include -ESP8266WebServer server(80); -DNSServer dnsServer; -const byte DNS_PORT = 53; - const char* const EasyWiFi::CREDENTIAL_FILE = "/wifi_credentials.txt"; const char *defaultCSS = R"rawliteral( @@ -143,8 +139,8 @@ EasyWiFi::EasyWiFi() {} */ void EasyWiFi::begin() { Serial.println("EasyWiFi: begin()"); - if (!LittleFS.begin()) { - Serial.println("EasyWiFi: Failed to mount LittleFS"); + if (!LittleFS.begin(true)) { + Serial.println("EasyWiFi: Failed to mount FS"); return; } loadCredentials(); @@ -237,7 +233,7 @@ void EasyWiFi::tryConnect(bool preferNext) { } } - const unsigned long timeout = 10000; + const unsigned long timeout = 10000; for (size_t offset = 0; offset < totalNetworks; ++offset) { const size_t index = (startIndex + offset) % totalNetworks; applyActiveCredential(index); @@ -262,7 +258,7 @@ void EasyWiFi::startPortal() { WiFi.softAP(APName, APPassword); Serial.printf("AP started: %s (secured) \n",APName); } else { - WiFi.softAP(APName); + WiFi.softAP(APName); Serial.printf("AP started: %s (open) \n",APName); } @@ -282,7 +278,7 @@ void EasyWiFi::startPortal() { server.send(200, "text/html", html); }); - + server.on("/save", HTTP_POST, [this]() { String newSsid = server.arg("ssid"); String newPassword = server.arg("password"); @@ -296,9 +292,9 @@ void EasyWiFi::startPortal() { server.send(400, "text/html", "

SSID cannot be empty

"); } }); - + server.on("/scan", [this]() { - int networks = WiFi.scanNetworks(); + int networks = WiFi.scanNetworks(); Serial.printf("Scan complete: %d", networks); String json = "["; @@ -424,7 +420,7 @@ void EasyWiFi::loadCredentials() { if (line.length() > 0) { credentials.push_back({line, legacyPassword}); } - break; + break; } credentials.push_back({line.substring(0, separatorIndex), line.substring(separatorIndex + 1)}); diff --git a/src/EasyWiFi.h b/src/EasyWiFi.h index 31a13c1..1baf623 100644 --- a/src/EasyWiFi.h +++ b/src/EasyWiFi.h @@ -1,13 +1,25 @@ -#ifndef EASYWIFI_H -#define EASYWIFI_H - -#include -#include -#include -#include -#include -#include -#include + #ifndef EASYWIFI_H + #define EASYWIFI_H + + #include + #include + #include + + #if defined(ESP8266) + #include + #include + #include + #include + using EasyWiFiWebServer = ESP8266WebServer; + #elif defined(ESP32) + #include + #include + #include + #include + using EasyWiFiWebServer = WebServer; + #else + #error "EasyWiFi: supports only ESP8266 and ESP32 platforms" + #endif class EasyWiFi { public: @@ -20,7 +32,7 @@ class EasyWiFi { void saveCredentials(const char* networkSsid, const char* networkPassword); void loadCredentials(); void printCredentials(); - + // to set Access Point (AP) credentials. void setAP(const char* name, const char* password = ""); @@ -40,6 +52,7 @@ class EasyWiFi { void setOnConnect(ConnectCallback cb); void setOnDisconnect(DisconnectCallback cb); void setOnSave(SaveCallback cb); + private: bool portalActive = false; String ssid; @@ -76,6 +89,10 @@ class EasyWiFi { std::vector credentials; int activeCredentialIndex = -1; + EasyWiFiWebServer server{80}; + DNSServer dnsServer; + const byte DNS_PORT = 53; + void tryConnect(bool preferNext = false); void startPortal(); void stopPortal(); From fa652a14957b9be73dc5ebbc9a887b4099ae6f42 Mon Sep 17 00:00:00 2001 From: Fl1s Date: Mon, 20 Oct 2025 20:46:37 +0700 Subject: [PATCH 2/2] refactor: minor tabulation fix --- src/EasyWiFi.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/EasyWiFi.h b/src/EasyWiFi.h index 1baf623..2f8f845 100644 --- a/src/EasyWiFi.h +++ b/src/EasyWiFi.h @@ -52,7 +52,6 @@ class EasyWiFi { void setOnConnect(ConnectCallback cb); void setOnDisconnect(DisconnectCallback cb); void setOnSave(SaveCallback cb); - private: bool portalActive = false; String ssid;