From 9d6815cb0512341636cd40e3227e7ed4148d829d Mon Sep 17 00:00:00 2001 From: Rune Harlyk Date: Mon, 22 Apr 2024 21:32:50 +0200 Subject: [PATCH] Restuctures template --- esp32/build_settings.ini | 7 +- esp32/features.ini | 4 +- esp32/lib/ESP32-sveltekit/ESP32SvelteKit.cpp | 261 +++++++++---------- esp32/lib/ESP32-sveltekit/ESP32SvelteKit.h | 8 +- 4 files changed, 139 insertions(+), 141 deletions(-) diff --git a/esp32/build_settings.ini b/esp32/build_settings.ini index 5ea3260..c3fe9c1 100644 --- a/esp32/build_settings.ini +++ b/esp32/build_settings.ini @@ -3,6 +3,7 @@ build_flags = -D BUILD_TARGET=\"$PIOENV\" -D ESP32SVELTEKIT_RUNNING_CORE=0 -D EMBED_WWW - ;-D ENABLE_CORS - ;-D SERIAL_INFO - ;-D CORS_ORIGIN=\"*\" \ No newline at end of file + -D SERVE_CONFIG_FILES + -D CORS_ORIGIN=\"*\" + -D ENABLE_CORS + ;-D SERIAL_INFO \ No newline at end of file diff --git a/esp32/features.ini b/esp32/features.ini index e93cf45..8b08106 100644 --- a/esp32/features.ini +++ b/esp32/features.ini @@ -2,9 +2,9 @@ build_flags = -D FT_BATTERY=0 -D FT_NTP=1 - -D FT_SECURITY=1 + -D FT_SECURITY=0 -D FT_MQTT=1 - -D FT_SLEEP=0 + -D FT_SLEEP=1 -D FT_UPLOAD_FIRMWARE=1 -D FT_DOWNLOAD_FIRMWARE=1 -D FT_ANALYTICS=1 diff --git a/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.cpp b/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.cpp index 7c780a8..e500673 100644 --- a/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.cpp +++ b/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.cpp @@ -7,6 +7,7 @@ * * Copyright (C) 2018 - 2023 rjwats * Copyright (C) 2024 theelims + * Copyright (C) 2024 runeharlyk * * All Rights Reserved. This software may be modified and distributed under * the terms of the LGPL v3 license. See the LICENSE file for details. @@ -14,191 +15,183 @@ #include -ESP32SvelteKit::ESP32SvelteKit(PsychicHttpServer *server, unsigned int numberEndpoints) : _server(server), - _numberEndpoints(numberEndpoints), - _featureService(server), - _securitySettingsService(server, &ESPFS), - _wifiSettingsService(server, &ESPFS, &_securitySettingsService, &_socket), - _wifiScanner(server, &_securitySettingsService), - _wifiStatus(server, &_securitySettingsService), - _apSettingsService(server, &ESPFS, &_securitySettingsService), - _apStatus(server, &_securitySettingsService, &_apSettingsService), - _socket(server, &_securitySettingsService, AuthenticationPredicates::IS_AUTHENTICATED), +ESP32SvelteKit::ESP32SvelteKit(PsychicHttpServer *server, unsigned int numberEndpoints) + : _server(server), _numberEndpoints(numberEndpoints), + _featureService(server), _securitySettingsService(server, &ESPFS), + _wifiSettingsService(server, &ESPFS, &_securitySettingsService, &_socket), + _wifiScanner(server, &_securitySettingsService), + _wifiStatus(server, &_securitySettingsService), + _apSettingsService(server, &ESPFS, &_securitySettingsService), + _apStatus(server, &_securitySettingsService, &_apSettingsService), + _socket(server, &_securitySettingsService, AuthenticationPredicates::IS_AUTHENTICATED), #if FT_ENABLED(FT_NTP) - _ntpSettingsService(server, &ESPFS, &_securitySettingsService), - _ntpStatus(server, &_securitySettingsService), + _ntpSettingsService(server, &ESPFS, &_securitySettingsService), + _ntpStatus(server, &_securitySettingsService), #endif #if FT_ENABLED(FT_UPLOAD_FIRMWARE) - _uploadFirmwareService(server, &_securitySettingsService), + _uploadFirmwareService(server, &_securitySettingsService), #endif #if FT_ENABLED(FT_DOWNLOAD_FIRMWARE) - _downloadFirmwareService(server, &_securitySettingsService, &_socket), + _downloadFirmwareService(server, &_securitySettingsService, &_socket), #endif #if FT_ENABLED(FT_MQTT) - _mqttSettingsService(server, &ESPFS, &_securitySettingsService), - _mqttStatus(server, &_mqttSettingsService, &_securitySettingsService), + _mqttSettingsService(server, &ESPFS, &_securitySettingsService), + _mqttStatus(server, &_mqttSettingsService, &_securitySettingsService), #endif #if FT_ENABLED(FT_SECURITY) - _authenticationService(server, &_securitySettingsService), + _authenticationService(server, &_securitySettingsService), #endif #if FT_ENABLED(FT_SLEEP) - _sleepService(server, &_securitySettingsService), + _sleepService(server, &_securitySettingsService), #endif #if FT_ENABLED(FT_BATTERY) - _batteryService(&_socket), + _batteryService(&_socket), #endif #if FT_ENABLED(FT_ANALYTICS) - _analyticsService(&_socket), + _analyticsService(&_socket), #endif - _restartService(server, &_securitySettingsService), - _factoryResetService(server, &ESPFS, &_securitySettingsService), - _systemStatus(server, &_securitySettingsService) -{ + _restartService(server, &_securitySettingsService), + _factoryResetService(server, &ESPFS, &_securitySettingsService), + _systemStatus(server, &_securitySettingsService) { } -void ESP32SvelteKit::begin() -{ - ESP_LOGV("ESP32SvelteKit", "Loading settings from files system"); - ESPFS.begin(true); +void ESP32SvelteKit::begin() { + ESP_LOGV("ESP32SvelteKit", "Loading settings from files system"); + ESP_LOGI("Running Firmware Version: %s\n", APP_VERSION); + ESPFS.begin(true); - _wifiSettingsService.initWiFi(); + _wifiSettingsService.initWiFi(); - // SvelteKit uses a lot of handlers, so we need to increase the max_uri_handlers - // WWWData has 77 Endpoints, Framework has 27, and Lighstate Demo has 4 - _server->config.max_uri_handlers = _numberEndpoints; - _server->listen(80); + setupServer(); + + setupMDNS(); + + startServices(); + + ESP_LOGV("ESP32SvelteKit", "Starting loop task"); + xTaskCreatePinnedToCore(this->_loopImpl, "ESP32 SvelteKit Loop", 4096, this, + (tskIDLE_PRIORITY + 1), NULL, + ESP32SVELTEKIT_RUNNING_CORE); +} + +void ESP32SvelteKit::setupServer() { + _server->config.max_uri_handlers = _numberEndpoints; + _server->listen(80); #ifdef EMBED_WWW - // Serve static resources from PROGMEM - ESP_LOGV("ESP32SvelteKit", "Registering routes from PROGMEM static resources"); - WWWData::registerRoutes( - [&](const String &uri, const String &contentType, const uint8_t *content, size_t len) - { - PsychicHttpRequestCallback requestHandler = [contentType, content, len](PsychicRequest *request) - { - PsychicResponse response(request); - response.setCode(200); - response.setContentType(contentType.c_str()); - response.addHeader("Content-Encoding", "gzip"); - response.addHeader("Cache-Control", "public, immutable, max-age=31536000"); - response.setContent(content, len); - return response.send(); - }; - PsychicWebHandler *handler = new PsychicWebHandler(); - handler->onRequest(requestHandler); - _server->on(uri.c_str(), HTTP_GET, handler); + // Serve static resources from PROGMEM + ESP_LOGV("ESP32SvelteKit", + "Registering routes from PROGMEM static resources"); + WWWData::registerRoutes([&](const String &uri, const String &contentType, const uint8_t *content, size_t len) { + PsychicHttpRequestCallback requestHandler = [contentType, content, len](PsychicRequest *request) { + PsychicResponse response(request); + response.setCode(200); + response.setContentType(contentType.c_str()); + response.addHeader("Content-Encoding", "gzip"); + response.addHeader("Cache-Control", "public, immutable, max-age=31536000"); + response.setContent(content, len); + return response.send(); + }; + PsychicWebHandler *handler = new PsychicWebHandler(); + handler->onRequest(requestHandler); + _server->on(uri.c_str(), HTTP_GET, handler); - // Set default end-point for all non matching requests - // this is easier than using webServer.onNotFound() - if (uri.equals("/index.html")) - { - _server->defaultEndpoint->setHandler(handler); - } - }); + // Set default end-point for all non matching requests + // this is easier than using webServer.onNotFound() + if (uri.equals("/index.html")) { + _server->defaultEndpoint->setHandler(handler); + } + }); #else - // Serve static resources from /www/ - ESP_LOGV("ESP32SvelteKit", "Registering routes from FS /www/ static resources"); - _server->serveStatic("/_app/", ESPFS, "/www/_app/"); - _server->serveStatic("/favicon.png", ESPFS, "/www/favicon.png"); - // Serving all other get requests with "/www/index.htm" - _server->onNotFound([](PsychicRequest *request) - { - if (request->method() == HTTP_GET) { - PsychicFileResponse response(request, ESPFS, "/www/index.html", "text/html"); - return response.send(); - // String url = "http://" + request->host() + "/index.html"; - // request->redirect(url.c_str()); - } }); + // Serve static resources from /www/ + ESP_LOGV("ESP32SvelteKit", + "Registering routes from FS /www/ static resources"); + _server->serveStatic("/_app/", ESPFS, "/www/_app/"); + _server->serveStatic("/favicon.png", ESPFS, "/www/favicon.png"); + // Serving all other get requests with "/www/index.htm" + _server->onNotFound([](PsychicRequest *request) { + if (request->method() == HTTP_GET) { + PsychicFileResponse response(request, ESPFS, "/www/index.html", + "text/html"); + return response.send(); + // String url = "http://" + request->host() + "/index.html"; + // request->redirect(url.c_str()); + } + }); #endif #ifdef SERVE_CONFIG_FILES - _server->serveStatic("/config/", ESPFS, "/config/"); -#endif - - // Serve static resources from /config/ if set by platformio.ini -#if SERVE_CONFIG_FILES - _server->serveStatic("/config/", ESPFS, "/config/"); + _server->serveStatic("/config/", ESPFS, "/config/"); #endif #if defined(ENABLE_CORS) - ESP_LOGV("ESP32SvelteKit", "Enabling CORS headers"); - DefaultHeaders::Instance().addHeader("Access-Control-Allow-Origin", CORS_ORIGIN); - DefaultHeaders::Instance().addHeader("Access-Control-Allow-Headers", "Accept, Content-Type, Authorization"); - DefaultHeaders::Instance().addHeader("Access-Control-Allow-Credentials", "true"); + ESP_LOGV("ESP32SvelteKit", "Enabling CORS headers"); + DefaultHeaders::Instance().addHeader("Access-Control-Allow-Origin", + CORS_ORIGIN); + DefaultHeaders::Instance().addHeader("Access-Control-Allow-Headers", + "Accept, Content-Type, Authorization"); + DefaultHeaders::Instance().addHeader("Access-Control-Allow-Credentials", + "true"); #endif +} - ESP_LOGV("ESP32SvelteKit", "Starting MDNS"); - MDNS.begin(_wifiSettingsService.getHostname().c_str()); - MDNS.setInstanceName(_appName); - MDNS.addService("http", "tcp", 80); - MDNS.addService("ws", "tcp", 80); - MDNS.addServiceTxt("http", "tcp", "Firmware Version", APP_VERSION); +void ESP32SvelteKit::setupMDNS() { + ESP_LOGV("ESP32SvelteKit", "Starting MDNS"); + MDNS.begin(_wifiSettingsService.getHostname().c_str()); + MDNS.setInstanceName(_appName); + MDNS.addService("http", "tcp", 80); + MDNS.addService("ws", "tcp", 80); + MDNS.addServiceTxt("http", "tcp", "Firmware Version", APP_VERSION); +} -#ifdef SERIAL_INFO - Serial.printf("Running Firmware Version: %s\n", APP_VERSION); -#endif - - // Start the services - _apStatus.begin(); - _socket.begin(); - _apSettingsService.begin(); - _factoryResetService.begin(); - _featureService.begin(); - _restartService.begin(); - _systemStatus.begin(); - _wifiSettingsService.begin(); - _wifiScanner.begin(); - _wifiStatus.begin(); +void ESP32SvelteKit::startServices() { + // Start the services + _apStatus.begin(); + _socket.begin(); + _apSettingsService.begin(); + _factoryResetService.begin(); + _featureService.begin(); + _restartService.begin(); + _systemStatus.begin(); + _wifiSettingsService.begin(); + _wifiScanner.begin(); + _wifiStatus.begin(); #if FT_ENABLED(FT_UPLOAD_FIRMWARE) - _uploadFirmwareService.begin(); + _uploadFirmwareService.begin(); #endif #if FT_ENABLED(FT_DOWNLOAD_FIRMWARE) - _downloadFirmwareService.begin(); + _downloadFirmwareService.begin(); #endif #if FT_ENABLED(FT_NTP) - _ntpSettingsService.begin(); - _ntpStatus.begin(); + _ntpSettingsService.begin(); + _ntpStatus.begin(); #endif #if FT_ENABLED(FT_MQTT) - _mqttSettingsService.begin(); - _mqttStatus.begin(); + _mqttSettingsService.begin(); + _mqttStatus.begin(); #endif #if FT_ENABLED(FT_SECURITY) - _authenticationService.begin(); - _securitySettingsService.begin(); + _authenticationService.begin(); + _securitySettingsService.begin(); #endif #if FT_ENABLED(FT_ANALYTICS) - _analyticsService.begin(); + _analyticsService.begin(); #endif #if FT_ENABLED(FT_SLEEP) - _sleepService.begin(); + _sleepService.begin(); #endif #if FT_ENABLED(FT_BATTERY) - _batteryService.begin(); + _batteryService.begin(); #endif - - // Start the loop task - ESP_LOGV("ESP32SvelteKit", "Starting loop task"); - xTaskCreatePinnedToCore( - this->_loopImpl, // Function that should be called - "ESP32 SvelteKit Loop", // Name of the task (for debugging) - 4096, // Stack size (bytes) - this, // Pass reference to this class instance - (tskIDLE_PRIORITY + 1), // task priority - NULL, // Task handle - ESP32SVELTEKIT_RUNNING_CORE // Pin to application core - ); } -void ESP32SvelteKit::_loop() -{ - while (1) - { - _wifiSettingsService.loop(); // 30 seconds - _apSettingsService.loop(); // 10 seconds +void ESP32SvelteKit::_loop() { + while (1) { + _wifiSettingsService.loop(); // 30 seconds + _apSettingsService.loop(); // 10 seconds #if FT_ENABLED(FT_MQTT) - _mqttSettingsService.loop(); // 5 seconds + _mqttSettingsService.loop(); // 5 seconds #endif - vTaskDelay(20 / portTICK_PERIOD_MS); - } + vTaskDelay(20 / portTICK_PERIOD_MS); + } } diff --git a/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.h b/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.h index 6f41932..baad7eb 100644 --- a/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.h +++ b/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.h @@ -10,6 +10,7 @@ * * Copyright (C) 2018 - 2023 rjwats * Copyright (C) 2023 theelims + * Copyright (C) 2024 runeharlyk * * All Rights Reserved. This software may be modified and distributed under * the terms of the LGPL v3 license. See the LICENSE file for details. @@ -52,11 +53,11 @@ #endif #ifndef APP_VERSION -#define APP_VERSION "demo" +#define APP_VERSION "v1" #endif #ifndef APP_NAME -#define APP_NAME "ESP32 SvelteKit Demo" +#define APP_NAME "SpotMicro" #endif #ifndef ESP32SVELTEKIT_RUNNING_CORE @@ -206,6 +207,9 @@ private: protected: static void _loopImpl(void *_this) { static_cast(_this)->_loop(); } void _loop(); + void setupServer(); + void setupMDNS(); + void startServices(); }; #endif