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

Yepestis
Posts: 890
Joined: Mon Sep 24, 2018 6:08 pm
Location: Wrocław
Has thanked: 19 times
Been thanked: 3 times

Post

Goral64 wrote: Thu Aug 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ę.
User avatar
Robert Błaszczak
Posts: 5222
Joined: Sat Dec 22, 2018 8:55 pm
Location: Zielona Góra
Has thanked: 37 times
Been thanked: 27 times

Post

krycha88 wrote: Thu Aug 18, 2022 1:28 pm
Yepestis wrote: Thu Aug 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
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

To nie jest kwestia włączenia jednej funkcji, tylko dużej ilości zmian w bibliotece.
Najlepsze suple dla Twojego domu :mrgreen:
krycha88
Posts: 5575
Joined: Fri Nov 16, 2018 7:25 am
Been thanked: 5 times

Post

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/
User avatar
Goral64
Posts: 3258
Joined: Fri Dec 27, 2019 6:22 pm
Location: Żerniki Wrocławskie
Has thanked: 2 times
Been thanked: 1 time

Post

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 ;)
Widzimy się na Supla Offline Party Season 2026 :D

Image
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

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.
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
Goral64
Posts: 3258
Joined: Fri Dec 27, 2019 6:22 pm
Location: Żerniki Wrocławskie
Has thanked: 2 times
Been thanked: 1 time

Post

klew wrote: Fri Aug 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ć ;)
Widzimy się na Supla Offline Party Season 2026 :D

Image
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

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.
Najlepsze suple dla Twojego domu :mrgreen:
krycha88
Posts: 5575
Joined: Fri Nov 16, 2018 7:25 am
Been thanked: 5 times

Post

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/
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

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?
Najlepsze suple dla Twojego domu :mrgreen:

Return to “GUI Generic”