Skip to content
This repository was archived by the owner on Feb 4, 2023. It is now read-only.

Commit 6a9eea8

Browse files
authored
v1.0.11
### Releases 1.0.11 1. Initial coding to use ESPAsyncWebServer instead of (ESP8266)WebServer. 2. Add more features and error checking to many examples. 3. Add example [Async_ConfigOnDRD_FS_MQTT_Ptr](examples/Async_ConfigOnDRD_FS_MQTT_Ptr) 4. Bump up to v1.0.11 to sync with ESP_WiFiManager v1.0.11.
1 parent 4363ef2 commit 6a9eea8

File tree

8 files changed

+1671
-662
lines changed

8 files changed

+1671
-662
lines changed

README.md

Lines changed: 389 additions & 336 deletions
Large diffs are not rendered by default.

examples/Async_ConfigOnDRD_FS_MQTT_Ptr/Async_ConfigOnDRD_FS_MQTT_Ptr.ino

Lines changed: 846 additions & 0 deletions
Large diffs are not rendered by default.

examples/Async_ConfigOnSwitchFS_MQTT_Ptr/Async_ConfigOnSwitchFS_MQTT_Ptr.ino

Lines changed: 261 additions & 218 deletions
Large diffs are not rendered by default.

examples/Async_ESP32_FSWebServer/Async_ESP32_FSWebServer.ino

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
How To Use:
3434
1) access the sample web page at http://async-esp32fs.local
3535
2) edit the page by going to http://async-esp32fs.local/edit
36-
3. Use configurable user/password to login. Default is admin/admin
36+
3) Use configurable user/password to login. Default is admin/admin
3737
*****************************************************************************************************************************/
3838

3939
#if !defined(ESP32)
@@ -181,18 +181,34 @@ void setup(void)
181181
Serial.begin(115200);
182182
while (!Serial);
183183

184-
#if USE_SPIFFS
185-
Serial.println("\nStarting Async_ESP_FSWebServer using SPIFFS on " + String(ARDUINO_BOARD));
186-
#else
187-
Serial.println("\nStarting Async_ESP_FSWebServer using FFat on " + String(ARDUINO_BOARD));
188-
#endif
189-
190184
Serial.setDebugOutput(false);
191185

192-
if (FORMAT_FILESYSTEM)
186+
bool FileFSReady = true;
187+
188+
if (FORMAT_FILESYSTEM)
193189
FILESYSTEM.format();
194190

191+
#if USE_SPIFFS
192+
Serial.println("\nStarting Async_ESP32_FSWebServer_DRD using USE_SPIFFS on " + String(ARDUINO_BOARD));
193+
194+
// Format SPIFFS if not yet
195+
if (!FILESYSTEM.begin(true))
196+
{
197+
Serial.println(F("SPIFFS failed! Formatting."));
198+
199+
if (!FILESYSTEM.begin())
200+
{
201+
Serial.println(F("SPIFFS failed!"));
202+
FileFSReady = false;
203+
}
204+
}
205+
#else
206+
Serial.println("\nStarting Async_ESP32_FSWebServer_DRD using FFat on " + String(ARDUINO_BOARD));
207+
195208
FILESYSTEM.begin();
209+
#endif
210+
211+
if (FileFSReady)
196212
{
197213
File root = FILESYSTEM.open("/");
198214
File file = root.openNextFile();
@@ -307,14 +323,16 @@ void setup(void)
307323

308324
server.addHandler(&events);
309325

310-
server.addHandler(new SPIFFSEditor(SPIFFS, http_username, http_password));
311-
312326
server.on("/heap", HTTP_GET, [](AsyncWebServerRequest * request)
313327
{
314328
request->send(200, "text/plain", String(ESP.getFreeHeap()));
315329
});
316330

317-
server.serveStatic("/", SPIFFS, "/").setDefaultFile("index.htm");
331+
if (FileFSReady)
332+
{
333+
server.addHandler(new SPIFFSEditor(SPIFFS, http_username, http_password));
334+
server.serveStatic("/", SPIFFS, "/").setDefaultFile("index.htm");
335+
}
318336

319337
server.onNotFound([](AsyncWebServerRequest * request)
320338
{

examples/Async_ESP32_FSWebServer_DRD/Async_ESP32_FSWebServer_DRD.ino

Lines changed: 55 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,27 @@
5353
#include <WiFiClient.h>
5454
#include <ESPmDNS.h>
5555

56-
// These defines must be put before #include <ESP_DoubleResetDetector.h>
57-
// to select where to store DoubleResetDetector's variable.
58-
// For ESP32, You must select one to be true (EEPROM or SPIFFS)
59-
// Otherwise, library will use default EEPROM storage
60-
#define ESP_DRD_USE_EEPROM false
56+
// You only need to format the filesystem once
57+
//#define FORMAT_FILESYSTEM true
58+
#define FORMAT_FILESYSTEM false
59+
60+
#define USE_SPIFFS true
61+
62+
#if USE_SPIFFS
63+
#include <SPIFFS.h>
64+
FS* filesystem = &SPIFFS;
65+
#define FILESYSTEM SPIFFS
6166
#define ESP_DRD_USE_SPIFFS true
67+
#else
68+
// Use FFat
69+
#include <FFat.h>
70+
FS* filesystem = &FFat;
71+
#define FILESYSTEM FFat
72+
//#define ESP_DRD_USE_EEPROM true
73+
#define ESP_DRD_USE_SPIFFS true
74+
#endif
75+
76+
#include <SPIFFSEditor.h>
6277

6378
#define DOUBLERESETDETECTOR_DEBUG true //false
6479

@@ -72,31 +87,12 @@
7287
#define DRD_ADDRESS 0
7388

7489
//DoubleResetDetector drd(DRD_TIMEOUT, DRD_ADDRESS);
75-
DoubleResetDetector* drd;
90+
DoubleResetDetector* drd = NULL;
7691
//////
7792

7893
// Indicates whether ESP has WiFi credentials saved from previous session, or double reset detected
7994
bool initialConfig = false;
8095

81-
// You only need to format the filesystem once
82-
//#define FORMAT_FILESYSTEM true
83-
#define FORMAT_FILESYSTEM false
84-
85-
#define USE_SPIFFS false //true
86-
87-
#if USE_SPIFFS
88-
#include <SPIFFS.h>
89-
FS* filesystem = &SPIFFS;
90-
#define FILESYSTEM SPIFFS
91-
#else
92-
// Use FFat
93-
#include <FFat.h>
94-
FS* filesystem = &FFat;
95-
#define FILESYSTEM FFat
96-
#endif
97-
98-
#include <SPIFFSEditor.h>
99-
10096
// SSID and PW for Config Portal
10197
String ssid = "ESP_" + String((uint32_t)ESP.getEfuseMac(), HEX);
10298
const char* password = "your_password";
@@ -207,20 +203,34 @@ void setup(void)
207203
Serial.begin(115200);
208204
while (!Serial);
209205

210-
#if USE_SPIFFS
211-
Serial.println("\nStarting Async_ESP32_FSWebServer_DRD using USE_SPIFFS on " + String(ARDUINO_BOARD));
212-
#else
213-
Serial.println("\nStarting Async_ESP32_FSWebServer_DRD using FFat on " + String(ARDUINO_BOARD));
214-
#endif
215-
216206
Serial.setDebugOutput(false);
217207

218-
drd = new DoubleResetDetector(DRD_TIMEOUT, DRD_ADDRESS);
208+
bool FileFSReady = true;
219209

220210
if (FORMAT_FILESYSTEM)
221211
FILESYSTEM.format();
222212

213+
#if USE_SPIFFS
214+
Serial.println("\nStarting Async_ESP32_FSWebServer_DRD using USE_SPIFFS on " + String(ARDUINO_BOARD));
215+
216+
// Format SPIFFS if not yet
217+
if (!FILESYSTEM.begin(true))
218+
{
219+
Serial.println(F("SPIFFS failed! Formatting."));
220+
221+
if (!FILESYSTEM.begin())
222+
{
223+
Serial.println(F("SPIFFS failed!"));
224+
FileFSReady = false;
225+
}
226+
}
227+
#else
228+
Serial.println("\nStarting Async_ESP32_FSWebServer_DRD using FFat on " + String(ARDUINO_BOARD));
229+
223230
FILESYSTEM.begin();
231+
#endif
232+
233+
if (FileFSReady)
224234
{
225235
File root = FILESYSTEM.open("/");
226236
File file = root.openNextFile();
@@ -238,6 +248,11 @@ void setup(void)
238248
Serial.println();
239249
}
240250

251+
drd = new DoubleResetDetector(DRD_TIMEOUT, DRD_ADDRESS);
252+
253+
if (!drd)
254+
Serial.println(F("Can't instantiate. Disable DRD feature"));
255+
241256
unsigned long startedAt = millis();
242257

243258
//Local intialization. Once its business is done, there is no need to keep it around
@@ -288,7 +303,7 @@ void setup(void)
288303
initialConfig = true;
289304
}
290305

291-
if (drd->detectDoubleReset())
306+
if (drd && drd->detectDoubleReset())
292307
{
293308
// DRD, disable timeout.
294309
ESPAsync_wifiManager.setConfigPortalTimeout(0);
@@ -353,14 +368,16 @@ void setup(void)
353368

354369
server.addHandler(&events);
355370

356-
server.addHandler(new SPIFFSEditor(SPIFFS, http_username, http_password));
357-
358371
server.on("/heap", HTTP_GET, [](AsyncWebServerRequest * request)
359372
{
360373
request->send(200, "text/plain", String(ESP.getFreeHeap()));
361374
});
362375

363-
server.serveStatic("/", SPIFFS, "/").setDefaultFile("index.htm");
376+
if (FileFSReady)
377+
{
378+
server.addHandler(new SPIFFSEditor(SPIFFS, http_username, http_password));
379+
server.serveStatic("/", SPIFFS, "/").setDefaultFile("index.htm");
380+
}
364381

365382
server.onNotFound([](AsyncWebServerRequest * request)
366383
{
@@ -463,5 +480,6 @@ void loop(void)
463480
// so that it can recognise when the timeout expires.
464481
// You can also call drd.stop() when you wish to no longer
465482
// consider the next reset as a double reset.
466-
drd->loop();
483+
if (drd)
484+
drd->loop();
467485
}

examples/Async_ESP_FSWebServer/Async_ESP_FSWebServer.ino

Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
How To Use:
3434
1) access the sample web page at http://async-esp8266fs.local
3535
2) edit the page by going to http://async-esp8266fs.local/edit
36-
3. Use configurable user/password to login. Default is admin/admin
36+
3) Use configurable user/password to login. Default is admin/admin
3737
*****************************************************************************************************************************/
3838

3939
#if !defined(ESP8266)
@@ -56,23 +56,23 @@
5656
#include <ESP8266mDNS.h>
5757
#include <FS.h>
5858

59-
#include <SPIFFSEditor.h>
60-
6159
// You only need to format the filesystem once
62-
//#define FORMAT_FILESYSTEM true
63-
#define FORMAT_FILESYSTEM false
60+
//#define FORMAT_FILESYSTEM true
61+
#define FORMAT_FILESYSTEM false
6462

65-
#define USE_LITTLEFS true
63+
#define USE_LITTLEFS true
6664

6765
#if USE_LITTLEFS
6866
#include <LittleFS.h>
6967
FS* filesystem = &LittleFS;
70-
#define FILESYSTEM LittleFS
68+
#define FILESYSTEM LittleFS
7169
#else
7270
FS* filesystem = &SPIFFS;
73-
#define FILESYSTEM SPIFFS
71+
#define FILESYSTEM SPIFFS
7472
#endif
7573

74+
#include <SPIFFSEditor.h>
75+
7676
#define ESP_getChipId() (ESP.getChipId())
7777

7878
// SSID and PW for Config Portal
@@ -196,21 +196,37 @@ void setup(void)
196196
Serial.begin(115200);
197197
while (!Serial);
198198

199+
Serial.setDebugOutput(false);
200+
199201
#if USE_LITTLEFS
200202
Serial.println("\nStarting Async_ESP_FSWebServer using LittleFS on " + String(ARDUINO_BOARD));
201203
#else
202204
Serial.println("\nStarting Async_ESP_FSWebServer using deprecated SPIFFS on " + String(ARDUINO_BOARD));
203205
#endif
204206

205-
Serial.setDebugOutput(false);
207+
bool FileFSReady = true;
206208

207-
FILESYSTEM.begin();
208-
{
209-
// Uncomment to format FS. Remember to uncomment after done
209+
// Uncomment to force FS format. Remember to uncomment after done
210210
#if FORMAT_FILESYSTEM
211211
FILESYSTEM.format();
212212
#endif
213+
214+
// Format LittleFS/SPIFFS if not yet
215+
if (!FILESYSTEM.begin())
216+
{
217+
Serial.println(F("FileFS failed! Formatting."));
213218

219+
FILESYSTEM.format();
220+
221+
if (!FILESYSTEM.begin())
222+
{
223+
Serial.println(F("FileFS failed!"));
224+
FileFSReady = false;
225+
}
226+
}
227+
228+
if (FileFSReady)
229+
{
214230
Dir dir = FILESYSTEM.openDir("/");
215231
Serial.println("Opening / directory");
216232

@@ -223,7 +239,7 @@ void setup(void)
223239
}
224240

225241
Serial.println();
226-
}
242+
}
227243

228244
unsigned long startedAt = millis();
229245

@@ -319,15 +335,16 @@ void setup(void)
319335

320336
server.addHandler(&events);
321337

322-
server.addHandler(new SPIFFSEditor(http_username, http_password, FILESYSTEM));
323-
324338
server.on("/heap", HTTP_GET, [](AsyncWebServerRequest * request)
325339
{
326340
request->send(200, "text/plain", String(ESP.getFreeHeap()));
327341
});
328342

329-
server.serveStatic("/", FILESYSTEM, "/").setDefaultFile("index.htm");
330-
343+
if (FileFSReady)
344+
{
345+
server.addHandler(new SPIFFSEditor(http_username, http_password, FILESYSTEM));
346+
server.serveStatic("/", FILESYSTEM, "/").setDefaultFile("index.htm");
347+
}
331348

332349
server.onNotFound([](AsyncWebServerRequest * request)
333350
{

0 commit comments

Comments
 (0)