Jak samemu zbudować GG

[email protected]
Posts: 1584
Joined: Mon Feb 06, 2023 8:56 am
Has thanked: 18 times
Been thanked: 26 times

Post

Kilka osób na przestrzeni czasu pytało jak to zrobić, więc opisuje raz bo nie chce mi się na PW odpisywać.

Gdzie jest dostępne GG:
- WEB: https://github.com/rkalwak/GUI-Generic/tree/stable ( z aktualną biblioteką SuplaDevice) lub https://github.com/krycha88/GUI-Generic
- Desktop: https://github.com/rkalwak/GUI-Generic

Samo GG ma kilka istotnych plików:
platformio.ini - plik w którym znajdują się konfiguracje dla poszczególnych ESP oraz konfiguracje flag włączających poszczególne sensory i funkcjonalności. Opis każdej z nich można zobaczyć w GG Web, natomiast faktyczna nazwa nie jest tam widoczna - można się domyślić co jest czym ;) Po jego edycji platform.io zacznie ściągać potrzebne boardy i inne narzędzia potrzebne do kompilacji i wgrywania. Jak zrobi się to przez inny edytor niż VS Code, to po prostu ściągnie podczas próby kompilacji.

GUI-Generic.ino - główny plik programu, jego zamiennikiem jest main.cpp

Platform.io:

W platformio. ini należy odkomentować przez usunięcie średnika w sekcji poniżej ESP dla którego chcemy budować, wszystkie inne muszą być zakomentowane średnikiem.

Code: Select all

[platformio]
default_envs = 
;                 GUI_Generic_1MB
;                 GUI_Generic_1MB-en  
;                 GUI_Generic_2MB 
;                 GUI_Generic_4MB
;                 GUI_Generic_minimal
;                 GUI_Generic_lite
;                 GUI_Generic_sensors
;                 GUI_Generic_DEBUG
                 GUI_Generic_ESP32
;                 GUI_Generic_blank
;                 GUI_Generic_ESP32C3
;                 GUI_Generic_ESP32S3
;                  GUI_Generic_ESP32C6
Aby wybrać wybraną opcję należy w tym pliku odkomentować daną flagę przez usunięcie średnika w sekcji odpowiedzialnej za dane ESP, komentuje się przez dodanie średnika pod sekcją "build_flags" - tu uwaga, dla starszych ESP są osobne konfiguracje dla każdego rodzaju ESP:

Code: Select all

build_flags =  
 -D SUPLA_EXCLUDE_LITTLEFS_CONFIG
 -D TEMPLATE_BOARD_JSON
 -D OPTIONS_HASH='"e3bc65278b88a589d06c3f8316cf0e3b"'
 -D BUILD_VERSION='"26.01.01"'
 -D SUPLA_ENABLE_GUI
; -D SUPLA_ENABLE_SSL
  -D SUPLA_CONFIG
  -D SUPLA_OTA
; -D SUPLA_RELAY
; -D SUPLA_BUTTON
; -D SUPLA_ACTION_TRIGGER
; -D SUPLA_LIMIT_SWITCH
; -D SUPLA_ROLLERSHUTTER
; -D SUPLA_DS18B20
Otworzyć plik GUI-Generic.ino i na nim kliknąć na menu i Build/Upload - tak wiem, ja na screenie mam main.cpp ale pod platform.io to nie ma znaczenia, natomiast Arduino IDE musi mieć nazwę pliku *.ino zgodną z katalogiem w którym leży projekt.

platformio1.png
Ewentualnie na dole jest możliwość zmiany portu do którego jest podłączone ESP.
platformio2.png
Generalnie aż tyle ;)

Polecam sobie poczytać:
https://docs.platformio.org/en/latest/t ... sting.html
https://docs.platformio.org/en/latest/p ... index.html

I spróbować zrobić hello world :)

Taka minimalna zawartość platformio.ini to:

Code: Select all

[platformio]
default_envs = GUI_Generic_ESP32

[env:GUI_Generic_ESP32]
platform = https://github.com/pioarduino/platform-espressif32/releases/download/53.03.11/platform-espressif32.zip
board = esp32dev
framework = arduino
monitor_speed = 115200
board_build.partitions = min_spiffs.csv
JEDNA WAŻNA RZECZ: definicja platform pod arduino i platform.io to dwie rożne rzeczy więc jak ktoś instaluje jedno i drugie to niech się spodziewa kilku GB danych.


Platform.io CLI:

Code: Select all

platformio run --target upload --upload-port COM6 -e GUI_Generic_ESP32
Gdzie GUI_Generic_ESP32 to jest nazwa konfiguracji pod dany rodzaj ESP w pliku platformio.ini

Wybór flag do budowania jak wyżej.

Arduino CLI:

Code: Select all

arduino-cli compile "sciezka do katalogu z GUI-Generic.ino" --fqbn esp32:esp32:esp32 --verbose --log --build-property build.flags="-D SUPLA_AHTX0" --output-dir "f:/platformio/testbuild/build" --port=COM6
Ważne parametry:
--fqbn (Fully Qualified Board Name) - pełna nazwa płytki, np. esp32:esp32:esp32, arduino:avr:uno
-p lub --port - port szeregowy (COM6, COM3, itp.)
-DSUPLA_AHTX0- nazwa flagi sensora który chcemy włączyć. koniecznie w takim formacie:
-DSUPLA_MS5611 - jeśli to jest tylko flaga(makro)
-DSUPLA_MS5611=1 jeśli to jest makro z wartością liczbową
'-DSUPLA_MS5611="TEXT"' jeśli to jest makro z wartością tekstową - na to zmarnowałem kilka dni kiedyś ....

To jest wersja mega uproszczona, Builder wypluwa trochę bardziej ciekawą wersję:

Code: Select all

arduino-cli compile --no-color --quiet --clean -e --libraries "/app_data/code/GUI-Generic_bv6.1_gv26.01.01_pl_25314b1a76dd8c7dd8ba1592c9b48e2e/libraries" -b esp32:esp32:d32:PartitionScheme=min_spiffs --build-property "build.extra_flags=-DESP32  '-DBUILD_VERSION=\"26.01.01\"' '-DOPTIONS_HASH=\"25314b1a76dd8c7dd8ba1592c9b48e2e\"' '-DPSTR_ALIGN=1' -DATOMIC_FS_UPDATE -DBEARSSL_SSL_BASIC -DFP_IN_IRON -DGLOBALPARAMETERS_SCL=22 -DGLOBALPARAMETERS_SDA=21 -DMIMETYPE_MINIMAL -DNDEBUG -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x_190703 -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH_LOW_FLASH -DSUPLA_CONFIG -DSUPLA_DISABLE_LOGS -DSUPLA_ENABLE_GUI -DSUPLA_EXCLUDE_LITTLEFS_CONFIG -DSUPLA_MS5611 -DSUPLA_MS5611_Altitude=250 -DSUPLA_OTA -DVTABLES_IN_FLASH" --output-dir /app_data/bv6.1/gv26.01.01/pl/25314b1a76dd8c7dd8ba1592c9b48e2e
Dla mnie to jest straszna rzeźba się z tym bawić i uważać, żeby gdzieś nie zrobić literówki, ekstra przecinka

Arduino IDE:


Porównanie

Code: Select all

| Cecha                                       | PlatformIO                                   | Arduino CLI                 |
|----------------------------------------------|--------------------------------------------------|-----------------------------------|
| Zarządzanie zależnościami  | Automatyczne (platformio.ini) | Ręczne                         |
| Konfiguracja                            | Plik INI                                          | Parametry CLI             |
| Środowiska budowania         | Wiele w jednym projekcie          | Jedno na kompilację |
| Integracja IDE                          | VS Code, CLion                           | Dowolny edytor           |
| Szybkość                                  | Szybsza kompilacja                   | Standardowa               |

UWAGA: wyedytuje tego posta później jak sprawdzę dokładnie w Arduino IDE! I będę miał więcej czasu :P
UWAGA2: prędzej czy poźniej przerzucę to jako plik w repozytorium GG
You do not have the required permissions to view the files attached to this post.

Return to “GUI Generic”