async server introduction

This commit is contained in:
cjkas 2026-03-21 19:21:03 +01:00
parent 984a2106f3
commit f83c408fe7
4 changed files with 58 additions and 9 deletions

View file

@ -133,12 +133,12 @@ def minify_svg(text: str) -> str:
MINIFIERS = {
".html": minify_html,
".htm": minify_html,
".css": minify_css,
# ".html": minify_html,
# ".htm": minify_html,
# ".css": minify_css,
# ".js": minify_js,
# ".json": minify_json,
".svg": minify_svg,
# ".svg": minify_svg,
# ".xml": minify_svg, # same approach works for generic XML
}

View file

@ -20,11 +20,12 @@ lib_deps =
links2004/WebSockets@^2.7.3
lsatan/SmartRC-CC1101-Driver-Lib@^2.5.7
knolleary/PubSubClient@^2.8
esp32async/ESPAsyncWebServer @ ^3.10.3
extra_scripts = pre:minify.py
board_build.partitions = min_spiffs.csv
board_build.partitions = huge_app.csv
board_build.filesystem = littlefs
build_flags =
-DCONFIG_ESP_COREDUMP_ENABLE_TO_FLASH=1
-DCONFIG_ESP_COREDUMP_ENABLE_TO_FLASH=1
-DCONFIG_ESP_COREDUMP_ENABLE_TO_UART=1
-DCONFIG_ESP_COREDUMP_DATA_FORMAT_ELF=1
-DCONFIG_ESP_COREDUMP_CHECKSUM_CRC32=1
@ -47,7 +48,7 @@ lib_deps =
lsatan/SmartRC-CC1101-Driver-Lib@^2.5.7
knolleary/PubSubClient@^2.8
extra_scripts = pre:minify.py
board_build.partitions = min_spiffs.csv
board_build.partitions = huge_app.csv
board_build.filesystem = littlefs
[env:esp32c3dev]

View file

@ -24,11 +24,41 @@ GitUpdater git;
uint32_t oldheap = 0;
void listDir(const char *dirname, uint8_t levels) {
Serial.printf("Listing: %s\n", dirname);
File root = LittleFS.open(dirname);
if (!root || !root.isDirectory()) {
Serial.println("Failed to open directory");
return;
}
File file = root.openNextFile();
while (file) {
if (file.isDirectory()) {
Serial.printf(" DIR : %s\n", file.name());
if (levels) listDir(file.path(), levels - 1);
} else {
Serial.printf(" FILE: %-30s %d bytes\n", file.name(), file.size());
}
file = root.openNextFile();
}
}
void setup() {
Serial.begin(115200);
Serial.println();
log_i("Startup/Boot....");
log_i("Mounting File System...");
Serial.println("Startup/Boot....");
Serial.println("Mounting File System...");
if (LittleFS.begin()) {
Serial.printf("\nTotal: %d bytes\n", LittleFS.totalBytes());
Serial.printf("Used: %d bytes\n", LittleFS.usedBytes());
Serial.printf("Free: %d bytes\n", LittleFS.totalBytes() - LittleFS.usedBytes());
Serial.println();
listDir("/", 3);
} else {
Serial.println("LittleFS mount failed!");
}
if(LittleFS.begin()) Serial.println("File system mounted successfully");
else Serial.println("Error mounting file system");

View file

@ -14,6 +14,8 @@
#include "MQTT.h"
#include "GitOTA.h"
#include "Network.h"
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>
extern ConfigSettings settings;
extern SSDPClass SSDP;
@ -40,8 +42,24 @@ static const char _encoding_json[] = "application/json";
WebServer apiServer(8081);
WebServer server(80);
AsyncWebServer aserver(81);
void Web::startup() {
Serial.println("Launching web server...");
aserver.serveStatic("/", LittleFS, "/").setDefaultFile("index.html");
aserver.on("/loginContext", HTTP_GET, [](AsyncWebServerRequest *request) {
AsyncJsonResponse *response = new AsyncJsonResponse();
JsonObject root = response->getRoot().to<JsonObject>();
root["type"] = static_cast<uint8_t>(settings.Security.type);
root["permissions"] = settings.Security.permissions;
root["serverId"] = settings.serverId;
root["version"] = settings.fwVersion.name;
root["model"] = "ESPSomfyRTS";
root["hostname"] = settings.hostname;
response->setLength();
request->send(response);
});
aserver.begin();
}
void Web::loop() {
server.handleClient();