Modyfikacja przykładu WebInterface Arduino
-
- Posts: 3104
- Joined: Thu Apr 30, 2020 5:18 pm
- Location: Częstochowa
Thx za pokonanie tej drogi i podzielenie się. Jeszcze pytanie jak usunąć to (chyba) większości niepotrzebne "update file system"
YoMan
________________________________________
Wziąłem udział w SOP2023 & SOP2024
________________________________________
Wziąłem udział w SOP2023 & SOP2024
-
- Posts: 117
- Joined: Sat Jul 21, 2018 4:26 pm
Myślę że wystarczy usunąć odpowiednie linie w packages\framework-arduinoespressif8266\libraries\ESP8266HTTPUpdateServer\src\ESP8266HTTPUpdateServer-impl.hYoMan wrote: Wed Feb 12, 2025 11:12 pm Thx za pokonanie tej drogi i podzielenie się. Jeszcze pytanie jak usunąć to (chyba) większości niepotrzebne "update file system"
To są już pliki z paczki Espressifa, nie Suplowe
Code: Select all
static const char serverIndex[] PROGMEM =
R"(<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8'>
<meta name='viewport' content='width=device-width,initial-scale=1'/>
</head>
<body>
<form method='POST' action='' enctype='multipart/form-data'>
Firmware:<br>
<input type='file' accept='.bin,.bin.gz' name='firmware'>
<input type='submit' value='Update Firmware'>
</form>
------------------------------------------ DO USUNIECIA
<form method='POST' action='' enctype='multipart/form-data'>
FileSystem:<br>
<input type='file' accept='.bin,.bin.gz' name='filesystem'>
<input type='submit' value='Update FileSystem'>
</form>
----------------------------------------------------------------------
</body>
</html>)";

-
- Posts: 10693
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Zmiany w bibliotekach trzeba albo wprowadzić w repo, albo traktować jako ciekawostkę 
Dodałem przed chwilą do html generatora opcję dodawania przycisków HTML_SECTION_BUTTON_BEFORE i HTML_SECTION_BUTTON_AFTER z przykładowym przyciskiem ButtonRefresh.
Zmiany w esp_web_server możesz wrzucić jako PR do supla-device.
Możesz też przerobić przycisk "udpate" na wzór tego ButtonRefresh i też dodać w PR.
Te komponenty od OTA też można by dodać w ramach kodu przycisku "update", tylko tam trzeba sprawdzić jak to dobrze zrobić, aby to dobrze działało.

Dodałem przed chwilą do html generatora opcję dodawania przycisków HTML_SECTION_BUTTON_BEFORE i HTML_SECTION_BUTTON_AFTER z przykładowym przyciskiem ButtonRefresh.
Zmiany w esp_web_server możesz wrzucić jako PR do supla-device.
Możesz też przerobić przycisk "udpate" na wzór tego ButtonRefresh i też dodać w PR.
Te komponenty od OTA też można by dodać w ramach kodu przycisku "update", tylko tam trzeba sprawdzić jak to dobrze zrobić, aby to dobrze działało.
-
- Posts: 117
- Joined: Sat Jul 21, 2018 4:26 pm
Więc może tak:klew wrote: Thu Feb 13, 2025 9:55 am Zmiany w bibliotekach trzeba albo wprowadzić w repo, albo traktować jako ciekawostkę
Dodałem przed chwilą do html generatora opcję dodawania przycisków HTML_SECTION_BUTTON_BEFORE i HTML_SECTION_BUTTON_AFTER z przykładowym przyciskiem ButtonRefresh.
Zmiany w esp_web_server możesz wrzucić jako PR do supla-device.
Możesz też przerobić przycisk "udpate" na wzór tego ButtonRefresh i też dodać w PR.
Te komponenty od OTA też można by dodać w ramach kodu przycisku "update", tylko tam trzeba sprawdzić jak to dobrze zrobić, aby to dobrze działało.
plik button_update.h
Code: Select all
#include "button_update.h"
#include <supla/network/web_sender.h>
#ifdef ARDUINO_ARCH_ESP32
#include <HTTPUpdateServer.h>
HTTPUpdateServer httpUpdater;
#else
#include <ESP8266HTTPUpdateServer.h>
ESP8266HTTPUpdateServer httpUpdater;
#endif
using Supla::Html::ButtonUpdate;
ButtonUpdate::ButtonUpdate(Supla::EspWebServer* server)
: HtmlElement(HTML_SECTION_BUTTON_AFTER), server(server) {
// Automatyczna konfiguracja aktualizacji OTA
httpUpdater.setup(server->getServerPtr(), "/update");
}
void ButtonUpdate::send(Supla::WebSender* sender) {
sender->send(
"<button type=\"button\" onclick=\"window.location.href='/update';\">"
"UPDATE"
"</button>");
}
Code: Select all
#include "button_update.h"
#include <supla/network/web_sender.h>
#ifdef ARDUINO_ARCH_ESP32
#include <HTTPUpdateServer.h>
HTTPUpdateServer httpUpdater;
#else
#include <ESP8266HTTPUpdateServer.h>
ESP8266HTTPUpdateServer httpUpdater;
#endif
using Supla::Html::ButtonUpdate;
ButtonUpdate::ButtonUpdate(Supla::EspWebServer* server)
: HtmlElement(HTML_SECTION_BUTTON_AFTER), server(server) {
// Automatyczna konfiguracja aktualizacji OTA
httpUpdater.setup(server->getServerPtr(), "/update");
}
void ButtonUpdate::send(Supla::WebSender* sender) {
sender->send(
"<button type=\"button\" onclick=\"window.location.href='/update';\">"
"UPDATE"
"</button>");
}
I jeśli w pliku main.cpp dodać tylko taki zapis:
Code: Select all
#include <supla/network/html/button_refresh.h>
#include <supla/network/html/button_update.h>
Supla::Html::ButtonRefresh htmlButtonRefresh;
Supla::Html::ButtonUpdate htmlButtonUpdate(&suplaServer);

i oczywiście po naciśnięciu UPDATE

-
- Posts: 10693
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
To nie będzie dobrze działać. Tzn jak dodasz te pliki, to te klasy http updater będą zawsze tworzone i zawsze będą zużywać pamięć, nawet jeśli nie używasz tego buttona i aktualizacji w ten sposób.
-
- Posts: 117
- Joined: Sat Jul 21, 2018 4:26 pm
Obawiam się że ja już tego nie przeskoczę.klew wrote: Thu Feb 13, 2025 6:43 pm To nie będzie dobrze działać. Tzn jak dodasz te pliki, to te klasy http updater będą zawsze tworzone i zawsze będą zużywać pamięć, nawet jeśli nie używasz tego buttona i aktualizacji w ten sposób.
Jedyne co ja mogę to po prostu dodać tylko przycisk a resztę zapisów zostawić w main jak było...
-
- Posts: 10693
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Wrzuć to jako pr na github. Tam można dawać komentarze do poszczególnych linii kodu i łatwiej podpowiedziećpetione wrote: Thu Feb 13, 2025 6:49 pmObawiam się że ja już tego nie przeskoczę.klew wrote: Thu Feb 13, 2025 6:43 pm To nie będzie dobrze działać. Tzn jak dodasz te pliki, to te klasy http updater będą zawsze tworzone i zawsze będą zużywać pamięć, nawet jeśli nie używasz tego buttona i aktualizacji w ten sposób.
Jedyne co ja mogę to po prostu dodać tylko przycisk a resztę zapisów zostawić w main jak było...
-
- Posts: 117
- Joined: Sat Jul 21, 2018 4:26 pm
Rozwiej moje wątpliwości, nie żebym się sprzeczał tylko dopytuję czy mam dobry dok myślenia...klew wrote: Thu Feb 13, 2025 6:57 pmWrzuć to jako pr na github. Tam można dawać komentarze do poszczególnych linii kodu i łatwiej podpowiedziećpetione wrote: Thu Feb 13, 2025 6:49 pmObawiam się że ja już tego nie przeskoczę.klew wrote: Thu Feb 13, 2025 6:43 pm To nie będzie dobrze działać. Tzn jak dodasz te pliki, to te klasy http updater będą zawsze tworzone i zawsze będą zużywać pamięć, nawet jeśli nie używasz tego buttona i aktualizacji w ten sposób.
Jedyne co ja mogę to po prostu dodać tylko przycisk a resztę zapisów zostawić w main jak było...
Jeśli zaincluduje button_update.h to zużywam pamięć nawet jeśli nie utworze komponentu
Code: Select all
Supla::Html::ButtonUpdate htmlButtonUpdate(&suplaServer)
Bo jeśli tak to to moim zdaniem jeśli includuje button_update.h i to jest to świadome działanie mające na celu stworzyć przycisk co się łączy oczywiście ze zajętością pamięci. A jak ktoś będzie chciał "manualnie" to po trzeba stworzyć inny sposób "niegraficzny"... Hmm
P.S Nigdy nie działałem z Githubem i muszę dopiero doczytać ja stworzyć pull request bo chyba coś źle robię
-
- Posts: 10693
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Plik cpp zawiera obiekty globalne i one będą zajmować pamięć, niezależnie od tego czy dodasz include, czy nie.
Musisz mieć konto na gh, następnie zrobić fork. Swojego forka klonujesz do siebie, tam nanosisz zmiany, commitujesz je i dajesz push.
Wtedy z gh możesz zrobić pr
Musisz mieć konto na gh, następnie zrobić fork. Swojego forka klonujesz do siebie, tam nanosisz zmiany, commitujesz je i dajesz push.
Wtedy z gh możesz zrobić pr