GyverPortal

AlexGyver

★★★★★★✩
Команда форума
30 Июл 2018
359
573
С иконками была какая то проблема, в 3.4 работают отлично, ждём)
 

pingemall

✩✩✩✩✩✩✩
22 Мар 2020
25
0
Родина
www.mj2cnc.kh.ua
Можно ли в поле ввода "GP.TEXT" ограничить набор допустимых символов, а в поле "GP.NUMBER" предел вводимых значений?
 

Samoswall

✩✩✩✩✩✩✩
16 Ноя 2022
6
2
Столкнулся с проблемой совместного использования библиотек!
C++:
#include <ArduinoJson.h>
#include <LittleFS.h>
#include <FastBot.h>
#include <GyverPortal.h>
#include <GyverNTP.h>

GyverPortal portal(&LittleFS);
Дальше можно писать в коде что угодно, все равно будет ошибка
C++:
exit status 1
Ошибка компиляции для платы LOLIN(WEMOS) D1 R2 & mini.
От типа платы не зависит!
Ссылается вот на эту ошибку:
C++:
C:\Users\User\Documents\Arduino\libraries\FastBot\src/FastBot.h: In member function 'uint8_t FastBot::update(uint8_t)':
C:\Users\User\Documents\Arduino\libraries\FastBot\src/FastBot.h:782:65: error: 'class ESP8266HTTPUpdate' has no member named 'updateFS'
         else if (OTAflag == FB_SPIFFS) OTAstate = ESPhttpUpdate.updateFS(client, *_file_ptr);
 

Samoswall

✩✩✩✩✩✩✩
16 Ноя 2022
6
2
@pingemall, так FastBot и GyverPortal уже используют LittleFS, как бы прикручивать FS не правильно.
 

Samoswall

✩✩✩✩✩✩✩
16 Ноя 2022
6
2
@Samoswall,
Если версию библиотеки FastBot откатить на 2.12 (метод тыка, до добавления OTA обновления, который однозначно должен использовать LittleFS ),
то ошибки нет. Так что это вопрос к разработчикам, что не так прикрутили в новых обновлениях!
 

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
@Samoswall, попробуй скомпилировать для NodeMCU. Библиотека поддерживает и FS и LittleFS.
 

shura2

✩✩✩✩✩✩✩
19 Мар 2021
6
0
Что за remove(): /test.txt прицепился? найти не могу

C++:
[ 28455][E][WebServer.cpp:649] _handleRequest(): request handler not found
[ 40085][E][WebServer.cpp:649] _handleRequest(): request handler not found
Upload: DWprj.hmi, from: file_upl
Uploaded file: DWprj.hmi, from: file_upl
[ 56292][E][WebServer.cpp:649] _handleRequest(): request handler not found
[ 56298][E][vfs_api.cpp:175] remove(): /test.txt does not exists or is directory
[272024][E][WebServer.cpp:649] _handleRequest(): request handler not found
[280009][E][WebServer.cpp:649] _handleRequest(): request handler not found
[280016][E][vfs_api.cpp:175] remove(): /test.txt does not exists or is directory
после обновления страницы появляется.
 

AlexGyver

★★★★★★✩
Команда форума
30 Июл 2018
359
573
@shura2, а что делает скетч, просто выводит файл в страницу?
 

gorlanovmax

✩✩✩✩✩✩✩
26 Окт 2022
69
6
@AlexGyver

C++:
_handleRequest(): request handler not found
А это сообщение является ошибкой?
У меня тоже регулярно проскакивает
 

shura2

✩✩✩✩✩✩✩
19 Мар 2021
6
0
@AlexGyver,

Да, я взял скетч fileupload в примерах, только поменял littlefs на sd (с littlefs тоже самое)

C++:
void build() {
  GP.BUILD_BEGIN();
  GP.THEME(GP_DARK);
  GP.FILE_UPLOAD("file_upl", "Выбрать файл: ");
  GP.FILE_MANAGER(&SD);    // файловый менеджер

  GP.BUTTON("btn", "Hint", "bnt");  //имя, текст, id
  GP.BUILD_END();
}
понял почему именно /test.txt. это последний удаленный файл. ради эксперимента зашел с телефона, пока файл не удалил ошибки не было. сейчас на телефоне и компе, если рефреш сделать, то ругается на разные файлы.
 

AlexGyver

★★★★★★✩
Команда форума
30 Июл 2018
359
573
@gorlanovmax,
А это сообщение является ошибкой?
Это "фича" стандартной библиотеки: есть хэндлер onNotFound, который как раз используется для обработки запросов с портала. Но зачем-то этот хэндлер пуляет ошибки [E] в отладку при его использовании
 

AlexGyver

★★★★★★✩
Команда форума
30 Июл 2018
359
573
@shura2, если в строке адреса присутствует запрос на удаление - его надо убрать перед обновлением страницы. Я переделал ссылку на кнопку, чтобы в строке адреса не появлялось запросов, появится в 3.4
 
Изменено:

shura2

✩✩✩✩✩✩✩
19 Мар 2021
6
0
Еще вопрос: Я в строку вызова
C++:
GP.FILE_MANAGER(&SD, Directory);
добавил выбор директории для последующего отображения. и как смог внес поправки в библиотеку:

C++:
    // ======================= ФАЙЛОВЫЙ МЕНЕДЖЕР =======================
    void _href(const String& url, const String& text) {
        *_GPP += F("<a style='text-decoration:none' href='");
        *_GPP += url;
        *_GPP += F("'>");
        *_GPP += text;
        *_GPP += F("</a>");
    }
    
    void _fileRow(const String& fpath, const String& fname, int size, int i) {
        *_GPP += "<tr>";
        *_GPP += F("<td align='left' style='padding-right:5px'>");
        *_GPP += String(i) + ". ";
        _href(fpath+fname, fname);
        *_GPP += F("<td>");
        *_GPP += '[';
        *_GPP += String(size / 1000.0, 1);
        *_GPP += F(" kB]");
        *_GPP += "<td>";
        _href(String("?GP_delete=") + fpath+""+fname, "❌");
    }
    void _showFiles(fs::FS *fs, const String& path, __attribute__((unused)) uint8_t levels = 0) {
#ifdef ESP8266
        yield();
        Dir dir = fs->openDir(path);
        while (dir.next()) {
            if (dir.isFile() && dir.fileName().length()) {
                String fpath = '/' + path + dir.fileName();
                _fileRow(fpath, dir.fileSize());
            }
            if (dir.isDirectory()) {
                String p = path;
                p += dir.fileName();
                p += '/';
                Dir sdir = fs->openDir(p);
                _showFiles(fs, p);
            }
        }
#else   // ESP32
        File root = fs->open(path.length() ? path.c_str() : ("/"));
        if (!root || !root.isDirectory()) return;
        File file;
        int i=0;
        while (file = root.openNextFile()) {
            if (file.isDirectory()) {
                //if (levels) _showFiles(fs, file.path(), levels - 1);
            } else {
                
                
                _fileRow(path +'/', file.name(), file.size(), i);
                i++;
            }
        }
#endif
    }
    
    void FILE_MANAGER(fs::FS *fs, const String workPath) {
        *_GPP += F("<table>");
        _showFiles(fs, workPath, 5 );
Теперь у меня отображается только нужная мне директория.
Код:
0. main1221-9xx.txt    [0.1 kB]    ❌
вопрос в следующем. Я внес изменения в вашу библиотеку, и теперь, при обновлении библиотеки, мои изменения пропадут. Есть ли решение как избежать этого?
 

AlexGyver

★★★★★★✩
Команда форума
30 Июл 2018
359
573
@shura2,в строке адреса в браузере. При нажатии на кнопку удаления отправляется uri запрос на удаление, он добавляется к адресу страницы. Поэтому при обновлении страницы будет снова отправлен запрос на удаление