⚙ [TO DO] Co chcielibyście jeszcze dodać do GUI-Generic? ☕

Yepestis
Posty: 431
Rejestracja: pn wrz 24, 2018 6:08 pm
Lokalizacja: Wrocław

Goral64 pisze: czw sie 18, 2022 6:21 pm Chyba nie do końca Yepetisowi o to chodzi :) Ty piszesz o funkcjonalności z modułów ZAMEL-a, czyli wywołanie z clouda w module trybu CONFIG, a Yepetis chciałby kliknąć w cloud na link i otworzyć GUI w GUI-Generic ;)
Chodziło mi o wprowadzenie urządzenia w tryb konfiguracyjny z poziomu cloud.
Co do drugiej funkcjonalności to już wynikło z dyskusji w innym wątku że wymagało by to zmiany w prokole więc w razie potrzeby podglądam IP w aplikacji. Tylko że czasem występuje taki problem że w trybie normalnej pracy nie zawsze da się dobić do GUI, restart urządzenia pomaga przez odłączenie zasilania. Może w najnowszej wersji było to już poprawione, nie wszędzie mam najnowszą wersję.
Awatar użytkownika
Robert Błaszczak
Posty: 2605
Rejestracja: sob gru 22, 2018 8:55 pm
Lokalizacja: Zielona Góra
Kontakt:

krycha88 pisze: czw sie 18, 2022 1:28 pm
Yepestis pisze: czw sie 18, 2022 12:57 pm Czy można przejść w tryb konfiguracyjny z poziomu cloud na urządzeniach z Gui-Generic?
Wiem że można po adresie IP ale nie zawsze to działa, czasem trzeba zrestartować urządzenie aby zaskoczyło.
Jest taka już możliwość tylko w moich lokalnych źródłach. Nie wrzucam tego do buildera bo wiąże się to z przejściem na nową bibliotekę SuplaDevice co spowoduje to, że binarka spuchnie o kolejne 60KB. Co staje się już nie małym problemem dla pamięci 1MB.
Może przy wyborze 2MB lub 4MB pamięci FLASH była by ta funkcja zaszyta w generowanym firmware. Wtedy mniej potrzebne jest włączenie GUI podczas pracy modułu.
Pozdrawiam
Robert Błaszczak

Moja prywatna strona: www.blaszczak.pl
Awatar użytkownika
klew
Posty: 4467
Rejestracja: czw cze 27, 2019 12:16 pm

To nie jest kwestia włączenia jednej funkcji, tylko dużej ilości zmian w bibliotece.
krycha88
Posty: 3542
Rejestracja: pt lis 16, 2018 7:25 am
Kontakt:

Mogę zaproponować 3 drogi na przejście na nową bibliotekę supla-device:
1. Wycinam ręcznie wszystkie niepotrzebne rzeczy takie jak tworzenie HTML bo to one tutaj są problemem i za każdym razem gdy pojawia się nowość w bibliotece to robię ręcznie merge do biblioteki z której korzysta GG
2. @klew zmodyfikuje problematyczne miejsca w bibliotece jakimiś może flagami aby dało się je wyłączyć z kompilacji
3. Nie robić nic i pogodzić się z tym, że biblioteka się rozrasta i większości przypadków aktualizacja modułów 1MB nie będzie działać nawet 2 etapowo.
4. inną o której jeszcze nie wiem.
https://gui-generic-builder.supla.io/
Awatar użytkownika
Goral64
Posty: 2596
Rejestracja: pt gru 27, 2019 6:22 pm

Trzeba walczyć o każdy kilobajt, bo jednak najwięcej modułów z ESP82xx ma 1MB na pokładzie i większość chcielibyśmy aktualizować przez OTA.
Wygenerowałem sobie soft dla gniazdek Sonoff S26 w wersji 4.0.8 i mogłem sobie go na Tasmotę wgrywać jednoetapowo. Najnowsza wersja spuchła o ponad 100kB i już się nie da. Nowe funkcjonalności a zarazem nowe biblioteki będą coś dokładać do kodu wynikowego i jak przewiduje @krycha88 za chwilę może być problem nawet z dwuetapowym OTA dla kości 1MB.

Warty poświęcenia czasu jest zaproponowany punkt 2, aby w SuplaDevice pojawiły się przyjazne flagi wyłączające niepotrzebne biblioteki z kompilacji i linkowania bo nie wszyscy ich potrzebują do swoich modułów.

Buildera online też zrobimy przyjaznego takiemu modułowemu rozwiązaniu ;)

Oczywiście punkt 4 pozostaje cały czas otwarty w ramach możliwości wytwórczych ;)
RPi4(SSD): Supla Cloud●Proxy●Let's Encrypt●MQTT
●MEW-01●4×LIW-01●9×PNW-01●7×ROW-01●4×ROW-02●mROW-02●2×ROW-04m●3×ROW-07
●DIW-01●SBW-01●3×SBW-02●8×SRW-01●mSRW-01●SRW-03●2×SLW-01●2×SLW-02●RNW-01
●2×BRIDGE RF 433●20×SP111●2×P1●25×S26
●12×BME280
Awatar użytkownika
klew
Posty: 4467
Rejestracja: czw cze 27, 2019 12:16 pm

Mogę dodać jakieś flagi, które by wycinały kod. Natomiast większość kompilatorów robi to automatycznie jeśli jakiś kod jest nieużywany. Druga sprawa że takie rzeczy powinno też się dać robić na poziomie budowania samej binarki. Arduino od tym względem jest dość problematyczne, bo ono po prostu bierze wszystkie pliki jak leci i dodaje do komplikacji. Sprawdzę jeszcze czy tutaj coś się nie zmieniło w nowszych wersjach.
Awatar użytkownika
Goral64
Posty: 2596
Rejestracja: pt gru 27, 2019 6:22 pm

klew pisze: pt sie 19, 2022 5:53 am Mogę dodać jakieś flagi, które by wycinały kod. Natomiast większość kompilatorów robi to automatycznie jeśli jakiś kod jest nieużywany. Druga sprawa że takie rzeczy powinno też się dać robić na poziomie budowania samej binarki. Arduino od tym względem jest dość problematyczne, bo ono po prostu bierze wszystkie pliki jak leci i dodaje do komplikacji. Sprawdzę jeszcze czy tutaj coś się nie zmieniło w nowszych wersjach.
Dlatego np. Builder może na podstawie wybranych opcji usuwać pliki ze szkicu zanim zacznie je kompilować ;)
RPi4(SSD): Supla Cloud●Proxy●Let's Encrypt●MQTT
●MEW-01●4×LIW-01●9×PNW-01●7×ROW-01●4×ROW-02●mROW-02●2×ROW-04m●3×ROW-07
●DIW-01●SBW-01●3×SBW-02●8×SRW-01●mSRW-01●SRW-03●2×SLW-01●2×SLW-02●RNW-01
●2×BRIDGE RF 433●20×SP111●2×P1●25×S26
●12×BME280
Awatar użytkownika
klew
Posty: 4467
Rejestracja: czw cze 27, 2019 12:16 pm

Zrobiłem sobie kilka testowych kompilacji pod płytki ESP8266 i działa to tak, że jeśli dany kod nie jest używany, to kompilator wycina to z binarki.
Przykładowo wrzuciłem sobie program ze stroną konfiguracyjną html na aktualnej bibliotece - binarka zajmuje 514513 B.
Następnie wywaliłem instancje klas "html" oraz include'y - binarka zajmuje 508185 B.
Następnie wyrzuciłem pliki cpp od tych klas - binarka zajmuje nadal 508185 B.

Po wyrzuceniu instancji "web servera" - 474301 B
Po wycięciu logów: 467009 B (w log_wrapper.h jest opcja całkowitego wycięcia logów z kodu)

Sam "web server" z nowej biblioteki aż tyle nie zajmuje. Tam dochodzi kod z boardów ESP8266 do obsługi serwera, więc dlatego to rośnie. Można pewnie faviconę wyciąć, ale równie dobrze można zrobić właśną klasę "web server", która nie używa favico i wtedy kompilator sam to wytnie.

Biblioteka sama w sobie będzie jeszcze trochę rosła. Jest to nieuniknione, gdy dodajemy nowe funkcje. Można dość mocno sterować rozmiarem poprzez wybór klas, które używamy bądź nie. Nie przyglądałem się jak GG jest zbudowane. Natomiast jeśli w kodzie są przesłanki dla kompilatora, że dana klasa może być użyta, to jej nie wytnie. Np. tworzenie Relay w zależności od konfiguracji urządzenia zapisanej w "eeprom" spowoduje, że kod będzie częścią binarki, natomiast gdy w kodzie GG nie będzie opcji tworzenia ani używania klasy Relay, to kompilator ten kod wywali z binarki.
Możemy szukać sposobów na jej uszczuplanie, ale potrzebowałbym pewnie konkretnych sugestii, albo informacji w jakich sytuacjach coś za bardzo rośnie.
krycha88
Posty: 3542
Rejestracja: pt lis 16, 2018 7:25 am
Kontakt:

Zrobiłem teraz też testy jak to wygląda:

https://gui-generic-builder.supla.io/
Przekaźniki + przycisk zajmuje 503KB

https://gui-generic-builder.supla.io/test.php
Źródło GG to samo kompilacja przekaźnik + przycisk tylko podmieniona biblioteka 546KB

Przy okazji przystosowałem na tym branchu kod aby dało się przełączyć urządzenie w tryb konfiguracyjny z poziomu clouda opcja " Przełącz urządzenie w tryb konfiguracyjny "

Może faktycznie winy na początku by trzeba poszukać w ustawieniach kompilatora aby klasy nie używane wycinało.
https://gui-generic-builder.supla.io/
Awatar użytkownika
klew
Posty: 4467
Rejestracja: czw cze 27, 2019 12:16 pm

Kompilatory domyślnie to robią.
Przy Arduino za bardzo nie widzę opcji manipulowania parametrami kompilacji. Samo SDK od ESP ma wiele opcji, którymi można się pobawić.

Mógłbyś zrobić testową kompilację bez żadnych zmian związanych z wchodzeniem w tryb cfg? Tak aby kod GG był (o ile się da) identyczny, a tylko różnił się biblioteką Supli?
ODPOWIEDZ

Wróć do „GUI Generic”