PlatformionIO Problem Code Bulding

Hi ich habe Problem ich wollt diese Projekt machen GitHub - mzashh/HUB75-Pixel-Art-Display: A WIFI enabled LED Pixel Art Display based on HUB75 panels driven by the ESP32

PlatformionIO

Ich habe die Libraries

/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/.pio/libdeps/nodemcu-32s

Kopiert und

main.cpp

webpages.h

webserver.ino

sind in /home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src

Wenn ich den Code Build kommt diese Wall auf Text

*  Executing task in folder HUB75-Pixel-Art-Display: platformio run 

Processing nodemcu-32s (platform: espressif32; board: nodemcu-32s; framework: arduino)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/nodemcu-32s.html
PLATFORM: Espressif 32 (6.10.0) > NodeMCU-32S
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES: 
 - framework-arduinoespressif32 @ 3.20017.241212+sha.dcc1105b 
 - tool-esptoolpy @ 1.40501.0 (4.5.1) 
 - toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5
Converting webserver.ino
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 40 compatible libraries
Scanning dependencies...
Dependency Graph
|-- AnimatedGIF @ 2.2.0
|-- AsyncTCP @ 3.4.2
|-- ESP32 HUB75 LED MATRIX PANEL DMA Display @ 3.0.12
|-- ESPAsyncWebServer @ 3.7.7
|-- GFX_Lite @ 1.0.0
|-- LittleFS @ 2.0.0
|-- WiFi @ 2.0.0
Building in release mode
Compiling .pio/build/nodemcu-32s/src/main.cpp.o
Compiling .pio/build/nodemcu-32s/src/webserver.ino.cpp.o
In file included from src/main.cpp:9:
.pio/libdeps/nodemcu-32s/ESP32-HUB75-MatrixPanel-DMA-master/src/ESP32-HUB75-MatrixPanel-I2S-DMA.h:19:12: fatal error: Adafruit_GFX.h: No such file or directory

**********************************************************************
* Looking for Adafruit_GFX.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:Adafruit_GFX.h"
* Web  > https://registry.platformio.org/search?q=header:Adafruit_GFX.h
*
**********************************************************************

   #include "Adafruit_GFX.h" // Adafruit class with all the other stuff
            ^~~~~~~~~~~~~~~~
compilation terminated.
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:3:15: error: variable or field 'notFound' declared void
 String processor(const String& var) {
               ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:3:15: error: 'AsyncWebServerRequest' was not declared in this scope
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:3:38: error: 'request' was not declared in this scope
 String processor(const String& var) {
                                      ^      
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:3:38: note: suggested alternative: 'renameat'
 String processor(const String& var) {
                                      ^      
                                      renameat
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:4:23: error: 'AsyncWebServerRequest' was not declared in this scope
   if (var == "FIRMWARE") {
                       ^~~~                 
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:4:47: error: 'request' was not declared in this scope
   if (var == "FIRMWARE") {
                                               ^      
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:4:47: note: suggested alternative: 'renameat'
   if (var == "FIRMWARE") {
                                               ^      
                                               renameat
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:5:19: error: variable or field 'handleUpload' declared void
     return FIRMWARE_VERSION;
                   ^~~~~~~~~~           
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:5:19: error: 'AsyncWebServerRequest' was not declared in this scope
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:5:42: error: 'request' was not declared in this scope
     return FIRMWARE_VERSION;
                                          ^      
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:5:42: note: suggested alternative: 'renameat'
     return FIRMWARE_VERSION;
                                          ^      
                                          renameat
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:5:58: error: expected primary-expression before 'filename'
     return FIRMWARE_VERSION;
                                                          ^       
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:5:75: error: expected primary-expression before 'index'
     return FIRMWARE_VERSION;
                                                                           ^    
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:5:90: error: expected primary-expression before '*' token
     return FIRMWARE_VERSION;
                                                                                          ^
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:5:91: error: 'data' was not declared in this scope
     return FIRMWARE_VERSION;
                                                                                           ^   
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:5:91: note: suggested alternative: 'atan'
     return FIRMWARE_VERSION;
                                                                                           ^   
                                                                                           atan
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:5:104: error: expected primary-expression before 'len'
     return FIRMWARE_VERSION;
                                                                                                        ^  
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:5:109: error: expected primary-expression before 'bool'
     return FIRMWARE_VERSION;
                                                                                                             ^   
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'String processor(const String&)':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:5:12: error: 'FIRMWARE_VERSION' was not declared in this scope
     return FIRMWARE_VERSION;
            ^~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:5:12: note: suggested alternative: 'ESP_IDF_VERSION'
     return FIRMWARE_VERSION;
            ^~~~~~~~~~~~~~~~
            ESP_IDF_VERSION
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:9:31: error: 'LittleFS' was not declared in this scope
     return humanReadableSize((LittleFS.totalBytes() - LittleFS.usedBytes()));
                               ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:9:31: note: suggested alternative: 'bitClear'
     return humanReadableSize((LittleFS.totalBytes() - LittleFS.usedBytes()));
                               ^~~~~~~~
                               bitClear
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:9:12: error: 'humanReadableSize' was not declared in this scope
     return humanReadableSize((LittleFS.totalBytes() - LittleFS.usedBytes()));
            ^~~~~~~~~~~~~~~~~
Compiling .pio/build/nodemcu-32s/lib204/GFX_Lite-main/GFX_Lite.cpp.o
*** [.pio/build/nodemcu-32s/src/main.cpp.o] Error 1
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:13:30: error: 'LittleFS' was not declared in this scope
     return humanReadableSize(LittleFS.usedBytes());
                              ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:13:30: note: suggested alternative: 'bitClear'
     return humanReadableSize(LittleFS.usedBytes());
                              ^~~~~~~~
                              bitClear
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:13:12: error: 'humanReadableSize' was not declared in this scope
     return humanReadableSize(LittleFS.usedBytes());
            ^~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:17:30: error: 'LittleFS' was not declared in this scope
     return humanReadableSize(LittleFS.totalBytes());
                              ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:17:30: note: suggested alternative: 'bitClear'
     return humanReadableSize(LittleFS.totalBytes());
                              ^~~~~~~~
                              bitClear
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:17:12: error: 'humanReadableSize' was not declared in this scope
     return humanReadableSize(LittleFS.totalBytes());
            ^~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:21:12: error: 'sliderValue' was not declared in this scope
     return sliderValue;
            ^~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:30:3: error: 'server' was not declared in this scope
   server->onNotFound(notFound);
   ^~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:30:3: note: suggested alternative: 'Server'
   server->onNotFound(notFound);
   ^~~~~~
   Server
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:30:22: error: 'notFound' was not declared in this scope
   server->onNotFound(notFound);
                      ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:30:22: note: suggested alternative: 'noTone'
   server->onNotFound(notFound);
                      ^~~~~~~~
                      noTone
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:33:24: error: 'handleUpload' was not declared in this scope
   server->onFileUpload(handleUpload);
                        ^~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:36:25: error: 'HTTP_GET' was not declared in this scope
   server->on("/logout", HTTP_GET, [](AsyncWebServerRequest * request) {
                         ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:36:25: note: suggested alternative: 'DST_MET'
   server->on("/logout", HTTP_GET, [](AsyncWebServerRequest * request) {
                         ^~~~~~~~
                         DST_MET
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:36:38: error: 'AsyncWebServerRequest' has not been declared
   server->on("/logout", HTTP_GET, [](AsyncWebServerRequest * request) {
                                      ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:37:14: error: request for member 'requestAuthentication' in '* request', which is of non-class type 'int'
     request->requestAuthentication();
              ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:38:14: error: request for member 'send' in '* request', which is of non-class type 'int'
     request->send(401);
              ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:42:42: error: 'AsyncWebServerRequest' has not been declared
   server->on("/logged-out", HTTP_GET, [](AsyncWebServerRequest * request) {
                                          ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:43:46: error: request for member 'client' in '* request', which is of non-class type 'int'
     String logmessage = "Client:" + request->client()->remoteIP().toString() + " " + request->url();
                                              ^~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:43:95: error: request for member 'url' in '* request', which is of non-class type 'int'
     String logmessage = "Client:" + request->client()->remoteIP().toString() + " " + request->url();
                                                                                               ^~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:45:14: error: request for member 'send_P' in '* request', which is of non-class type 'int'
     request->send_P(401, "text/html", logout_html, processor);
              ^~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:45:39: error: 'logout_html' was not declared in this scope
     request->send_P(401, "text/html", logout_html, processor);
                                       ^~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:48:32: error: 'AsyncWebServerRequest' has not been declared
   server->on("/", HTTP_GET, [](AsyncWebServerRequest * request) {
                                ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:49:46: error: request for member 'client' in '* request', which is of non-class type 'int'
     String logmessage = "Client:" + request->client()->remoteIP().toString() + + " " + request->url();
                                              ^~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:49:97: error: request for member 'url' in '* request', which is of non-class type 'int'
     String logmessage = "Client:" + request->client()->remoteIP().toString() + + " " + request->url();
                                                                                                 ^~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:51:33: error: 'checkUserWebAuth' cannot be used as a function
     if (checkUserWebAuth(request)) {
                                 ^
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:54:16: error: request for member 'send_P' in '* request', which is of non-class type 'int'
       request->send_P(200, "text/html", index_html, processor);
                ^~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:54:41: error: 'index_html' was not declared in this scope
       request->send_P(200, "text/html", index_html, processor);
                                         ^~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:54:41: note: suggested alternative: 'index'
       request->send_P(200, "text/html", index_html, processor);
                                         ^~~~~~~~~~
                                         index
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:58:23: error: request for member 'requestAuthentication' in '* request', which is of non-class type 'int'
       return request->requestAuthentication();
                       ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:63:44: error: 'AsyncWebServerRequest' has not been declared
        server->on("/slider", HTTP_GET, [] (AsyncWebServerRequest *request) {
                                            ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:66:18: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
     if (request->hasParam(PARAM_INPUT)) {
                  ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:66:27: error: 'PARAM_INPUT' was not declared in this scope
     if (request->hasParam(PARAM_INPUT)) {
                           ^~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:66:27: note: suggested alternative: 'MAX_INPUT'
     if (request->hasParam(PARAM_INPUT)) {
                           ^~~~~~~~~~~
                           MAX_INPUT
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:67:31: error: request for member 'getParam' in '* request', which is of non-class type 'int'
       inputMessage = request->getParam(PARAM_INPUT)->value();
                               ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:68:7: error: 'sliderValue' was not declared in this scope
       sliderValue = inputMessage;
       ^~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:69:7: error: 'dma_display' was not declared in this scope
       dma_display->setBrightness8(sliderValue.toInt());
       ^~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:77:38: error: 'AsyncWebServerRequest' has not been declared
   server->on("/reboot", HTTP_GET, [](AsyncWebServerRequest * request) {
                                      ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:78:46: error: request for member 'client' in '* request', which is of non-class type 'int'
     String logmessage = "Client:" + request->client()->remoteIP().toString() + " " + request->url();
                                              ^~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:78:95: error: request for member 'url' in '* request', which is of non-class type 'int'
     String logmessage = "Client:" + request->client()->remoteIP().toString() + " " + request->url();
                                                                                               ^~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:80:33: error: 'checkUserWebAuth' cannot be used as a function
     if (checkUserWebAuth(request)) {
                                 ^
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:81:16: error: request for member 'send' in '* request', which is of non-class type 'int'
       request->send(200, "text/html", reboot_html);
                ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:81:39: error: 'reboot_html' was not declared in this scope
       request->send(200, "text/html", reboot_html);
                                       ^~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:85:7: error: 'shouldReboot' was not declared in this scope
       shouldReboot = true;
       ^~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:89:23: error: request for member 'requestAuthentication' in '* request', which is of non-class type 'int'
       return request->requestAuthentication();
                       ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:93:41: error: 'AsyncWebServerRequest' has not been declared
   server->on("/listfiles", HTTP_GET, [](AsyncWebServerRequest *request) {
                                         ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:94:46: error: request for member 'client' in '* request', which is of non-class type 'int'
     String logmessage = "Client:" + request->client()->remoteIP().toString() + " " + request->url();
                                              ^~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:94:95: error: request for member 'url' in '* request', which is of non-class type 'int'
     String logmessage = "Client:" + request->client()->remoteIP().toString() + " " + request->url();
                                                                                               ^~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:95:33: error: 'checkUserWebAuth' cannot be used as a function
     if (checkUserWebAuth(request)) {
                                 ^
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:98:18: error: request for member 'send' in '* request', which is of non-class type 'int'
         request->send(200, "text/plain", listFiles(true, 1, maxGIFsPerPage)); // Explicitly pass page and pageSize
                  ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:98:61: error: 'maxGIFsPerPage' was not declared in this scope
         request->send(200, "text/plain", listFiles(true, 1, maxGIFsPerPage)); // Explicitly pass page and pageSize
                                                             ^~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:98:42: error: 'listFiles' was not declared in this scope
         request->send(200, "text/plain", listFiles(true, 1, maxGIFsPerPage)); // Explicitly pass page and pageSize
                                          ^~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:98:42: note: suggested alternative: 'lutimes'
         request->send(200, "text/plain", listFiles(true, 1, maxGIFsPerPage)); // Explicitly pass page and pageSize
                                          ^~~~~~~~~
                                          lutimes
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:102:25: error: request for member 'requestAuthentication' in '* request', which is of non-class type 'int'
         return request->requestAuthentication();
                         ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:106:36: error: 'AsyncWebServerRequest' has not been declared
   server->on("/list", HTTP_GET, [](AsyncWebServerRequest *request) {
                                    ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:108:18: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
     if (request->hasParam("page")) {
                  ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:109:25: error: request for member 'getParam' in '* request', which is of non-class type 'int'
         page = request->getParam("page")->value().toInt();
                         ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:114:45: error: 'maxGIFsPerPage' was not declared in this scope
     String fileList = listFiles(true, page, maxGIFsPerPage); // Generate the table content
                                             ^~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:114:23: error: 'listFiles' was not declared in this scope
     String fileList = listFiles(true, page, maxGIFsPerPage); // Generate the table content
                       ^~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:114:23: note: suggested alternative: 'lutimes'
     String fileList = listFiles(true, page, maxGIFsPerPage); // Generate the table content
                       ^~~~~~~~~
                       lutimes
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:115:14: error: request for member 'send' in '* request', which is of non-class type 'int'
     request->send(200, "text/html", fileList);
              ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:119:40: error: 'AsyncWebServerRequest' has not been declared
   server->on("/setColor", HTTP_GET, [](AsyncWebServerRequest *request) {
                                        ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:120:18: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
     if (request->hasParam("r") && request->hasParam("g") && request->hasParam("b")) {
                  ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:120:44: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
     if (request->hasParam("r") && request->hasParam("g") && request->hasParam("b")) {
                                            ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:120:70: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
     if (request->hasParam("r") && request->hasParam("g") && request->hasParam("b")) {
                                                                      ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:121:9: error: 'colorR' was not declared in this scope
         colorR = request->getParam("r")->value().toInt();
         ^~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:121:9: note: suggested alternative: 'close'
         colorR = request->getParam("r")->value().toInt();
         ^~~~~~
         close
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:121:27: error: request for member 'getParam' in '* request', which is of non-class type 'int'
         colorR = request->getParam("r")->value().toInt();
                           ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:122:9: error: 'colorG' was not declared in this scope
         colorG = request->getParam("g")->value().toInt();
         ^~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:122:9: note: suggested alternative: 'close'
         colorG = request->getParam("g")->value().toInt();
         ^~~~~~
         close
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:122:27: error: request for member 'getParam' in '* request', which is of non-class type 'int'
         colorG = request->getParam("g")->value().toInt();
                           ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:123:9: error: 'colorB' was not declared in this scope
         colorB = request->getParam("b")->value().toInt();
         ^~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:123:9: note: suggested alternative: 'close'
         colorB = request->getParam("b")->value().toInt();
         ^~~~~~
         close
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:123:27: error: request for member 'getParam' in '* request', which is of non-class type 'int'
         colorB = request->getParam("b")->value().toInt();
                           ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:127:18: error: request for member 'send' in '* request', which is of non-class type 'int'
         request->send(200, "text/plain", "Color updated");
                  ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:129:18: error: request for member 'send' in '* request', which is of non-class type 'int'
         request->send(400, "text/plain", "Missing parameters");
                  ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:133:41: error: 'AsyncWebServerRequest' has not been declared
   server->on("/toggleGIF", HTTP_GET, [](AsyncWebServerRequest *request) {
                                         ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:134:18: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
     if (request->hasParam("state")) {
                  ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:135:33: error: request for member 'getParam' in '* request', which is of non-class type 'int'
         String state = request->getParam("state")->value();
                                 ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:136:9: error: 'gifEnabled' was not declared in this scope
         gifEnabled = (state == "on"); // Update the gifEnabled variable
         ^~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:136:9: note: suggested alternative: 'spiSSEnable'
         gifEnabled = (state == "on"); // Update the gifEnabled variable
         ^~~~~~~~~~
         spiSSEnable
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:138:18: error: request for member 'send' in '* request', which is of non-class type 'int'
         request->send(200, "text/plain", "GIF playback state updated");
                  ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:140:18: error: request for member 'send' in '* request', which is of non-class type 'int'
         request->send(400, "text/plain", "Missing 'state' parameter");
                  ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:144:44: error: 'AsyncWebServerRequest' has not been declared
  server->on("/toggleLoopGif", HTTP_GET, [](AsyncWebServerRequest *request) {
                                            ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:145:16: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
   if (request->hasParam("state")) {
                ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:146:31: error: request for member 'getParam' in '* request', which is of non-class type 'int'
       String state = request->getParam("state")->value();
                               ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:147:7: error: 'loopGifEnabled' was not declared in this scope
       loopGifEnabled = (state == "on");
       ^~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:147:7: note: suggested alternative: 'spiSSEnable'
       loopGifEnabled = (state == "on");
       ^~~~~~~~~~~~~~
       spiSSEnable
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:149:16: error: request for member 'send' in '* request', which is of non-class type 'int'
       request->send(200, "text/plain", "Loop GIF state updated");
                ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:151:16: error: request for member 'send' in '* request', which is of non-class type 'int'
       request->send(400, "text/plain", "Missing 'state' parameter");
                ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:155:42: error: 'AsyncWebServerRequest' has not been declared
  server->on("/toggleClock", HTTP_GET, [](AsyncWebServerRequest *request) {
                                          ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:156:16: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
   if (request->hasParam("state")) {
                ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:157:31: error: request for member 'getParam' in '* request', which is of non-class type 'int'
       String state = request->getParam("state")->value();
                               ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:158:7: error: 'clockEnabled' was not declared in this scope
       clockEnabled = (state == "on");
       ^~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:158:7: note: suggested alternative: 'clock_nanosleep'
       clockEnabled = (state == "on");
       ^~~~~~~~~~~~
       clock_nanosleep
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:160:11: error: 'scrollTextEnabled' was not declared in this scope
           scrollTextEnabled = false; // Disable scrolling text if the clock is enabled
           ^~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:163:16: error: request for member 'send' in '* request', which is of non-class type 'int'
       request->send(200, "text/plain", "Clock state updated");
                ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:165:16: error: request for member 'send' in '* request', which is of non-class type 'int'
       request->send(400, "text/plain", "Missing 'state' parameter");
                ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:169:46: error: 'AsyncWebServerRequest' has not been declared
 server->on("/toggleScrollText", HTTP_GET, [](AsyncWebServerRequest *request) {
                                              ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:170:16: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
   if (request->hasParam("state")) {
                ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:171:31: error: request for member 'getParam' in '* request', which is of non-class type 'int'
       String state = request->getParam("state")->value();
                               ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:172:7: error: 'scrollTextEnabled' was not declared in this scope
       scrollTextEnabled = (state == "on");
       ^~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:174:11: error: 'clockEnabled' was not declared in this scope
           clockEnabled = false; // Disable the clock if scrolling text is enabled
           ^~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:174:11: note: suggested alternative: 'clock_nanosleep'
           clockEnabled = false; // Disable the clock if scrolling text is enabled
           ^~~~~~~~~~~~
           clock_nanosleep
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:177:16: error: request for member 'send' in '* request', which is of non-class type 'int'
       request->send(200, "text/plain", "Scrolling text state updated");
                ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:179:16: error: request for member 'send' in '* request', which is of non-class type 'int'
       request->send(400, "text/plain", "Missing 'state' parameter");
                ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:183:48: error: 'AsyncWebServerRequest' has not been declared
   server->on("/updateScrollText", HTTP_GET, [](AsyncWebServerRequest *request) {
                                                ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:184:18: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
     if (request->hasParam("text") && request->hasParam("fontSize") && request->hasParam("speed")) {
                  ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:184:47: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
     if (request->hasParam("text") && request->hasParam("fontSize") && request->hasParam("speed")) {
                                               ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:184:80: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
     if (request->hasParam("text") && request->hasParam("fontSize") && request->hasParam("speed")) {
                                                                                ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:185:9: error: 'scrollText' was not declared in this scope
         scrollText = request->getParam("text")->value();
         ^~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:185:31: error: request for member 'getParam' in '* request', which is of non-class type 'int'
         scrollText = request->getParam("text")->value();
                               ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:186:9: error: 'scrollFontSize' was not declared in this scope
         scrollFontSize = request->getParam("fontSize")->value().toInt();
         ^~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:186:35: error: request for member 'getParam' in '* request', which is of non-class type 'int'
         scrollFontSize = request->getParam("fontSize")->value().toInt();
                                   ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:187:9: error: 'scrollSpeed' was not declared in this scope
         scrollSpeed = request->getParam("speed")->value().toInt();
         ^~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:187:32: error: request for member 'getParam' in '* request', which is of non-class type 'int'
         scrollSpeed = request->getParam("speed")->value().toInt();
                                ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:189:18: error: request for member 'send' in '* request', which is of non-class type 'int'
         request->send(200, "text/plain", "Scrolling text updated");
                  ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:191:18: error: request for member 'send' in '* request', which is of non-class type 'int'
         request->send(400, "text/plain", "Missing parameters");
                  ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:195:36: error: 'AsyncWebServerRequest' has not been declared
   server->on("/file", HTTP_GET, [](AsyncWebServerRequest * request) {
                                    ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:196:46: error: request for member 'client' in '* request', which is of non-class type 'int'
     String logmessage = "Client:" + request->client()->remoteIP().toString() + " " + request->url();
                                              ^~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:196:95: error: request for member 'url' in '* request', which is of non-class type 'int'
     String logmessage = "Client:" + request->client()->remoteIP().toString() + " " + request->url();
                                                                                               ^~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:197:33: error: 'checkUserWebAuth' cannot be used as a function
     if (checkUserWebAuth(request)) {
                                 ^
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:201:20: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
       if (request->hasParam("name") && request->hasParam("action")) {
                    ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:201:49: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
       if (request->hasParam("name") && request->hasParam("action")) {
                                                 ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:202:47: error: request for member 'getParam' in '* request', which is of non-class type 'int'
         String fileName = "/"+String(request->getParam("name")->value() );
                                               ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:203:43: error: request for member 'getParam' in '* request', which is of non-class type 'int'
         const char *fileAction = request->getParam("action")->value().c_str();
                                           ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:205:43: error: request for member 'client' in '* request', which is of non-class type 'int'
         logmessage = "Client:" + request->client()->remoteIP().toString() + " " + request->url() + "?name=" + String(fileName) + "&action=" + String(fileAction);
                                           ^~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:205:92: error: request for member 'url' in '* request', which is of non-class type 'int'
         logmessage = "Client:" + request->client()->remoteIP().toString() + " " + request->url() + "?name=" + String(fileName) + "&action=" + String(fileAction);
                                                                                            ^~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:207:14: error: 'LittleFS' was not declared in this scope
         if (!LittleFS.exists(fileName)) {
              ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:207:14: note: suggested alternative: 'bitClear'
         if (!LittleFS.exists(fileName)) {
              ^~~~~~~~
              bitClear
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:209:20: error: request for member 'send' in '* request', which is of non-class type 'int'
           request->send(400, "text/plain", "ERROR: file does not exist");
                    ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:215:22: error: request for member 'send' in '* request', which is of non-class type 'int'
             request->send(LittleFS, fileName, "application/octet-stream");
                      ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:219:22: error: request for member 'send' in '* request', which is of non-class type 'int'
             request->send(200, "text/plain", "Deleted File: " + String(fileName));
                      ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:222:13: error: 'requestedGifPath' was not declared in this scope
             requestedGifPath = fileName; // Store the requested GIF path
             ^~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:225:13: error: 'gifFile' was not declared in this scope
             gifFile = FILESYSTEM.open(fileName);
             ^~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:225:23: error: 'FILESYSTEM' was not declared in this scope
             gifFile = FILESYSTEM.open(fileName);
                       ^~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:231:22: error: request for member 'send' in '* request', which is of non-class type 'int'
             request->send(LittleFS, fileName, "image/gif");
                      ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:235:22: error: request for member 'send' in '* request', which is of non-class type 'int'
             request->send(400, "text/plain", "ERROR: invalid action param supplied");
                      ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:240:18: error: request for member 'send' in '* request', which is of non-class type 'int'
         request->send(400, "text/plain", "ERROR: name and action params required");
                  ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:245:23: error: request for member 'requestAuthentication' in '* request', which is of non-class type 'int'
       return request->requestAuthentication();
                       ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: At global scope:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:250:15: error: variable or field 'notFound' declared void
 void notFound(AsyncWebServerRequest *request) {
               ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:250:15: error: 'AsyncWebServerRequest' was not declared in this scope
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:250:38: error: 'request' was not declared in this scope
 void notFound(AsyncWebServerRequest *request) {
                                      ^~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:250:38: note: suggested alternative: 'renameat'
 void notFound(AsyncWebServerRequest *request) {
                                      ^~~~~~~
                                      renameat
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:257:23: error: redefinition of 'bool checkUserWebAuth'
 bool checkUserWebAuth(AsyncWebServerRequest * request) {
                       ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:4:6: note: 'bool checkUserWebAuth' previously defined here
   if (var == "FIRMWARE") {
      ^~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:257:23: error: 'AsyncWebServerRequest' was not declared in this scope
 bool checkUserWebAuth(AsyncWebServerRequest * request) {
                       ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:257:47: error: 'request' was not declared in this scope
 bool checkUserWebAuth(AsyncWebServerRequest * request) {
                                               ^~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:257:47: note: suggested alternative: 'renameat'
 bool checkUserWebAuth(AsyncWebServerRequest * request) {
                                               ^~~~~~~
                                               renameat
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:268:19: error: variable or field 'handleUpload' declared void
 void handleUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) {
                   ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:268:19: error: 'AsyncWebServerRequest' was not declared in this scope
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:268:42: error: 'request' was not declared in this scope
 void handleUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) {
                                          ^~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:268:42: note: suggested alternative: 'renameat'
 void handleUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) {
                                          ^~~~~~~
                                          renameat
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:268:58: error: expected primary-expression before 'filename'
 void handleUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) {
                                                          ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:268:75: error: expected primary-expression before 'index'
 void handleUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) {
                                                                           ^~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:268:90: error: expected primary-expression before '*' token
 void handleUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) {
                                                                                          ^
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:268:91: error: 'data' was not declared in this scope
 void handleUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) {
                                                                                           ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:268:91: note: suggested alternative: 'atan'
 void handleUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) {
                                                                                           ^~~~
                                                                                           atan
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:268:104: error: expected primary-expression before 'len'
 void handleUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) {
                                                                                                        ^~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:268:109: error: expected primary-expression before 'bool'
 void handleUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) {
                                                                                                             ^~~~
*** [.pio/build/nodemcu-32s/src/webserver.ino.cpp.o] Error 1
========================================================================== [FAILED] Took 2.85 seconds ==========================================================================

 *  The terminal process "platformio 'run'" terminated with exit code: 1. 
 *  Terminal will be reused by tasks, press any key to close it. 

Code

#include <Arduino.h>

//By mzashh https://github.com/mzashh

#define FIRMWARE_VERSION "v0.4.5b"
#define FILESYSTEM LittleFS
#include <LittleFS.h>
#include <AnimatedGIF.h>
#include <ESP32-HUB75-MatrixPanel-I2S-DMA.h>
#include <WiFi.h>
#include <AsyncTCP.h>
#include <GFX_Layer.hpp>
#include <ESPAsyncWebServer.h>
#include "webpages.h"
#include "time.h"

#define A_PIN   22 
#define B_PIN   32 
#define C_PIN   33
#define D_PIN   17 
#define E_PIN   21 


#define PANEL_RES_X 64      
#define PANEL_RES_Y 64     
#define PANEL_CHAIN 1      
 

MatrixPanel_I2S_DMA *dma_display = nullptr;

uint16_t myBLACK = dma_display->color565(0, 0, 0);
uint16_t myWHITE = dma_display->color565(255, 255, 255);
uint16_t myRED = dma_display->color565(255, 0, 0);
uint16_t myGREEN = dma_display->color565(0, 255, 0);
uint16_t myBLUE = dma_display->color565(0, 0, 255);
uint16_t textWidth = 0; // Width of the scrolling text
uint16_t w, h;
uint8_t colorR = 255; // Default Red value
uint8_t colorG = 255; // Default Green value
uint8_t colorB = 255; // Default Blue value
uint8_t scrollFontSize = 2; // Default font size (1 = small, 2 = normal, 3 = big, 4 = huge)
uint8_t scrollSpeed = 18;   // Default scroll speed (1 = fastest, 150 = slowest)
int16_t xOne, yOne;

const String default_ssid = "Pyka"; // Your WiFi SSID
const String default_wifipassword = "N*8fWx.Y3+k"; // Your WiFi password
const String default_httpuser = "admin"; // WebUI login id
const String default_httppassword = "admin"; // WebUI login password
const int default_webserverporthttp = 80;
const char* ntpServer = "pool.ntp.org"; // NTP server
const char* PARAM_INPUT = "value";
const long  gmtOffset_sec = 0; // GMT Timezone Offset in seconds (change this to your own)
const int   daylightOffset_sec = 0;
const int maxGIFsPerPage = 4; // Change this value to set the maximum number of GIFs per page (keep this at 4)
int textXPosition = 64;  // Will start off screen
int textYPosition = 24;  // center of screen (half of the text height)

unsigned long lastPixelToggle = 0; // Tracks the last time the second set of pixels was drawn
unsigned long lastScrollUpdate = 0; // Tracks the last time the text was scrolled
unsigned long isAnimationDue;
bool showFirstSet = true; // Default state: Clock divider colon
bool clockEnabled = true; // Default state: Clock is enabled
bool gifEnabled = true; // Default state: GIF playback is enabled
bool scrollTextEnabled = false; // Default state: Scrolling text is disabled
bool loopGifEnabled = true; // Default state: Loop GIF is enabled (reverese logic)

String inputMessage;
String sliderValue = "255"; //Default brightness value
String scrollText = "Hello"; // Default Text String
String currentGifPath = ""; // Store the current GIF file path
String requestedGifPath = ""; // Path of the GIF requested by the user

struct Config {
String ssid;               // wifi ssid
String wifipassword;       // wifi password
String httpuser;           // username to access web admin
String httppassword;       // password to access web admin
int webserverporthttp;     // http port number for web admin
};


 Config config;              // configuration
 bool shouldReboot = false; // schedule a reboot
 AsyncWebServer *server;   // initialise webserver

// function defaults
 String listFiles(bool ishtml = false);

 AnimatedGIF gif;
 File f;
 int x_offset, y_offset;

 void layer_draw_callback(int16_t x, int16_t y, uint8_t r_data, uint8_t g_data, uint8_t b_data) {

  dma_display->drawPixel(x,y, dma_display->color565(r_data,g_data,b_data));

}

// Global GFX_Layer object
GFX_Layer gfx_layer_bg(64, 64, layer_draw_callback); // background
GFX_Layer gfx_layer_fg(64, 64, layer_draw_callback); // foreground

GFX_LayerCompositor gfx_compositor(layer_draw_callback);

void GIFDraw(GIFDRAW *pDraw)
 {
    uint8_t *s;
    uint16_t *d, *usPalette, usTemp[320];
    int x, y, iWidth;

  iWidth = pDraw->iWidth;
  if (iWidth > MATRIX_WIDTH)
      iWidth = MATRIX_WIDTH;

    usPalette = pDraw->pPalette;
    y = pDraw->iY + pDraw->y; // current line
    
    s = pDraw->pPixels;
    if (pDraw->ucDisposalMethod == 2) // restore to background color
    {
      for (x=0; x<iWidth; x++)
      {
        if (s[x] == pDraw->ucTransparent)
           s[x] = pDraw->ucBackground;
      }
      pDraw->ucHasTransparency = 0;
    }

    if (gifEnabled) // Check if GIF playback is enabled
    {
    if (pDraw->ucHasTransparency) // if transparency used
    {
      uint8_t *pEnd, c, ucTransparent = pDraw->ucTransparent;
      int x, iCount;
      pEnd = s + pDraw->iWidth;
      x = 0;
      iCount = 0; // count non-transparent pixels
      while(x < pDraw->iWidth)
      {
        c = ucTransparent-1;
        d = usTemp;
        while (c != ucTransparent && s < pEnd)
        {
          c = *s++;
          if (c == ucTransparent) // done, stop
          {
            s--; // back up to treat it like transparent
          }
          else // opaque
          {
             *d++ = usPalette[c];
             iCount++;
          }
        } // while looking for opaque pixels
        if (iCount) // any opaque pixels?
        {
          for(int xOffset = 0; xOffset < iCount; xOffset++ ){
            gfx_layer_bg.drawPixel(x + xOffset, y, usTemp[xOffset]); // 565 Color Format
          }
          x += iCount;
          iCount = 0;
        }
        // no, look for a run of transparent pixels
        c = ucTransparent;
        while (c == ucTransparent && s < pEnd)
        {
          c = *s++;
          if (c == ucTransparent)
             iCount++;
          else
             s--; 
        }
        if (iCount)
        {
          x += iCount; // skip these
          iCount = 0;
        }
      }
    }
    else // does not have transparency
    {
      s = pDraw->pPixels;
      // Translate the 8-bit pixels through the RGB565 palette (already byte reversed)
      for (x=0; x<pDraw->iWidth; x++)
      {
        gfx_layer_bg.drawPixel(x, y, usPalette[*s++]); // color 565
      }
      
    }
  } 
  else
  {     
      gfx_layer_bg.clear(); // Clear the background layer if GIF playback is disabled
  }
    
    if (clockEnabled) {
    // Request Time from internal RTC
    struct tm timeinfo;
    //getLocalTime(&timeinfo);
    if(!getLocalTime(&timeinfo)){
      Serial.println("Failed to obtain time");
      }
    // Display the time in the format HH:MM (12/24H)
    gfx_layer_fg.clear();
    gfx_layer_fg.setTextColor(gfx_layer_fg.color565(colorR, colorG, colorB));
    gfx_layer_fg.setTextSize(2);
    gfx_layer_fg.setCursor(7, 24); 
    //gfx_layer_fg.print(&timeinfo, "%H"); // print Hours from NTP 24 Hour format (Uncomment this for 24H time vice versa for 12H)
    gfx_layer_fg.print(&timeinfo, "%I"); // print Hours from NTP 12 Hour format (Comment this out if you want 24H time vice versa for 12H)
    gfx_layer_fg.setCursor(35, 24); 
    gfx_layer_fg.print(&timeinfo, "%M"); // print Minutes from NTP

    // Draw the hh:mm divider
    if (millis() - lastPixelToggle >= 1000) // Check if one second has passed
    {  
      showFirstSet = !showFirstSet; // Toggle between the first and second set of pixels
      lastPixelToggle = millis(); // Reset the timer
  }
  if (showFirstSet) {
    // Active pixels
    gfx_layer_fg.setTextColor(gfx_layer_fg.color565(colorR, colorG, colorB));
    gfx_layer_fg.setTextSize(1);
    gfx_layer_fg.setCursor(28, 28); 
    gfx_layer_fg.print(".");
    gfx_layer_fg.setCursor(28, 22); 
    gfx_layer_fg.print(".");
  } else {
    // Dark pixels
    gfx_layer_fg.setTextColor(gfx_layer_fg.color565(0, 0, 0));
    gfx_layer_fg.setTextSize(1);
    gfx_layer_fg.setCursor(28, 28); 
    gfx_layer_fg.print(".");
    gfx_layer_fg.setCursor(28, 22); 
    gfx_layer_fg.print(".");
   }
  }  
  else {
    // Clear the clock display if the clock is disabled
} 

if (scrollTextEnabled) {
  //gfx_layer_fg.clear(); // Clear the foreground layer
  gfx_layer_fg.setTextWrap(false); // Disable text wrapping
  
if (scrollFontSize == 1) {
  textYPosition = 27;
 } else if (scrollFontSize == 2) {
  textYPosition = 24;
 } else if (scrollFontSize == 3) {
  textYPosition = 20;
 } else if (scrollFontSize == 4) {
  textYPosition = 16; 
 }  else {
  textYPosition = 24;
 }
  byte offSet = 25;
  unsigned long now = millis();
  if (now > isAnimationDue) 
  {

    gfx_layer_fg.setTextSize(scrollFontSize);  // size 2 == 16 pixels high

    isAnimationDue = now + scrollSpeed;
    textXPosition -= 1;

    // Checking is the very right of the text off screen to the left
    gfx_layer_fg.getTextBounds(scrollText.c_str(), textXPosition, textYPosition, &xOne, &yOne, &w, &h);
    if (textXPosition + w <= 0) {
      textXPosition = gfx_layer_fg.width() + offSet;
    }

    gfx_layer_fg.setCursor(textXPosition, textYPosition);

    // Clear the area of text to be drawn to
    gfx_layer_fg.drawRect(0, textYPosition - 12, gfx_layer_fg.width(), 42, gfx_layer_fg.color565(0, 0, 0));
    gfx_layer_fg.fillRect(0, textYPosition - 12, gfx_layer_fg.width(), 42, gfx_layer_fg.color565(0, 0, 0));

    uint8_t w = 0;
    for (w = 0; w < strlen(scrollText.c_str()); w++) {
      gfx_layer_fg.setTextColor(gfx_layer_fg.color565(colorR, colorG, colorB));
      gfx_layer_fg.print(scrollText.c_str()[w]);
      //Serial.println(textYPosition);
    }

  }
  }
  else {
}
  if (!scrollTextEnabled && !clockEnabled) { // Both scrollTextEnabled and clockEnabled are false
    gfx_layer_fg.clear(); // Clear the foreground layer
}

} /* GIFDraw() */


void * GIFOpenFile(const char *fname, int32_t *pSize)
 {
  Serial.print("Playing gif: ");
  Serial.println(fname);
  f = FILESYSTEM.open(fname);
  if (f)
  {
    *pSize = f.size();
    return (void *)&f;
  }
  return NULL;
 } /* GIFOpenFile() */


void GIFCloseFile(void *pHandle)
 {
  File *f = static_cast<File *>(pHandle);
  if (f != NULL)
     f->close();
 } /* GIFCloseFile() */

 int32_t GIFReadFile(GIFFILE *pFile, uint8_t *pBuf, int32_t iLen)
 {
    int32_t iBytesRead;
    iBytesRead = iLen;
    File *f = static_cast<File *>(pFile->fHandle);
    // Note: If you read a file all the way to the last byte, seek() stops working
    if ((pFile->iSize - pFile->iPos) < iLen)
       iBytesRead = pFile->iSize - pFile->iPos - 1; // <-- ugly work-around
    if (iBytesRead <= 0)
       return 0;
    iBytesRead = (int32_t)f->read(pBuf, iBytesRead);
    pFile->iPos = f->position();
    return iBytesRead;
 } /* GIFReadFile() */

 int32_t GIFSeekFile(GIFFILE *pFile, int32_t iPosition)
 { 
  int i = micros();
  File *f = static_cast<File *>(pFile->fHandle);
  f->seek(iPosition);
  pFile->iPos = (int32_t)f->position();
  i = micros() - i;
//  Serial.printf("Seek time = %d us\n", i);
  return pFile->iPos;
 } /* GIFSeekFile() */

 unsigned long start_tick = 0;


 void ShowGIF(char *name)
 {
   start_tick = millis();
   unsigned long lastTimeCheck = millis(); // Timer for getLocalTime 
   if (gif.open(name, GIFOpenFile, GIFCloseFile, GIFReadFile, GIFSeekFile, GIFDraw))
   {
     x_offset = (MATRIX_WIDTH - gif.getCanvasWidth())/2;
     if (x_offset < 0) x_offset = 0;
     y_offset = (MATRIX_HEIGHT - gif.getCanvasHeight())/2;
     if (y_offset < 0) y_offset = 0;
     Serial.printf("Successfully opened GIF; Canvas size = %d x %d\n", gif.getCanvasWidth(), gif.getCanvasHeight());
     Serial.flush();
     while (gif.playFrame(true, NULL))
     {    
       gfx_layer_bg.dim(150);  
       gfx_layer_fg.dim(255);
       gfx_compositor.Blend(gfx_layer_bg, gfx_layer_fg); // Combine the bg and the fg layer and draw it onto the panel.

       if ( (millis() - start_tick) > 50000) { // we'll get bored after about 50 seconds of the same looping gif
         //break; // Will change to the next gif in the list after the set time.
       }
     }
 
     gif.close();
   }
 
 } /* ShowGIF() */


void rebootESP(String message) {
  Serial.print("Rebooting ESP32: "); Serial.println(message);
  ESP.restart();
}

String listFiles(bool ishtml, int page = 1, int pageSize = maxGIFsPerPage) {
  String returnText = "";
  int fileIndex = 0;
  int startIndex = (page - 1) * pageSize;
  int endIndex = startIndex + pageSize;

  File root = FILESYSTEM.open("/");
  File foundfile = root.openNextFile();

  if (ishtml) {
      returnText += "<!DOCTYPE HTML><html lang=\"en\"><head>";
      returnText += "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">";
      returnText += "<meta charset=\"UTF-8\">";
      returnText += "</head><body>";
      returnText += "<table><tr><th>Name</th><th>Size</th><th>Preview</th><th>Actions</th></tr>";
  }

  while (foundfile) {
      if (fileIndex >= startIndex && fileIndex < endIndex) {
          if (ishtml) {
              returnText += "<tr><td>" + String(foundfile.name()) + "</td>";
              returnText += "<td>" + humanReadableSize(foundfile.size()) + "</td>";
              returnText += "<td><img src=\"/file?name=" + String(foundfile.name()) + "&action=show\" width=\"64\"></td>";
              returnText += "<td>";
              returnText += "<button onclick=\"downloadDeleteButton('" + String(foundfile.name()) + "', 'play')\">Play</button>";
              returnText += "<button onclick=\"downloadDeleteButton('" + String(foundfile.name()) + "', 'download')\">Download</button>";
              returnText += "<button onclick=\"downloadDeleteButton('" + String(foundfile.name()) + "', 'delete')\">Delete</button>";
              returnText += "</td></tr>";
          }
      }
      fileIndex++;
      foundfile = root.openNextFile();
  }

  if (ishtml) {
      returnText += "</table>";
      // Add the Home button
      returnText += "<button onclick=\"window.location.href='/'\">Home</button>";
      // Add the Previous button if applicable
      if (page > 1) {
          returnText += "<button onclick=\"window.location.href='/list?page=" + String(page - 1) + "'\">Previous</button>";
      }
      // Add the Next button if there are more files
      if (fileIndex > endIndex) {
          returnText += "<button onclick=\"window.location.href='/list?page=" + String(page + 1) + "'\">Next</button>";
      }
      // GIF select page
      returnText += "<script>";
      returnText += "function downloadDeleteButton(filename, action) {";
      returnText += "    console.log(`downloadDeleteButton called with filename: ${filename}, action: ${action}`);";
      returnText += "    const url = `/file?name=${filename}&action=${action}`;";
      returnText += "    if (action === 'delete') {";
      returnText += "        fetch(url).then(response => response.text()).then(data => {";
      returnText += "            console.log(data);";
      returnText += "            alert('File deleted successfully!');";
      returnText += "            location.reload();";
      returnText += "        }).catch(error => {";
      returnText += "            console.error('Error deleting file:', error);";
      returnText += "            alert('Failed to delete file.');";
      returnText += "        });";
      returnText += "    } else if (action === 'download') {";
      returnText += "        window.open(url, '_blank');";
      returnText += "    } else if (action === 'play') {";
      returnText += "        fetch(url).then(response => response.text()).then(data => {";
      returnText += "            console.log(data);";
      returnText += "            alert('Playing file...');";
      returnText += "        }).catch(error => {";
      returnText += "            console.error('Error playing file:', error);";
      returnText += "            ";
      returnText += "        });";
      returnText += "    }";
      returnText += "}";
      returnText += "</script>";
      returnText += "</body></html>";
  }

  root.close();
  return returnText;
}


String humanReadableSize(const size_t bytes) {
  if (bytes < 1024) return String(bytes) + " B";
  else if (bytes < (1024 * 1024)) return String(bytes / 1024.0) + " KB";
  else if (bytes < (1024 * 1024 * 1024)) return String(bytes / 1024.0 / 1024.0) + " MB";
  else return String(bytes / 1024.0 / 1024.0 / 1024.0) + " GB";
}
 
/************************* Arduino Sketch Setup and Loop() *******************************/
void setup() {


  HUB75_I2S_CFG mxconfig(
  PANEL_RES_X,   // module width
  PANEL_RES_Y,   // module height
  PANEL_CHAIN    // Chain length
  );

  mxconfig.gpio.a = A_PIN;
  mxconfig.gpio.b = B_PIN;
  mxconfig.gpio.c = C_PIN;
  mxconfig.gpio.d = D_PIN;
  mxconfig.gpio.e = E_PIN;
  
  mxconfig.clkphase = false;
  mxconfig.driver = HUB75_I2S_CFG::FM6126A;

  // Display Setup
  dma_display = new MatrixPanel_I2S_DMA(mxconfig);
  dma_display->setRotation(0); // Flip display by 90°, the value can be 0-4
  dma_display->begin();
  dma_display->setBrightness8(sliderValue.toInt()); //0-255
  dma_display->clearScreen();
  
  Serial.begin(115200);

  Serial.print("Firmware: "); Serial.println(FIRMWARE_VERSION);

  Serial.println("Booting ...");

  Serial.println("Mounting LittleFS ...");
  if (!LittleFS.begin(true)) {
    // if you have not used LittleFS. before on a ESP32, it will show this error.
    // after a reboot LittleFS. will be configured and will happily work.
    Serial.println("ERROR: Cannot mount LittleFS, Rebooting");
    rebootESP("ERROR: Cannot mount LittleFS, Rebooting");
  }

  Serial.begin(115200);
  Serial.println("Starting AnimatedGIFs Sketch");
  
  dma_display->begin();

  Serial.print("Flash Free: "); Serial.println(humanReadableSize((LittleFS.totalBytes() - LittleFS.usedBytes())));
  Serial.print("Flash Used: "); Serial.println(humanReadableSize(LittleFS.usedBytes()));
  Serial.print("Flash Total: "); Serial.println(humanReadableSize(LittleFS.totalBytes()));

  //Serial.println(listFiles(true, 1, maxGIFsPerPage));

  Serial.println("Loading Configuration ...");

  config.ssid = default_ssid;
  config.wifipassword = default_wifipassword;
  config.httpuser = default_httpuser;
  config.httppassword = default_httppassword;
  config.webserverporthttp = default_webserverporthttp;

  Serial.print("\nConnecting to Wifi: ");
  WiFi.begin(config.ssid.c_str(), config.wifipassword.c_str());
  (WiFi.status() != WL_CONNECTED); 
  //{ delay(500);
  //Serial.print("."); //Uncomment the 3 lines if you want the ESP32 to wait until the WIFI is connected
  // }
 Serial.println("\n\nNetwork Configuration:");
  Serial.println("----------------------");
  Serial.print("         SSID: "); Serial.println(WiFi.SSID());
  Serial.print("  Wifi Status: "); Serial.println(WiFi.status());
  Serial.print("Wifi Strength: "); Serial.print(WiFi.RSSI()); Serial.println(" dBm");
  Serial.print("          MAC: "); Serial.println(WiFi.macAddress());
  Serial.print("           IP: "); Serial.println(WiFi.localIP());
  Serial.print("       Subnet: "); Serial.println(WiFi.subnetMask());
  Serial.print("      Gateway: "); Serial.println(WiFi.gatewayIP());
  Serial.print("        DNS 1: "); Serial.println(WiFi.dnsIP(0));
  Serial.print("        DNS 2: "); Serial.println(WiFi.dnsIP(1));
  Serial.print("        DNS 3: "); Serial.println(WiFi.dnsIP(2));
  Serial.println();

  // configure web server
  Serial.println("Configuring Webserver ...");
  server = new AsyncWebServer(config.webserverporthttp);
  configureWebServer(); // start web server

  // startup web server
  Serial.println("Starting Webserver ...");
  server->begin();
  
  configTime(gmtOffset_sec, daylightOffset_sec, ntpServer); // get time from NTP server

  dma_display->fillScreen(dma_display->color565(0, 0, 0));
  dma_display->setTextSize(1);
  delay(1000);
  dma_display->print("ID:"); dma_display->print(FIRMWARE_VERSION);  
  dma_display->setCursor(0, 16);
  dma_display->print("IP:"); dma_display->print(WiFi.localIP());
  dma_display->setCursor(0, 38);  
  dma_display->print("RSSI:"); dma_display->println(WiFi.RSSI());
  dma_display->setCursor(0, 52);  
  dma_display->print("SSID:"); dma_display->println(WiFi.SSID());
  delay(1000);
  dma_display->fillScreen(dma_display->color565(0, 0, 0));
  gfx_layer_fg.clear();
  gfx_layer_bg.clear();
  gif.begin(LITTLE_ENDIAN_PIXELS);

}

 String gifDir = "/"; // play all GIFs in this directory on the SD card
 char filePath[256] = { 0 };
 File root, gifFile;


 void loop() {
  if (shouldReboot) {
      rebootESP("Web Admin Initiated Reboot");
  }

  while (1) { // Run forever
      root = FILESYSTEM.open(gifDir); // Open the root directory
      if (root) {
          // Check if a new GIF is requested via the play button
          if (!requestedGifPath.isEmpty()) {
              // Play the requested GIF and set it as the current GIF
              currentGifPath = requestedGifPath; // Update the current GIF path
              requestedGifPath = ""; // Clear the requested path

              // Find and play the requested GIF
              while (gifFile = root.openNextFile()) {
                  if (String(gifFile.path()) == currentGifPath) {
                      break;
                  }
              }

              if (gifFile) {
                  // Play the requested GIF
                  memset(filePath, 0x0, sizeof(filePath));
                  strcpy(filePath, gifFile.path());
                  ShowGIF(filePath);

                  // If looping is enabled, continue looping the requested GIF
                  if (loopGifEnabled) {
                      continue; // Restart the loop for the same GIF
                  }
              }
          } else if (!currentGifPath.isEmpty()) {
              // Resume from the last GIF
              while (gifFile = root.openNextFile()) {
                  if (String(gifFile.path()) == currentGifPath) {
                      break;
                  }
              }
          } else {
              gifFile = root.openNextFile(); // Open the first file in the directory
          }

          while (gifFile) {
              if (!gifFile.isDirectory()) { // Play the file if it's not a directory
                  memset(filePath, 0x0, sizeof(filePath));
                  strcpy(filePath, gifFile.path());
                  currentGifPath = String(filePath); // Save the current GIF path

                  // Show the GIF
                  ShowGIF(filePath);

                  // If looping is enabled, continue playing the same GIF
                  if (loopGifEnabled) {
                      continue; // Restart the loop for the same GIF
                  }
              }

              if (!loopGifEnabled) {
                  // If looping is disabled, move to the next GIF
                  gifFile.close();      // Close the current GIF file
                  gifFile = root.openNextFile(); // Open the next file

                  // If no more files, reset to the first file
                  if (!gifFile) {
                      root.close(); // Close the root directory
                      root = FILESYSTEM.open(gifDir); // Reopen the root directory
                      gifFile = root.openNextFile(); // Start from the first file again
                  }
              } else {
                  break; // Exit the loop if looping is disabled
              }
          }

          root.close(); // Close the root directory
      }

      delay(10); // Pause before restarting
  }
}

Danke

Da steht doch das Problem. Pass deine platformio.ini entweder manuell an oder verwende den PlatformIO Library Manager:

Danke Hi habe es jetzt Aktualisiert
Aber es will immer noch nicht gehen?

Executing task in folder HUB75-Pixel-Art-Display: platformio run 

Processing nodemcu-32s (platform: espressif32; board: nodemcu-32s; framework: arduino)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/nodemcu-32s.html
PLATFORM: Espressif 32 (6.10.0) > NodeMCU-32S
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES: 
 - framework-arduinoespressif32 @ 3.20017.241212+sha.dcc1105b 
 - tool-esptoolpy @ 1.40501.0 (4.5.1) 
 - toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5
Converting webserver.ino
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 42 compatible libraries
Scanning dependencies...
Dependency Graph
|-- Adafruit GFX Library @ 1.12.1
|-- AnimatedGIF @ 2.2.0
|-- AsyncTCP @ 3.4.2
|-- ESP32 HUB75 LED MATRIX PANEL DMA Display @ 3.0.12
|-- ESPAsyncWebServer @ 3.7.7
|-- GFX_Lite @ 1.0.0
|-- LittleFS @ 2.0.0
|-- WiFi @ 2.0.0
Building in release mode
Compiling .pio/build/nodemcu-32s/src/main.cpp.o
Compiling .pio/build/nodemcu-32s/src/webserver.ino.cpp.o
Building .pio/build/nodemcu-32s/bootloader.bin
Generating partitions .pio/build/nodemcu-32s/partitions.bin
esptool.py v4.5.1
Creating esp32 image...
Merged 1 ELF section
Successfully created esp32 image.
Compiling .pio/build/nodemcu-32s/libff9/Wire/Wire.cpp.o
Compiling .pio/build/nodemcu-32s/lib907/SPI/SPI.cpp.o
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:3:15: error: variable or field 'notFound' declared void
 String processor(const String& var) {
               ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:3:15: error: 'AsyncWebServerRequest' was not declared in this scope
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:3:38: error: 'request' was not declared in this scope
 String processor(const String& var) {
                                      ^      
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:3:38: note: suggested alternative: 'renameat'
 String processor(const String& var) {
                                      ^      
                                      renameat
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:4:23: error: 'AsyncWebServerRequest' was not declared in this scope
   if (var == "FIRMWARE") {
                       ^~~~                 
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:4:47: error: 'request' was not declared in this scope
   if (var == "FIRMWARE") {
                                               ^      
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:4:47: note: suggested alternative: 'renameat'
   if (var == "FIRMWARE") {
                                               ^      
                                               renameat
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:5:19: error: variable or field 'handleUpload' declared void
     return FIRMWARE_VERSION;
                   ^~~~~~~~~~           
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:5:19: error: 'AsyncWebServerRequest' was not declared in this scope
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:5:42: error: 'request' was not declared in this scope
     return FIRMWARE_VERSION;
                                          ^      
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:5:42: note: suggested alternative: 'renameat'
     return FIRMWARE_VERSION;
                                          ^      
                                          renameat
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:5:58: error: expected primary-expression before 'filename'
     return FIRMWARE_VERSION;
                                                          ^       
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:5:75: error: expected primary-expression before 'index'
     return FIRMWARE_VERSION;
                                                                           ^    
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:5:90: error: expected primary-expression before '*' token
     return FIRMWARE_VERSION;
                                                                                          ^
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:5:91: error: 'data' was not declared in this scope
     return FIRMWARE_VERSION;
                                                                                           ^   
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:5:91: note: suggested alternative: 'atan'
     return FIRMWARE_VERSION;
                                                                                           ^   
                                                                                           atan
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:5:104: error: expected primary-expression before 'len'
     return FIRMWARE_VERSION;
                                                                                                        ^  
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:5:109: error: expected primary-expression before 'bool'
     return FIRMWARE_VERSION;
                                                                                                             ^   
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'String processor(const String&)':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:5:12: error: 'FIRMWARE_VERSION' was not declared in this scope
     return FIRMWARE_VERSION;
            ^~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:5:12: note: suggested alternative: 'ESP_IDF_VERSION'
     return FIRMWARE_VERSION;
            ^~~~~~~~~~~~~~~~
            ESP_IDF_VERSION
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:9:31: error: 'LittleFS' was not declared in this scope
     return humanReadableSize((LittleFS.totalBytes() - LittleFS.usedBytes()));
                               ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:9:31: note: suggested alternative: 'bitClear'
     return humanReadableSize((LittleFS.totalBytes() - LittleFS.usedBytes()));
                               ^~~~~~~~
                               bitClear
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:9:12: error: 'humanReadableSize' was not declared in this scope
     return humanReadableSize((LittleFS.totalBytes() - LittleFS.usedBytes()));
            ^~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:13:30: error: 'LittleFS' was not declared in this scope
     return humanReadableSize(LittleFS.usedBytes());
                              ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:13:30: note: suggested alternative: 'bitClear'
     return humanReadableSize(LittleFS.usedBytes());
                              ^~~~~~~~
                              bitClear
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:13:12: error: 'humanReadableSize' was not declared in this scope
     return humanReadableSize(LittleFS.usedBytes());
            ^~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:17:30: error: 'LittleFS' was not declared in this scope
     return humanReadableSize(LittleFS.totalBytes());
                              ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:17:30: note: suggested alternative: 'bitClear'
     return humanReadableSize(LittleFS.totalBytes());
                              ^~~~~~~~
                              bitClear
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:17:12: error: 'humanReadableSize' was not declared in this scope
     return humanReadableSize(LittleFS.totalBytes());
            ^~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:21:12: error: 'sliderValue' was not declared in this scope
     return sliderValue;
            ^~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:30:3: error: 'server' was not declared in this scope
   server->onNotFound(notFound);
   ^~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:30:3: note: suggested alternative: 'Server'
   server->onNotFound(notFound);
   ^~~~~~
   Server
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:30:22: error: 'notFound' was not declared in this scope
   server->onNotFound(notFound);
                      ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:30:22: note: suggested alternative: 'noTone'
   server->onNotFound(notFound);
                      ^~~~~~~~
                      noTone
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:33:24: error: 'handleUpload' was not declared in this scope
   server->onFileUpload(handleUpload);
                        ^~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:36:25: error: 'HTTP_GET' was not declared in this scope
   server->on("/logout", HTTP_GET, [](AsyncWebServerRequest * request) {
                         ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:36:25: note: suggested alternative: 'DST_MET'
   server->on("/logout", HTTP_GET, [](AsyncWebServerRequest * request) {
                         ^~~~~~~~
                         DST_MET
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:36:38: error: 'AsyncWebServerRequest' has not been declared
   server->on("/logout", HTTP_GET, [](AsyncWebServerRequest * request) {
                                      ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:37:14: error: request for member 'requestAuthentication' in '* request', which is of non-class type 'int'
     request->requestAuthentication();
              ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:38:14: error: request for member 'send' in '* request', which is of non-class type 'int'
     request->send(401);
              ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:42:42: error: 'AsyncWebServerRequest' has not been declared
   server->on("/logged-out", HTTP_GET, [](AsyncWebServerRequest * request) {
                                          ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:43:46: error: request for member 'client' in '* request', which is of non-class type 'int'
     String logmessage = "Client:" + request->client()->remoteIP().toString() + " " + request->url();
                                              ^~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:43:95: error: request for member 'url' in '* request', which is of non-class type 'int'
     String logmessage = "Client:" + request->client()->remoteIP().toString() + " " + request->url();
                                                                                               ^~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:45:14: error: request for member 'send_P' in '* request', which is of non-class type 'int'
     request->send_P(401, "text/html", logout_html, processor);
              ^~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:45:39: error: 'logout_html' was not declared in this scope
     request->send_P(401, "text/html", logout_html, processor);
                                       ^~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:48:32: error: 'AsyncWebServerRequest' has not been declared
   server->on("/", HTTP_GET, [](AsyncWebServerRequest * request) {
                                ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:49:46: error: request for member 'client' in '* request', which is of non-class type 'int'
     String logmessage = "Client:" + request->client()->remoteIP().toString() + + " " + request->url();
                                              ^~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:49:97: error: request for member 'url' in '* request', which is of non-class type 'int'
     String logmessage = "Client:" + request->client()->remoteIP().toString() + + " " + request->url();
                                                                                                 ^~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:51:33: error: 'checkUserWebAuth' cannot be used as a function
     if (checkUserWebAuth(request)) {
                                 ^
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:54:16: error: request for member 'send_P' in '* request', which is of non-class type 'int'
       request->send_P(200, "text/html", index_html, processor);
                ^~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:54:41: error: 'index_html' was not declared in this scope
       request->send_P(200, "text/html", index_html, processor);
                                         ^~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:54:41: note: suggested alternative: 'index'
       request->send_P(200, "text/html", index_html, processor);
                                         ^~~~~~~~~~
                                         index
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:58:23: error: request for member 'requestAuthentication' in '* request', which is of non-class type 'int'
       return request->requestAuthentication();
                       ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:63:44: error: 'AsyncWebServerRequest' has not been declared
        server->on("/slider", HTTP_GET, [] (AsyncWebServerRequest *request) {
                                            ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:66:18: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
     if (request->hasParam(PARAM_INPUT)) {
                  ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:66:27: error: 'PARAM_INPUT' was not declared in this scope
     if (request->hasParam(PARAM_INPUT)) {
                           ^~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:66:27: note: suggested alternative: 'MAX_INPUT'
     if (request->hasParam(PARAM_INPUT)) {
                           ^~~~~~~~~~~
                           MAX_INPUT
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:67:31: error: request for member 'getParam' in '* request', which is of non-class type 'int'
       inputMessage = request->getParam(PARAM_INPUT)->value();
                               ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:68:7: error: 'sliderValue' was not declared in this scope
       sliderValue = inputMessage;
       ^~~~~~~~~~~
Compiling .pio/build/nodemcu-32s/lib2da/Adafruit BusIO/Adafruit_BusIO_Register.cpp.o
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:69:7: error: 'dma_display' was not declared in this scope
       dma_display->setBrightness8(sliderValue.toInt());
       ^~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:77:38: error: 'AsyncWebServerRequest' has not been declared
   server->on("/reboot", HTTP_GET, [](AsyncWebServerRequest * request) {
                                      ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:78:46: error: request for member 'client' in '* request', which is of non-class type 'int'
     String logmessage = "Client:" + request->client()->remoteIP().toString() + " " + request->url();
                                              ^~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:78:95: error: request for member 'url' in '* request', which is of non-class type 'int'
     String logmessage = "Client:" + request->client()->remoteIP().toString() + " " + request->url();
                                                                                               ^~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:80:33: error: 'checkUserWebAuth' cannot be used as a function
     if (checkUserWebAuth(request)) {
                                 ^
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:81:16: error: request for member 'send' in '* request', which is of non-class type 'int'
       request->send(200, "text/html", reboot_html);
                ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:81:39: error: 'reboot_html' was not declared in this scope
       request->send(200, "text/html", reboot_html);
                                       ^~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:85:7: error: 'shouldReboot' was not declared in this scope
       shouldReboot = true;
       ^~~~~~~~~~~~
Compiling .pio/build/nodemcu-32s/lib2da/Adafruit BusIO/Adafruit_GenericDevice.cpp.o
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:89:23: error: request for member 'requestAuthentication' in '* request', which is of non-class type 'int'
       return request->requestAuthentication();
                       ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:93:41: error: 'AsyncWebServerRequest' has not been declared
   server->on("/listfiles", HTTP_GET, [](AsyncWebServerRequest *request) {
                                         ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:94:46: error: request for member 'client' in '* request', which is of non-class type 'int'
     String logmessage = "Client:" + request->client()->remoteIP().toString() + " " + request->url();
                                              ^~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:94:95: error: request for member 'url' in '* request', which is of non-class type 'int'
     String logmessage = "Client:" + request->client()->remoteIP().toString() + " " + request->url();
                                                                                               ^~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:95:33: error: 'checkUserWebAuth' cannot be used as a function
     if (checkUserWebAuth(request)) {
                                 ^
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:98:18: error: request for member 'send' in '* request', which is of non-class type 'int'
         request->send(200, "text/plain", listFiles(true, 1, maxGIFsPerPage)); // Explicitly pass page and pageSize
                  ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:98:61: error: 'maxGIFsPerPage' was not declared in this scope
         request->send(200, "text/plain", listFiles(true, 1, maxGIFsPerPage)); // Explicitly pass page and pageSize
                                                             ^~~~~~~~~~~~~~
Compiling .pio/build/nodemcu-32s/lib2da/Adafruit BusIO/Adafruit_I2CDevice.cpp.o
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:98:42: error: 'listFiles' was not declared in this scope
         request->send(200, "text/plain", listFiles(true, 1, maxGIFsPerPage)); // Explicitly pass page and pageSize
                                          ^~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:98:42: note: suggested alternative: 'lutimes'
         request->send(200, "text/plain", listFiles(true, 1, maxGIFsPerPage)); // Explicitly pass page and pageSize
                                          ^~~~~~~~~
                                          lutimes
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:102:25: error: request for member 'requestAuthentication' in '* request', which is of non-class type 'int'
         return request->requestAuthentication();
                         ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:106:36: error: 'AsyncWebServerRequest' has not been declared
   server->on("/list", HTTP_GET, [](AsyncWebServerRequest *request) {
                                    ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:108:18: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
     if (request->hasParam("page")) {
                  ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:109:25: error: request for member 'getParam' in '* request', which is of non-class type 'int'
         page = request->getParam("page")->value().toInt();
                         ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:114:45: error: 'maxGIFsPerPage' was not declared in this scope
     String fileList = listFiles(true, page, maxGIFsPerPage); // Generate the table content
                                             ^~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:114:23: error: 'listFiles' was not declared in this scope
     String fileList = listFiles(true, page, maxGIFsPerPage); // Generate the table content
                       ^~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:114:23: note: suggested alternative: 'lutimes'
     String fileList = listFiles(true, page, maxGIFsPerPage); // Generate the table content
                       ^~~~~~~~~
                       lutimes
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:115:14: error: request for member 'send' in '* request', which is of non-class type 'int'
     request->send(200, "text/html", fileList);
              ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:119:40: error: 'AsyncWebServerRequest' has not been declared
   server->on("/setColor", HTTP_GET, [](AsyncWebServerRequest *request) {
                                        ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:120:18: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
     if (request->hasParam("r") && request->hasParam("g") && request->hasParam("b")) {
                  ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:120:44: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
     if (request->hasParam("r") && request->hasParam("g") && request->hasParam("b")) {
                                            ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:120:70: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
     if (request->hasParam("r") && request->hasParam("g") && request->hasParam("b")) {
                                                                      ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:121:9: error: 'colorR' was not declared in this scope
         colorR = request->getParam("r")->value().toInt();
         ^~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:121:9: note: suggested alternative: 'close'
         colorR = request->getParam("r")->value().toInt();
         ^~~~~~
         close
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:121:27: error: request for member 'getParam' in '* request', which is of non-class type 'int'
         colorR = request->getParam("r")->value().toInt();
                           ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:122:9: error: 'colorG' was not declared in this scope
         colorG = request->getParam("g")->value().toInt();
         ^~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:122:9: note: suggested alternative: 'close'
         colorG = request->getParam("g")->value().toInt();
         ^~~~~~
         close
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:122:27: error: request for member 'getParam' in '* request', which is of non-class type 'int'
         colorG = request->getParam("g")->value().toInt();
                           ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:123:9: error: 'colorB' was not declared in this scope
         colorB = request->getParam("b")->value().toInt();
         ^~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:123:9: note: suggested alternative: 'close'
         colorB = request->getParam("b")->value().toInt();
         ^~~~~~
         close
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:123:27: error: request for member 'getParam' in '* request', which is of non-class type 'int'
         colorB = request->getParam("b")->value().toInt();
                           ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:127:18: error: request for member 'send' in '* request', which is of non-class type 'int'
         request->send(200, "text/plain", "Color updated");
                  ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:129:18: error: request for member 'send' in '* request', which is of non-class type 'int'
         request->send(400, "text/plain", "Missing parameters");
                  ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:133:41: error: 'AsyncWebServerRequest' has not been declared
   server->on("/toggleGIF", HTTP_GET, [](AsyncWebServerRequest *request) {
                                         ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:134:18: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
     if (request->hasParam("state")) {
                  ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:135:33: error: request for member 'getParam' in '* request', which is of non-class type 'int'
         String state = request->getParam("state")->value();
                                 ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:136:9: error: 'gifEnabled' was not declared in this scope
         gifEnabled = (state == "on"); // Update the gifEnabled variable
         ^~~~~~~~~~
Compiling .pio/build/nodemcu-32s/lib2da/Adafruit BusIO/Adafruit_SPIDevice.cpp.o
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:136:9: note: suggested alternative: 'spiSSEnable'
         gifEnabled = (state == "on"); // Update the gifEnabled variable
         ^~~~~~~~~~
         spiSSEnable
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:138:18: error: request for member 'send' in '* request', which is of non-class type 'int'
         request->send(200, "text/plain", "GIF playback state updated");
                  ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:140:18: error: request for member 'send' in '* request', which is of non-class type 'int'
         request->send(400, "text/plain", "Missing 'state' parameter");
                  ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:144:44: error: 'AsyncWebServerRequest' has not been declared
  server->on("/toggleLoopGif", HTTP_GET, [](AsyncWebServerRequest *request) {
                                            ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:145:16: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
   if (request->hasParam("state")) {
                ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:146:31: error: request for member 'getParam' in '* request', which is of non-class type 'int'
       String state = request->getParam("state")->value();
                               ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:147:7: error: 'loopGifEnabled' was not declared in this scope
       loopGifEnabled = (state == "on");
       ^~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:147:7: note: suggested alternative: 'spiSSEnable'
       loopGifEnabled = (state == "on");
       ^~~~~~~~~~~~~~
       spiSSEnable
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:149:16: error: request for member 'send' in '* request', which is of non-class type 'int'
       request->send(200, "text/plain", "Loop GIF state updated");
                ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:151:16: error: request for member 'send' in '* request', which is of non-class type 'int'
       request->send(400, "text/plain", "Missing 'state' parameter");
                ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:155:42: error: 'AsyncWebServerRequest' has not been declared
  server->on("/toggleClock", HTTP_GET, [](AsyncWebServerRequest *request) {
                                          ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:156:16: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
   if (request->hasParam("state")) {
                ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:157:31: error: request for member 'getParam' in '* request', which is of non-class type 'int'
       String state = request->getParam("state")->value();
                               ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:158:7: error: 'clockEnabled' was not declared in this scope
       clockEnabled = (state == "on");
       ^~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:158:7: note: suggested alternative: 'clock_nanosleep'
       clockEnabled = (state == "on");
       ^~~~~~~~~~~~
       clock_nanosleep
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:160:11: error: 'scrollTextEnabled' was not declared in this scope
           scrollTextEnabled = false; // Disable scrolling text if the clock is enabled
           ^~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:163:16: error: request for member 'send' in '* request', which is of non-class type 'int'
       request->send(200, "text/plain", "Clock state updated");
                ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:165:16: error: request for member 'send' in '* request', which is of non-class type 'int'
       request->send(400, "text/plain", "Missing 'state' parameter");
                ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:169:46: error: 'AsyncWebServerRequest' has not been declared
 server->on("/toggleScrollText", HTTP_GET, [](AsyncWebServerRequest *request) {
                                              ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:170:16: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
   if (request->hasParam("state")) {
                ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:171:31: error: request for member 'getParam' in '* request', which is of non-class type 'int'
       String state = request->getParam("state")->value();
                               ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:172:7: error: 'scrollTextEnabled' was not declared in this scope
       scrollTextEnabled = (state == "on");
       ^~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:174:11: error: 'clockEnabled' was not declared in this scope
           clockEnabled = false; // Disable the clock if scrolling text is enabled
           ^~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:174:11: note: suggested alternative: 'clock_nanosleep'
           clockEnabled = false; // Disable the clock if scrolling text is enabled
           ^~~~~~~~~~~~
           clock_nanosleep
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:177:16: error: request for member 'send' in '* request', which is of non-class type 'int'
       request->send(200, "text/plain", "Scrolling text state updated");
                ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:179:16: error: request for member 'send' in '* request', which is of non-class type 'int'
       request->send(400, "text/plain", "Missing 'state' parameter");
                ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:183:48: error: 'AsyncWebServerRequest' has not been declared
   server->on("/updateScrollText", HTTP_GET, [](AsyncWebServerRequest *request) {
                                                ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:184:18: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
     if (request->hasParam("text") && request->hasParam("fontSize") && request->hasParam("speed")) {
                  ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:184:47: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
     if (request->hasParam("text") && request->hasParam("fontSize") && request->hasParam("speed")) {
                                               ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:184:80: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
     if (request->hasParam("text") && request->hasParam("fontSize") && request->hasParam("speed")) {
                                                                                ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:185:9: error: 'scrollText' was not declared in this scope
         scrollText = request->getParam("text")->value();
         ^~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:185:31: error: request for member 'getParam' in '* request', which is of non-class type 'int'
         scrollText = request->getParam("text")->value();
                               ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:186:9: error: 'scrollFontSize' was not declared in this scope
         scrollFontSize = request->getParam("fontSize")->value().toInt();
         ^~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:186:35: error: request for member 'getParam' in '* request', which is of non-class type 'int'
         scrollFontSize = request->getParam("fontSize")->value().toInt();
                                   ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:187:9: error: 'scrollSpeed' was not declared in this scope
         scrollSpeed = request->getParam("speed")->value().toInt();
         ^~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:187:32: error: request for member 'getParam' in '* request', which is of non-class type 'int'
         scrollSpeed = request->getParam("speed")->value().toInt();
                                ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:189:18: error: request for member 'send' in '* request', which is of non-class type 'int'
         request->send(200, "text/plain", "Scrolling text updated");
                  ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:191:18: error: request for member 'send' in '* request', which is of non-class type 'int'
         request->send(400, "text/plain", "Missing parameters");
                  ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In function 'void configureWebServer()':
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:195:36: error: 'AsyncWebServerRequest' has not been declared
   server->on("/file", HTTP_GET, [](AsyncWebServerRequest * request) {
                                    ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: In lambda function:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:196:46: error: request for member 'client' in '* request', which is of non-class type 'int'
     String logmessage = "Client:" + request->client()->remoteIP().toString() + " " + request->url();
                                              ^~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:196:95: error: request for member 'url' in '* request', which is of non-class type 'int'
     String logmessage = "Client:" + request->client()->remoteIP().toString() + " " + request->url();
                                                                                               ^~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:197:33: error: 'checkUserWebAuth' cannot be used as a function
     if (checkUserWebAuth(request)) {
                                 ^
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:201:20: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
       if (request->hasParam("name") && request->hasParam("action")) {
                    ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:201:49: error: request for member 'hasParam' in '* request', which is of non-class type 'int'
       if (request->hasParam("name") && request->hasParam("action")) {
                                                 ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:202:47: error: request for member 'getParam' in '* request', which is of non-class type 'int'
         String fileName = "/"+String(request->getParam("name")->value() );
                                               ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:203:43: error: request for member 'getParam' in '* request', which is of non-class type 'int'
         const char *fileAction = request->getParam("action")->value().c_str();
                                           ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:205:43: error: request for member 'client' in '* request', which is of non-class type 'int'
         logmessage = "Client:" + request->client()->remoteIP().toString() + " " + request->url() + "?name=" + String(fileName) + "&action=" + String(fileAction);
                                           ^~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:205:92: error: request for member 'url' in '* request', which is of non-class type 'int'
         logmessage = "Client:" + request->client()->remoteIP().toString() + " " + request->url() + "?name=" + String(fileName) + "&action=" + String(fileAction);
                                                                                            ^~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:207:14: error: 'LittleFS' was not declared in this scope
         if (!LittleFS.exists(fileName)) {
              ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:207:14: note: suggested alternative: 'bitClear'
         if (!LittleFS.exists(fileName)) {
              ^~~~~~~~
              bitClear
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:209:20: error: request for member 'send' in '* request', which is of non-class type 'int'
           request->send(400, "text/plain", "ERROR: file does not exist");
                    ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:215:22: error: request for member 'send' in '* request', which is of non-class type 'int'
             request->send(LittleFS, fileName, "application/octet-stream");
                      ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:219:22: error: request for member 'send' in '* request', which is of non-class type 'int'
             request->send(200, "text/plain", "Deleted File: " + String(fileName));
                      ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:222:13: error: 'requestedGifPath' was not declared in this scope
             requestedGifPath = fileName; // Store the requested GIF path
             ^~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:225:13: error: 'gifFile' was not declared in this scope
             gifFile = FILESYSTEM.open(fileName);
             ^~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:225:23: error: 'FILESYSTEM' was not declared in this scope
             gifFile = FILESYSTEM.open(fileName);
                       ^~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:231:22: error: request for member 'send' in '* request', which is of non-class type 'int'
             request->send(LittleFS, fileName, "image/gif");
                      ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:235:22: error: request for member 'send' in '* request', which is of non-class type 'int'
             request->send(400, "text/plain", "ERROR: invalid action param supplied");
                      ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:240:18: error: request for member 'send' in '* request', which is of non-class type 'int'
         request->send(400, "text/plain", "ERROR: name and action params required");
                  ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:245:23: error: request for member 'requestAuthentication' in '* request', which is of non-class type 'int'
       return request->requestAuthentication();
                       ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino: At global scope:
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:250:15: error: variable or field 'notFound' declared void
 void notFound(AsyncWebServerRequest *request) {
               ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:250:15: error: 'AsyncWebServerRequest' was not declared in this scope
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:250:38: error: 'request' was not declared in this scope
 void notFound(AsyncWebServerRequest *request) {
                                      ^~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:250:38: note: suggested alternative: 'renameat'
 void notFound(AsyncWebServerRequest *request) {
                                      ^~~~~~~
                                      renameat
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:257:23: error: redefinition of 'bool checkUserWebAuth'
 bool checkUserWebAuth(AsyncWebServerRequest * request) {
                       ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:4:6: note: 'bool checkUserWebAuth' previously defined here
   if (var == "FIRMWARE") {
      ^~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:257:23: error: 'AsyncWebServerRequest' was not declared in this scope
 bool checkUserWebAuth(AsyncWebServerRequest * request) {
                       ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:257:47: error: 'request' was not declared in this scope
 bool checkUserWebAuth(AsyncWebServerRequest * request) {
                                               ^~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:257:47: note: suggested alternative: 'renameat'
 bool checkUserWebAuth(AsyncWebServerRequest * request) {
                                               ^~~~~~~
                                               renameat
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:268:19: error: variable or field 'handleUpload' declared void
 void handleUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) {
                   ^~~~~~~~~~~~~~~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:268:19: error: 'AsyncWebServerRequest' was not declared in this scope
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:268:42: error: 'request' was not declared in this scope
 void handleUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) {
                                          ^~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:268:42: note: suggested alternative: 'renameat'
 void handleUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) {
                                          ^~~~~~~
                                          renameat
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:268:58: error: expected primary-expression before 'filename'
 void handleUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) {
                                                          ^~~~~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:268:75: error: expected primary-expression before 'index'
 void handleUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) {
                                                                           ^~~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:268:90: error: expected primary-expression before '*' token
 void handleUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) {
                                                                                          ^
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:268:91: error: 'data' was not declared in this scope
 void handleUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) {
                                                                                           ^~~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:268:91: note: suggested alternative: 'atan'
 void handleUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) {
                                                                                           ^~~~
                                                                                           atan
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:268:104: error: expected primary-expression before 'len'
 void handleUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) {
                                                                                                        ^~~
/home/sascha/Dokumente/PlatformIO/Projects/HUB75-Pixel-Art-Display/src/webserver.ino:268:109: error: expected primary-expression before 'bool'
 void handleUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) {
                                                                                                             ^~~~
Archiving .pio/build/nodemcu-32s/libff9/libWire.a
*** [.pio/build/nodemcu-32s/src/webserver.ino.cpp.o] Error 1
Indexing .pio/build/nodemcu-32s/libff9/libWire.a
src/main.cpp: In function 'String listFiles(bool, int, int)':
src/main.cpp:401:38: error: 'humanReadableSize' was not declared in this scope
               returnText += "<td>" + humanReadableSize(foundfile.size()) + "</td>";
                                      ^~~~~~~~~~~~~~~~~
src/main.cpp: In function 'void setup()':
src/main.cpp:550:3: error: 'configureWebServer' was not declared in this scope
   configureWebServer(); // start web server
   ^~~~~~~~~~~~~~~~~~
src/main.cpp:550:3: note: suggested alternative: 'AsyncWebServer'
   configureWebServer(); // start web server
   ^~~~~~~~~~~~~~~~~~
   AsyncWebServer
*** [.pio/build/nodemcu-32s/src/main.cpp.o] Error 1
========================================================================== [FAILED] Took 4.21 seconds ==========================================================================

 *  The terminal process "platformio 'run'" terminated with exit code: 1. 
 *  Terminal will be reused by tasks, press any key to close it. 

Der Sourcecode ist ungünstig strukturiert und in den beiden (ehemaligen) ino Dateien so aufgeteilt, dass Variablen/Objekte erst nach dem Gebrauch definiert werden.

Weil die PlatformIO Umgebung den Quellcode, im Gegensatz zur Arduino IDE, nicht automatisch zurecht sortiert, wird das zum Problem. Da muss man das gleich richtig machen.

Ich habe mal auf die schnelle (sehr unschön) etwas zurechtgebastelt. So lässt sich der Code wenigstens kompilieren...

Das PlatformIO Projekt ist diesem Posting angehangen. Entpacke es in Deinem Projektordner lade es in VSC und dann ... viel Glück...

HUB75-Pixel-Art-Display.zip (18,4 KB)

Vielen Danke :blue_heart:

Also is der Code Schlecht gebaut?

Komisch wenn ich die alter Version nutze geht mein Display nutze ich 4.5 Lad Bild hoch bleibt es Dunkel.... Aber das Display geht wenn ich den ESP Einsteck kommen kurz die Info.... IP VERSION etc...

Download der Alten Version
HUB75-Pixel-Art-Display-dev.zip (689,8 KB)

So ich hab es jetzt nochmal mit Arduino versucht Das Display geht wie man im Video 1A sieht.... auch Hochladen nur das Anzeigen will nicht mehr gehen.....

Der macht sich das mit sein Antwort auch einfach hab das gemach kein Verbesserung
Sagt aber auch es wär ja nicht sein Firmenware die Probleme macht jaja komisch bei 2.2 ging es bei 4.5 nicht mehr.... bei wemm liegt jetzt der Fehler...... das geil er Schließ danch direkt den Beitrag....