From f953f2b03c3b47f182ca671e885d83f94f822479 Mon Sep 17 00:00:00 2001 From: v00g100skr Date: Tue, 4 Feb 2025 19:13:24 +0200 Subject: [PATCH 01/25] esp32s3 compatibility --- firmware/platformio.ini | 1 + firmware/src/JaamFirmware.cpp | 31 ++++++++++++++----------------- firmware/src/JaamSettings.cpp | 10 +++++----- 3 files changed, 20 insertions(+), 22 deletions(-) diff --git a/firmware/platformio.ini b/firmware/platformio.ini index f5cffade..e9c10076 100644 --- a/firmware/platformio.ini +++ b/firmware/platformio.ini @@ -11,6 +11,7 @@ [env:firmware] platform = espressif32@6.9.0 board = esp32dev +#board = esp32-s3-devkitc-1 framework = arduino monitor_speed = 115200 board_build.partitions = min_spiffs.csv diff --git a/firmware/src/JaamFirmware.cpp b/firmware/src/JaamFirmware.cpp index d733540e..b608c860 100644 --- a/firmware/src/JaamFirmware.cpp +++ b/firmware/src/JaamFirmware.cpp @@ -3426,15 +3426,13 @@ void initLegacy() { #endif switch (settings.getInt(LEGACY)) { case 0: - LOG.println("Mode: jaam 1"); + LOG.println("Mode: jaam 1"); - pinMode(settings.getInt(POWER_PIN), OUTPUT); - pinMode(settings.getInt(WIFI_PIN), OUTPUT); - pinMode(settings.getInt(DATA_PIN), OUTPUT); - pinMode(settings.getInt(HA_PIN), OUTPUT); - //pinMode(settings.reservedpin, OUTPUT); - - servicePin(POWER, HIGH, false); + settings.saveInt(POWER_PIN, 12, false); + settings.saveInt(WIFI_PIN, 14, false); + settings.saveInt(DATA_PIN, 25, false); + settings.saveInt(HA_PIN, 26, false); + settings.saveInt(RESERVED_PIN, 27, false); settings.saveInt(KYIV_DISTRICT_MODE, 3, false); settings.saveInt(MAIN_LED_PIN, 13, false); @@ -3446,6 +3444,14 @@ void initLegacy() { settings.saveInt(DISPLAY_MODEL, 1, false); settings.saveInt(DISPLAY_HEIGHT, 64, false); settings.saveBool(USE_TOUCH_BUTTON_1, 0, false); + + pinMode(settings.getInt(POWER_PIN), OUTPUT); + pinMode(settings.getInt(WIFI_PIN), OUTPUT); + pinMode(settings.getInt(DATA_PIN), OUTPUT); + pinMode(settings.getInt(HA_PIN), OUTPUT); + + servicePin(POWER, HIGH, false); + break; case 1: LOG.println("Mode: transcarpathia"); @@ -3550,18 +3556,9 @@ void initFastledStrip(uint8_t pin, const CRGB *leds, int pixelcount) { case 18: FastLED.addLeds(const_cast(leds), pixelcount); break; - case 25: - FastLED.addLeds(const_cast(leds), pixelcount); - break; case 26: FastLED.addLeds(const_cast(leds), pixelcount); break; - case 27: - FastLED.addLeds(const_cast(leds), pixelcount); - break; - case 32: - FastLED.addLeds(const_cast(leds), pixelcount); - break; case 33: FastLED.addLeds(const_cast(leds), pixelcount); break; diff --git a/firmware/src/JaamSettings.cpp b/firmware/src/JaamSettings.cpp index 54bdd76b..417fcfcc 100644 --- a/firmware/src/JaamSettings.cpp +++ b/firmware/src/JaamSettings.cpp @@ -41,11 +41,11 @@ std::map intSettings = { {CLEAR_PIN, {"cp", -1}}, {BUZZER_PIN, {"bzp", -1}}, {LIGHT_SENSOR_PIN, {"lp", -1}}, - {POWER_PIN, {"powp", 12}}, - {WIFI_PIN, {"wifip", 14}}, - {DATA_PIN, {"datap", 25}}, - {HA_PIN, {"hap", 26}}, - {RESERVED_PIN, {"resp", 27}}, + {POWER_PIN, {"powp", -1}}, + {WIFI_PIN, {"wifip", -1}}, + {DATA_PIN, {"datap", -1}}, + {HA_PIN, {"hap", -1}}, + {RESERVED_PIN, {"resp", -1}}, {ALERT_CLEAR_PIN_MODE, {"acpm", 0}}, {HA_MQTT_PORT, {"ha_mqttport", 1883}}, {CURRENT_BRIGHTNESS, {"cbr", 50}}, From 19b32604cc385b1ca69e855a2820e4da3b1dbff7 Mon Sep 17 00:00:00 2001 From: v00g100skr Date: Tue, 4 Feb 2025 22:12:35 +0200 Subject: [PATCH 02/25] configs --- firmware/platformio.ini | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/firmware/platformio.ini b/firmware/platformio.ini index e9c10076..9aa0cd29 100644 --- a/firmware/platformio.ini +++ b/firmware/platformio.ini @@ -8,15 +8,14 @@ ; Please visit documentation for the other options and examples ; https://docs.platformio.org/page/projectconf.html -[env:firmware] +[platformio] +default_envs = firmware_esp32 + +[common] platform = espressif32@6.9.0 -board = esp32dev -#board = esp32-s3-devkitc-1 framework = arduino monitor_speed = 115200 board_build.partitions = min_spiffs.csv -# uncomment the following line to enable crash backtrace -; monitor_filters = esp32_exception_decoder lib_deps = https://github.com/MatheusAlvesA/ArduinoAsync.git adafruit/Adafruit SSD1306@2.5.13 @@ -31,6 +30,16 @@ lib_deps = sensirion/arduino-sht@1.2.6 soylentorange/forcedBMX280@1.1.1 dawidchyrzynski/home-assistant-integration@2.1.0 - https://github.com/J-A-A-M/melody-player.git@2.4.0 + https://github.com/J-A-A-M/melody-player.git@2.4.0 yasheena/TelnetSpy@1.4 mathertel/OneButton@2.6.1 + +[env:firmware_esp32] +extends = common +board = esp32dev +build_flags = -D ESP32=1 + +[env:firmware_esp32s3] +extends = common +board = esp32-s3-devkitc-1 +build_flags = -D ESP32S3=1 From 9130b8f4c9f6d67610753cff474baee17084e158 Mon Sep 17 00:00:00 2001 From: v00g100skr Date: Tue, 4 Feb 2025 22:15:04 +0200 Subject: [PATCH 03/25] configs fix --- firmware/platformio.ini | 4 ++-- firmware/src/JaamFirmware.cpp | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/firmware/platformio.ini b/firmware/platformio.ini index 9aa0cd29..40f07f6a 100644 --- a/firmware/platformio.ini +++ b/firmware/platformio.ini @@ -9,7 +9,7 @@ ; https://docs.platformio.org/page/projectconf.html [platformio] -default_envs = firmware_esp32 +default_envs = firmware [common] platform = espressif32@6.9.0 @@ -34,7 +34,7 @@ lib_deps = yasheena/TelnetSpy@1.4 mathertel/OneButton@2.6.1 -[env:firmware_esp32] +[env:firmware] extends = common board = esp32dev build_flags = -D ESP32=1 diff --git a/firmware/src/JaamFirmware.cpp b/firmware/src/JaamFirmware.cpp index b608c860..77dcf355 100644 --- a/firmware/src/JaamFirmware.cpp +++ b/firmware/src/JaamFirmware.cpp @@ -3556,9 +3556,18 @@ void initFastledStrip(uint8_t pin, const CRGB *leds, int pixelcount) { case 18: FastLED.addLeds(const_cast(leds), pixelcount); break; + case 25: + FastLED.addLeds(const_cast(leds), pixelcount); + break; case 26: FastLED.addLeds(const_cast(leds), pixelcount); break; + case 27: + FastLED.addLeds(const_cast(leds), pixelcount); + break; + case 32: + FastLED.addLeds(const_cast(leds), pixelcount); + break; case 33: FastLED.addLeds(const_cast(leds), pixelcount); break; From ae9e7f030e81953ec6364feb7679ff42b91d187c Mon Sep 17 00:00:00 2001 From: v00g100skr Date: Wed, 5 Feb 2025 00:03:57 +0200 Subject: [PATCH 04/25] fastled pin map --- firmware/src/Constants.h | 13 +++++ firmware/src/JaamFirmware.cpp | 105 ++++++++++++++++++---------------- 2 files changed, 69 insertions(+), 49 deletions(-) diff --git a/firmware/src/Constants.h b/firmware/src/Constants.h index b5fe42db..48342e5e 100644 --- a/firmware/src/Constants.h +++ b/firmware/src/Constants.h @@ -339,3 +339,16 @@ static SettingListItem LEGACY_OPTIONS[LEGACY_OPTIONS_COUNT] = { }; static const size_t MAX_JSON_SIZE = 6000; // 6KB + +// Визначення пінів для різних плат +#if defined(ESP32S3) + #define SUPPORTED_LEDS_PINS {2, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21} +#elif defined(ESP32) + #define SUPPORTED_LEDS_PINS {2, 4, 12, 13, 14, 15, 16, 17, 18, 25, 26, 27, 32, 33} +#else + #error "Платформа не підтримується!" +#endif + +// Макрос для генерації switch-case для кожного піна +#define GENERATE_PIN_CASE(pin) \ + case pin: FastLED.addLeds(const_cast(leds), pixelcount); break; diff --git a/firmware/src/JaamFirmware.cpp b/firmware/src/JaamFirmware.cpp index 77dcf355..c9d56c0e 100644 --- a/firmware/src/JaamFirmware.cpp +++ b/firmware/src/JaamFirmware.cpp @@ -3527,57 +3527,64 @@ void initClearPin() { } void initFastledStrip(uint8_t pin, const CRGB *leds, int pixelcount) { - switch (pin) - { - case 2: - FastLED.addLeds(const_cast(leds), pixelcount); - break; - case 4: - FastLED.addLeds(const_cast(leds), pixelcount); - break; - case 12: - FastLED.addLeds(const_cast(leds), pixelcount); - break; - case 13: - FastLED.addLeds(const_cast(leds), pixelcount); - break; - case 14: - FastLED.addLeds(const_cast(leds), pixelcount); - break; - case 15: - FastLED.addLeds(const_cast(leds), pixelcount); - break; - case 16: - FastLED.addLeds(const_cast(leds), pixelcount); - break; - case 17: - FastLED.addLeds(const_cast(leds), pixelcount); - break; - case 18: - FastLED.addLeds(const_cast(leds), pixelcount); - break; - case 25: - FastLED.addLeds(const_cast(leds), pixelcount); - break; - case 26: - FastLED.addLeds(const_cast(leds), pixelcount); - break; - case 27: - FastLED.addLeds(const_cast(leds), pixelcount); - break; - case 32: - FastLED.addLeds(const_cast(leds), pixelcount); - break; - case 33: - FastLED.addLeds(const_cast(leds), pixelcount); - break; - default: - LOG.print("This PIN is not supported for LEDs: "); - LOG.println(pin); - break; - } + bool isSupported = false; + + // Перевірка, чи пін входить до підтримуваних + for (auto supportedPin : SUPPORTED_LEDS_PINS) { + if (pin == supportedPin) { + isSupported = true; + break; + } + } + + if (!isSupported) { + LOG.print("This PIN is not supported for LEDs: "); + LOG.println(pin); + return; + } + + switch (pin) { + #if defined(ESP32S3) + GENERATE_PIN_CASE(2) + GENERATE_PIN_CASE(4) + GENERATE_PIN_CASE(8) + GENERATE_PIN_CASE(9) + GENERATE_PIN_CASE(10) + GENERATE_PIN_CASE(11) + GENERATE_PIN_CASE(12) + GENERATE_PIN_CASE(13) + GENERATE_PIN_CASE(14) + GENERATE_PIN_CASE(15) + GENERATE_PIN_CASE(16) + GENERATE_PIN_CASE(17) + GENERATE_PIN_CASE(18) + GENERATE_PIN_CASE(19) + GENERATE_PIN_CASE(20) + GENERATE_PIN_CASE(21) + #elif defined(ESP32) + GENERATE_PIN_CASE(2) + GENERATE_PIN_CASE(4) + GENERATE_PIN_CASE(12) + GENERATE_PIN_CASE(13) + GENERATE_PIN_CASE(14) + GENERATE_PIN_CASE(15) + GENERATE_PIN_CASE(16) + GENERATE_PIN_CASE(17) + GENERATE_PIN_CASE(18) + GENERATE_PIN_CASE(25) + GENERATE_PIN_CASE(26) + GENERATE_PIN_CASE(27) + GENERATE_PIN_CASE(32) + GENERATE_PIN_CASE(33) + #endif + default: + LOG.print("Error: Unexpected pin configuration for this board: "); + LOG.println(pin); + break; + } } + void initStrip() { LOG.println("Init leds"); LOG.print("pixelpin: "); From d7c70a9185f6026cdaedc0e47fa39a4c7be7bf3b Mon Sep 17 00:00:00 2001 From: v00g100skr Date: Wed, 5 Feb 2025 18:54:16 +0200 Subject: [PATCH 05/25] buils task --- .github/workflows/compile.yml | 20 +++++++++++++++++++ .github/workflows/firmware-compile/action.yml | 2 +- firmware/platformio.ini | 4 ++-- firmware/src/Constants.h | 4 ++-- firmware/src/Definitions.h | 2 ++ firmware/src/JaamFirmware.cpp | 4 ++-- 6 files changed, 29 insertions(+), 7 deletions(-) diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml index b2760687..ceed1764 100644 --- a/.github/workflows/compile.yml +++ b/.github/workflows/compile.yml @@ -17,6 +17,7 @@ uses: ./.github/workflows/firmware-compile with: project-folder: firmware + project-env: firmware - name: Copy bin file run: | cp -f ${{ github.workspace }}/firmware/.pio/build/firmware/firmware.bin ${{ github.workspace }}/firmware.bin @@ -25,6 +26,23 @@ with: name: firmware.bin path: ${{ github.workspace }}/firmware.bin + compile_firmware_esp32s3: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Compile firmware + uses: ./.github/workflows/firmware-compile + with: + project-folder: firmware + project-env: firmware_esp32s3 + - name: Copy bin file + run: | + cp -f ${{ github.workspace }}/firmware/.pio/build/firmware/firmware.bin ${{ github.workspace }}/firmware-esp32s3.bin + - name: Upload firmware esp32s3 + uses: actions/upload-artifact@v4 + with: + name: firmware-esp32s3.bin + path: ${{ github.workspace }}/firmware-esp32s3.bin compile_firmware_lite: runs-on: ubuntu-latest steps: @@ -36,6 +54,7 @@ uses: ./.github/workflows/firmware-compile with: project-folder: firmware + project-env: firmware - name: Copy bin file run: | cp -f ${{ github.workspace }}/firmware/.pio/build/firmware/firmware.bin ${{ github.workspace }}/firmware-lite.bin @@ -56,6 +75,7 @@ uses: ./.github/workflows/firmware-compile with: project-folder: firmware + project-env: firmware - name: Copy bin file run: | cp -f ${{ github.workspace }}/firmware/.pio/build/firmware/firmware.bin ${{ github.workspace }}/firmware-jaam2-test.bin diff --git a/.github/workflows/firmware-compile/action.yml b/.github/workflows/firmware-compile/action.yml index 331c0ff4..0041cd05 100644 --- a/.github/workflows/firmware-compile/action.yml +++ b/.github/workflows/firmware-compile/action.yml @@ -24,4 +24,4 @@ runs: run: pip install --upgrade platformio - name: Build ${{ inputs.project-folder }} shell: bash - run: pio run -d ${{ inputs.project-folder }} + run: pio run -d ${{ inputs.project-folder }} ${{ inputs.project-env }} diff --git a/firmware/platformio.ini b/firmware/platformio.ini index 40f07f6a..e1d36a83 100644 --- a/firmware/platformio.ini +++ b/firmware/platformio.ini @@ -37,9 +37,9 @@ lib_deps = [env:firmware] extends = common board = esp32dev -build_flags = -D ESP32=1 +build_flags = -D BOARD_ESP32=1 [env:firmware_esp32s3] extends = common board = esp32-s3-devkitc-1 -build_flags = -D ESP32S3=1 +build_flags = -D BOARD_ESP32S3=1 diff --git a/firmware/src/Constants.h b/firmware/src/Constants.h index 48342e5e..f516818d 100644 --- a/firmware/src/Constants.h +++ b/firmware/src/Constants.h @@ -341,9 +341,9 @@ static SettingListItem LEGACY_OPTIONS[LEGACY_OPTIONS_COUNT] = { static const size_t MAX_JSON_SIZE = 6000; // 6KB // Визначення пінів для різних плат -#if defined(ESP32S3) +#if defined(BOARD_ESP32S3) #define SUPPORTED_LEDS_PINS {2, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21} -#elif defined(ESP32) +#elif defined(BOARD_ESP32) #define SUPPORTED_LEDS_PINS {2, 4, 12, 13, 14, 15, 16, 17, 18, 25, 26, 27, 32, 33} #else #error "Платформа не підтримується!" diff --git a/firmware/src/Definitions.h b/firmware/src/Definitions.h index b51db88d..1f384db9 100644 --- a/firmware/src/Definitions.h +++ b/firmware/src/Definitions.h @@ -1,6 +1,8 @@ #define LITE 0 #define TEST_MODE 0 #define TELNET_ENABLED 0 +//#define BOARD_ESP32 1 +//#define BOARD_ESP32S3 0 #if LITE #define ARDUINO_OTA_ENABLED 0 #define FW_UPDATE_ENABLED 0 diff --git a/firmware/src/JaamFirmware.cpp b/firmware/src/JaamFirmware.cpp index c9d56c0e..1032191d 100644 --- a/firmware/src/JaamFirmware.cpp +++ b/firmware/src/JaamFirmware.cpp @@ -3544,7 +3544,7 @@ void initFastledStrip(uint8_t pin, const CRGB *leds, int pixelcount) { } switch (pin) { - #if defined(ESP32S3) + #if defined(BOARD_ESP32S3) GENERATE_PIN_CASE(2) GENERATE_PIN_CASE(4) GENERATE_PIN_CASE(8) @@ -3561,7 +3561,7 @@ void initFastledStrip(uint8_t pin, const CRGB *leds, int pixelcount) { GENERATE_PIN_CASE(19) GENERATE_PIN_CASE(20) GENERATE_PIN_CASE(21) - #elif defined(ESP32) + #elif defined(BOARD_ESP32) GENERATE_PIN_CASE(2) GENERATE_PIN_CASE(4) GENERATE_PIN_CASE(12) From 891184574ebdc0727b4da83cb798adb994371b09 Mon Sep 17 00:00:00 2001 From: v00g100skr Date: Wed, 5 Feb 2025 18:56:15 +0200 Subject: [PATCH 06/25] fix --- .github/workflows/firmware-compile/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/firmware-compile/action.yml b/.github/workflows/firmware-compile/action.yml index 0041cd05..280b2aff 100644 --- a/.github/workflows/firmware-compile/action.yml +++ b/.github/workflows/firmware-compile/action.yml @@ -24,4 +24,4 @@ runs: run: pip install --upgrade platformio - name: Build ${{ inputs.project-folder }} shell: bash - run: pio run -d ${{ inputs.project-folder }} ${{ inputs.project-env }} + run: pio run -d ${{ inputs.project-folder }} -e ${{ inputs.project-env }} From 81837fb10de9ca5b800c5a29d76ae810dc571463 Mon Sep 17 00:00:00 2001 From: v00g100skr Date: Wed, 5 Feb 2025 19:00:37 +0200 Subject: [PATCH 07/25] fix paths --- .github/workflows/compile.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml index ceed1764..7e108fee 100644 --- a/.github/workflows/compile.yml +++ b/.github/workflows/compile.yml @@ -37,7 +37,7 @@ project-env: firmware_esp32s3 - name: Copy bin file run: | - cp -f ${{ github.workspace }}/firmware/.pio/build/firmware/firmware.bin ${{ github.workspace }}/firmware-esp32s3.bin + cp -f ${{ github.workspace }}/firmware/.pio/build/firmware_esp32s3/firmware.bin ${{ github.workspace }}/firmware-esp32s3.bin - name: Upload firmware esp32s3 uses: actions/upload-artifact@v4 with: @@ -100,6 +100,7 @@ uses: ./.github/workflows/firmware-compile with: project-folder: updater + project-env: updater - name: Copy bin file run: | cp -f ${{ github.workspace }}/updater/.pio/build/updater/firmware.bin ${{ github.workspace }}/updater.bin From 26855715a61bbc45b3150d9fc8d2ef3ca52d4461 Mon Sep 17 00:00:00 2001 From: Vladyslav Heneraliuk Date: Thu, 6 Feb 2025 11:49:07 +0200 Subject: [PATCH 08/25] added input for firmware-compile action --- .github/workflows/firmware-compile/action.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/firmware-compile/action.yml b/.github/workflows/firmware-compile/action.yml index 280b2aff..30987638 100644 --- a/.github/workflows/firmware-compile/action.yml +++ b/.github/workflows/firmware-compile/action.yml @@ -4,6 +4,9 @@ inputs: project-folder: description: 'Project folder' default: 'firmware' + project-env: + description: 'Project environment to build' + default: 'firmware' permissions: contents: read pull-requests: write From 9d94c577b2495bd80cddc039ae585cef599b7922 Mon Sep 17 00:00:00 2001 From: Vladyslav Heneraliuk Date: Thu, 6 Feb 2025 13:12:22 +0200 Subject: [PATCH 09/25] moved Lite and Test builds to platformIO envs --- .github/workflows/compile.yml | 25 ++++++------------------- .github/workflows/release.yml | 7 ++++--- firmware/platformio.ini | 19 ++++++++++++------- firmware/src/Definitions.h | 4 ---- 4 files changed, 22 insertions(+), 33 deletions(-) diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml index 7e108fee..c56cbf52 100644 --- a/.github/workflows/compile.yml +++ b/.github/workflows/compile.yml @@ -15,9 +15,6 @@ - uses: actions/checkout@v4 - name: Compile firmware uses: ./.github/workflows/firmware-compile - with: - project-folder: firmware - project-env: firmware - name: Copy bin file run: | cp -f ${{ github.workspace }}/firmware/.pio/build/firmware/firmware.bin ${{ github.workspace }}/firmware.bin @@ -30,10 +27,9 @@ runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - name: Compile firmware + - name: Compile firmware esp32s3 uses: ./.github/workflows/firmware-compile with: - project-folder: firmware project-env: firmware_esp32s3 - name: Copy bin file run: | @@ -47,17 +43,13 @@ runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - name: Switch to LITE version - run: | - sed -i 's/#define LITE ./#define LITE 1/' ${{ github.workspace }}/firmware/src/Definitions.h - - name: Compile firmware + - name: Compile lite firmware uses: ./.github/workflows/firmware-compile with: - project-folder: firmware - project-env: firmware + project-env: firmware_lite - name: Copy bin file run: | - cp -f ${{ github.workspace }}/firmware/.pio/build/firmware/firmware.bin ${{ github.workspace }}/firmware-lite.bin + cp -f ${{ github.workspace }}/firmware/.pio/build/firmware_lite/firmware.bin ${{ github.workspace }}/firmware-lite.bin - name: Upload firmware lite uses: actions/upload-artifact@v4 with: @@ -67,18 +59,13 @@ runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - name: Switch to TEST_MODE build - run: | - sed -i 's/#define LITE ./#define LITE 0/' ${{ github.workspace }}/firmware/src/Definitions.h - sed -i 's/#define TEST_MODE ./#define TEST_MODE 1/' ${{ github.workspace }}/firmware/src/Definitions.h - name: Compile test firmware uses: ./.github/workflows/firmware-compile with: - project-folder: firmware - project-env: firmware + project-env: firmware_test - name: Copy bin file run: | - cp -f ${{ github.workspace }}/firmware/.pio/build/firmware/firmware.bin ${{ github.workspace }}/firmware-jaam2-test.bin + cp -f ${{ github.workspace }}/firmware/.pio/build/firmware_test/firmware.bin ${{ github.workspace }}/firmware-jaam2-test.bin - name: Upload JAAM 2 test firmware uses: actions/upload-artifact@v4 with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7c641db3..6431e01c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,15 +37,16 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - - name: Replace version and build type in firmware source + - name: Replace version in firmware source run: | sed -i 's/VERSION = ".*";/VERSION = "${{ inputs.release-version }}";/' ${{ github.workspace }}/firmware/src/JaamFirmware.cpp - sed -i 's/#define LITE ./#define LITE 1/' ${{ github.workspace }}/firmware/src/Definitions.h - name: Compile firmware uses: ./.github/workflows/firmware-compile + with: + project-env: firmware_lite - name: Copy bin to upload run: | - cp -f ${{ github.workspace }}/firmware/.pio/build/firmware/firmware.bin ${{ github.workspace }}/JAAM_${{ inputs.release-version }}_lite.bin + cp -f ${{ github.workspace }}/firmware/.pio/build/firmware_lite/firmware.bin ${{ github.workspace }}/JAAM_${{ inputs.release-version }}_lite.bin - name: Upload firmware uses: actions/upload-artifact@v4 with: diff --git a/firmware/platformio.ini b/firmware/platformio.ini index e1d36a83..bf50609a 100644 --- a/firmware/platformio.ini +++ b/firmware/platformio.ini @@ -11,12 +11,14 @@ [platformio] default_envs = firmware -[common] +[env:firmware] platform = espressif32@6.9.0 +board = esp32dev +build_flags = -D BOARD_ESP32=1 framework = arduino monitor_speed = 115200 board_build.partitions = min_spiffs.csv -lib_deps = +lib_deps = https://github.com/MatheusAlvesA/ArduinoAsync.git adafruit/Adafruit SSD1306@2.5.13 adafruit/Adafruit SH110x@2.1.11 @@ -34,12 +36,15 @@ lib_deps = yasheena/TelnetSpy@1.4 mathertel/OneButton@2.6.1 -[env:firmware] -extends = common -board = esp32dev -build_flags = -D BOARD_ESP32=1 +[env:firmware_lite] +extends = env:firmware +build_flags = -D BOARD_ESP32=1 -D LITE=1 + +[env:firmware_test] +extends = env:firmware +build_flags = -D BOARD_ESP32=1 -D TEST_MODE=1 [env:firmware_esp32s3] -extends = common +extends = env:firmware board = esp32-s3-devkitc-1 build_flags = -D BOARD_ESP32S3=1 diff --git a/firmware/src/Definitions.h b/firmware/src/Definitions.h index 1f384db9..48054bf3 100644 --- a/firmware/src/Definitions.h +++ b/firmware/src/Definitions.h @@ -1,8 +1,4 @@ -#define LITE 0 -#define TEST_MODE 0 #define TELNET_ENABLED 0 -//#define BOARD_ESP32 1 -//#define BOARD_ESP32S3 0 #if LITE #define ARDUINO_OTA_ENABLED 0 #define FW_UPDATE_ENABLED 0 From 4d00f644a457ac64b6b4c379aaea96a3ce191439 Mon Sep 17 00:00:00 2001 From: v00g100skr Date: Thu, 6 Feb 2025 13:54:40 +0200 Subject: [PATCH 10/25] removed "defined" --- firmware/src/Constants.h | 4 ++-- firmware/src/JaamFirmware.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/firmware/src/Constants.h b/firmware/src/Constants.h index f516818d..62695589 100644 --- a/firmware/src/Constants.h +++ b/firmware/src/Constants.h @@ -341,9 +341,9 @@ static SettingListItem LEGACY_OPTIONS[LEGACY_OPTIONS_COUNT] = { static const size_t MAX_JSON_SIZE = 6000; // 6KB // Визначення пінів для різних плат -#if defined(BOARD_ESP32S3) +#if BOARD_ESP32S3 #define SUPPORTED_LEDS_PINS {2, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21} -#elif defined(BOARD_ESP32) +#elif BOARD_ESP32 #define SUPPORTED_LEDS_PINS {2, 4, 12, 13, 14, 15, 16, 17, 18, 25, 26, 27, 32, 33} #else #error "Платформа не підтримується!" diff --git a/firmware/src/JaamFirmware.cpp b/firmware/src/JaamFirmware.cpp index 1032191d..f45bcd62 100644 --- a/firmware/src/JaamFirmware.cpp +++ b/firmware/src/JaamFirmware.cpp @@ -3544,7 +3544,7 @@ void initFastledStrip(uint8_t pin, const CRGB *leds, int pixelcount) { } switch (pin) { - #if defined(BOARD_ESP32S3) + #if BOARD_ESP32S3 GENERATE_PIN_CASE(2) GENERATE_PIN_CASE(4) GENERATE_PIN_CASE(8) @@ -3561,7 +3561,7 @@ void initFastledStrip(uint8_t pin, const CRGB *leds, int pixelcount) { GENERATE_PIN_CASE(19) GENERATE_PIN_CASE(20) GENERATE_PIN_CASE(21) - #elif defined(BOARD_ESP32) + #elif BOARD_ESP32 GENERATE_PIN_CASE(2) GENERATE_PIN_CASE(4) GENERATE_PIN_CASE(12) From 961d1b56a6dacc5bf633cc3da16c4a82c217010b Mon Sep 17 00:00:00 2001 From: v00g100skr Date: Thu, 6 Feb 2025 22:46:41 +0200 Subject: [PATCH 11/25] esp32c3 --- .github/workflows/compile.yml | 16 ++++++++++++++++ firmware/platformio.ini | 13 +++++++++---- firmware/src/Constants.h | 2 ++ firmware/src/JaamFirmware.cpp | 4 ++++ 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml index c56cbf52..7ce60fbd 100644 --- a/.github/workflows/compile.yml +++ b/.github/workflows/compile.yml @@ -39,6 +39,22 @@ with: name: firmware-esp32s3.bin path: ${{ github.workspace }}/firmware-esp32s3.bin + compile_firmware_esp32c3: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Compile firmware esp32c3 + uses: ./.github/workflows/firmware-compile + with: + project-env: firmware_esp32c3 + - name: Copy bin file + run: | + cp -f ${{ github.workspace }}/firmware/.pio/build/firmware_esp32c3/firmware.bin ${{ github.workspace }}/firmware-esp32c3.bin + - name: Upload firmware esp32c3 + uses: actions/upload-artifact@v4 + with: + name: firmware-esp32c3.bin + path: ${{ github.workspace }}/firmware-esp32c3.bin compile_firmware_lite: runs-on: ubuntu-latest steps: diff --git a/firmware/platformio.ini b/firmware/platformio.ini index bf50609a..25a07526 100644 --- a/firmware/platformio.ini +++ b/firmware/platformio.ini @@ -14,7 +14,7 @@ default_envs = firmware [env:firmware] platform = espressif32@6.9.0 board = esp32dev -build_flags = -D BOARD_ESP32=1 +build_flags = -D BOARD_ESP32 framework = arduino monitor_speed = 115200 board_build.partitions = min_spiffs.csv @@ -38,13 +38,18 @@ lib_deps = [env:firmware_lite] extends = env:firmware -build_flags = -D BOARD_ESP32=1 -D LITE=1 +build_flags = -D BOARD_ESP32 -D LITE [env:firmware_test] extends = env:firmware -build_flags = -D BOARD_ESP32=1 -D TEST_MODE=1 +build_flags = -D BOARD_ESP32 -D TEST_MODE [env:firmware_esp32s3] extends = env:firmware board = esp32-s3-devkitc-1 -build_flags = -D BOARD_ESP32S3=1 +build_flags = -D BOARD_ESP32S3 + +[env:firmware_esp32c3] +extends = env:firmware +board = esp32-c3-devkitc-02 +build_flags = -D BOARD_ESP32C3 -D LITE diff --git a/firmware/src/Constants.h b/firmware/src/Constants.h index 62695589..aadd71b4 100644 --- a/firmware/src/Constants.h +++ b/firmware/src/Constants.h @@ -345,6 +345,8 @@ static const size_t MAX_JSON_SIZE = 6000; // 6KB #define SUPPORTED_LEDS_PINS {2, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21} #elif BOARD_ESP32 #define SUPPORTED_LEDS_PINS {2, 4, 12, 13, 14, 15, 16, 17, 18, 25, 26, 27, 32, 33} +#elif BOARD_ESP32C3 + #define SUPPORTED_LEDS_PINS {2, 4, 18} #else #error "Платформа не підтримується!" #endif diff --git a/firmware/src/JaamFirmware.cpp b/firmware/src/JaamFirmware.cpp index f6b1919e..36f17613 100644 --- a/firmware/src/JaamFirmware.cpp +++ b/firmware/src/JaamFirmware.cpp @@ -3575,6 +3575,10 @@ void initFastledStrip(uint8_t pin, const CRGB *leds, int pixelcount) { GENERATE_PIN_CASE(27) GENERATE_PIN_CASE(32) GENERATE_PIN_CASE(33) + #elif BOARD_ESP32C3 + GENERATE_PIN_CASE(2) + GENERATE_PIN_CASE(4) + GENERATE_PIN_CASE(18) #endif default: LOG.print("Error: Unexpected pin configuration for this board: "); From 0d91fab9a81848054a5604a1ad5a32a08ff1b949 Mon Sep 17 00:00:00 2001 From: Vladyslav Heneraliuk Date: Sat, 8 Feb 2025 14:01:36 +0200 Subject: [PATCH 12/25] moved all defines to platformio.ini --- .github/workflows/beta_release.yml | 4 +- .github/workflows/compile.yml | 16 +++++++ .github/workflows/release.yml | 8 ++-- firmware/platformio.ini | 67 ++++++++++++++++++++++++++---- firmware/src/Constants.h | 17 ++------ firmware/src/Definitions.h | 32 -------------- firmware/src/JaamClimateSensor.cpp | 2 +- firmware/src/JaamClimateSensor.h | 1 - firmware/src/JaamDisplay.cpp | 2 +- firmware/src/JaamDisplay.h | 1 - firmware/src/JaamFirmware.cpp | 33 +++++++-------- firmware/src/JaamHomeAssistant.h | 1 - firmware/src/JaamLightSensor.cpp | 2 +- firmware/src/JaamLightSensor.h | 1 - firmware/src/JaamLogs.h | 8 ++++ firmware/src/JaamUtils.h | 1 + 16 files changed, 113 insertions(+), 83 deletions(-) delete mode 100644 firmware/src/Definitions.h create mode 100644 firmware/src/JaamLogs.h diff --git a/.github/workflows/beta_release.yml b/.github/workflows/beta_release.yml index 8d11ffb8..bb7798a7 100644 --- a/.github/workflows/beta_release.yml +++ b/.github/workflows/beta_release.yml @@ -25,7 +25,7 @@ jobs: uses: actions/checkout@v4 - name: Replace version in firmware source run: | - sed -i 's/VERSION = ".*";/VERSION = "${{ env.BETA_VERSION }}";/' ${{ github.workspace }}/firmware/src/JaamFirmware.cpp + sed -i 's/VERSION=".*"/VERSION="${{ env.BETA_VERSION }}"/' ${{ github.workspace }}/firmware/platformio.ini - name: Compile firmware uses: ./.github/workflows/firmware-compile - name: Copy release files to bin folder @@ -47,7 +47,7 @@ jobs: uses: stefanzweifel/git-auto-commit-action@v5 with: commit_message: "Beta ${{ env.BETA_VERSION }}" - file_pattern: ${{ github.workspace }}/firmware/src/JaamFirmware.cpp ${{ github.workspace }}/bin_beta/ ${{ github.workspace }}/flasher/ + file_pattern: ${{ github.workspace }}/firmware/platformio.ini ${{ github.workspace }}/bin_beta/ ${{ github.workspace }}/flasher/ - name: Create Beta Pre Release uses: ncipollo/release-action@v1 with: diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml index 7ce60fbd..6a8add00 100644 --- a/.github/workflows/compile.yml +++ b/.github/workflows/compile.yml @@ -87,6 +87,22 @@ with: name: firmware-jaam2-test.bin path: ${{ github.workspace }}/firmware-jaam2-test.bin + compile_firmware_telnet: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Compile firmware with telnet + uses: ./.github/workflows/firmware-compile + with: + project-env: firmware_telnet + - name: Copy bin file + run: | + cp -f ${{ github.workspace }}/firmware/.pio/build/firmware_telnet/firmware.bin ${{ github.workspace }}/firmware-telnet.bin + - name: Upload firmware with telnet + uses: actions/upload-artifact@v4 + with: + name: firmware-telnet.bin + path: ${{ github.workspace }}/firmware-telnet.bin # check_firmware: # runs-on: ubuntu-latest # steps: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6431e01c..58910889 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,7 +20,7 @@ jobs: uses: actions/checkout@v4 - name: Replace version in firmware source run: | - sed -i 's/VERSION = ".*";/VERSION = "${{ inputs.release-version }}";/' ${{ github.workspace }}/firmware/src/JaamFirmware.cpp + sed -i 's/VERSION=".*"/VERSION="${{ inputs.release-version }}"/' ${{ github.workspace }}/firmware/platformio.ini - name: Compile firmware uses: ./.github/workflows/firmware-compile - name: Copy bin to upload @@ -39,7 +39,7 @@ jobs: uses: actions/checkout@v4 - name: Replace version in firmware source run: | - sed -i 's/VERSION = ".*";/VERSION = "${{ inputs.release-version }}";/' ${{ github.workspace }}/firmware/src/JaamFirmware.cpp + sed -i 's/VERSION=".*"/VERSION="${{ inputs.release-version }}"/' ${{ github.workspace }}/firmware/platformio.ini - name: Compile firmware uses: ./.github/workflows/firmware-compile with: @@ -66,7 +66,7 @@ jobs: uses: actions/checkout@v4 - name: Replace version in firmware source run: | - sed -i 's/VERSION = ".*";/VERSION = "${{ inputs.release-version }}";/' ${{ github.workspace }}/firmware/src/JaamFirmware.cpp + sed -i 's/VERSION=".*"/VERSION="${{ inputs.release-version }}"/' ${{ github.workspace }}/firmware/platformio.ini - name: Download firmware uses: actions/download-artifact@v4 with: @@ -98,7 +98,7 @@ jobs: uses: stefanzweifel/git-auto-commit-action@v5 with: commit_message: "Release ${{ inputs.release-version }}" - file_pattern: ${{ github.workspace }}/firmware/src/JaamFirmware.cpp ${{ github.workspace }}/bin/ ${{ github.workspace }}/bin_beta/ ${{ github.workspace }}/flasher/ + file_pattern: ${{ github.workspace }}/firmware/platformio.ini ${{ github.workspace }}/bin/ ${{ github.workspace }}/bin_beta/ ${{ github.workspace }}/flasher/ - name: Create Release uses: ncipollo/release-action@v1 with: diff --git a/firmware/platformio.ini b/firmware/platformio.ini index 25a07526..86880121 100644 --- a/firmware/platformio.ini +++ b/firmware/platformio.ini @@ -12,9 +12,20 @@ default_envs = firmware [env:firmware] -platform = espressif32@6.9.0 +platform = espressif32@6.10.0 board = esp32dev -build_flags = -D BOARD_ESP32 +build_src_flags = + '-D VERSION="4.3-b101"' +build_flags = + -D ARDUINO_OTA_ENABLED=0 + -D FW_UPDATE_ENABLED=1 + -D HA_ENABLED=1 + -D DISPLAY_ENABLED=1 + -D BME280_ENABLED=1 + -D SHT2X_ENABLED=1 + -D SHT3X_ENABLED=1 + -D BH1750_ENABLED=1 + -D BUZZER_ENABLED=1 framework = arduino monitor_speed = 115200 board_build.partitions = min_spiffs.csv @@ -27,7 +38,7 @@ lib_deps = mathieucarbou/ESPAsyncWebServer@3.1.5 wollewald/BH1750_WE@1.1.10 denyschuhlib/NTPtime@1.2.1 - fastled/FastLED@3.9.9 + fastled/FastLED@3.9.13 tzapu/WiFiManager@2.0.17 sensirion/arduino-sht@1.2.6 soylentorange/forcedBMX280@1.1.1 @@ -38,18 +49,60 @@ lib_deps = [env:firmware_lite] extends = env:firmware -build_flags = -D BOARD_ESP32 -D LITE +build_flags = + -D LITE + -D ARDUINO_OTA_ENABLED=0 + -D FW_UPDATE_ENABLED=0 + -D HA_ENABLED=0 + -D DISPLAY_ENABLED=0 + -D BME280_ENABLED=0 + -D SHT2X_ENABLED=0 + -D SHT3X_ENABLED=0 + -D BH1750_ENABLED=0 + -D BUZZER_ENABLED=0 [env:firmware_test] extends = env:firmware -build_flags = -D BOARD_ESP32 -D TEST_MODE +build_flags = + -D TEST_MODE + -D ARDUINO_OTA_ENABLED=0 + -D FW_UPDATE_ENABLED=0 + -D HA_ENABLED=0 + -D DISPLAY_ENABLED=1 + -D BME280_ENABLED=1 + -D SHT2X_ENABLED=1 + -D SHT3X_ENABLED=1 + -D BH1750_ENABLED=1 + -D BUZZER_ENABLED=1 + +[env:firmware_telnet] +extends = env:firmware +build_flags = + -D TELNET_ENABLED + -D ARDUINO_OTA_ENABLED=0 + -D FW_UPDATE_ENABLED=1 + -D HA_ENABLED=1 + -D DISPLAY_ENABLED=1 + -D BME280_ENABLED=1 + -D SHT2X_ENABLED=1 + -D SHT3X_ENABLED=1 + -D BH1750_ENABLED=1 + -D BUZZER_ENABLED=1 [env:firmware_esp32s3] extends = env:firmware board = esp32-s3-devkitc-1 -build_flags = -D BOARD_ESP32S3 [env:firmware_esp32c3] extends = env:firmware board = esp32-c3-devkitc-02 -build_flags = -D BOARD_ESP32C3 -D LITE +build_flags = + -D ARDUINO_OTA_ENABLED=0 + -D FW_UPDATE_ENABLED=1 + -D HA_ENABLED=0 + -D DISPLAY_ENABLED=1 + -D BME280_ENABLED=1 + -D SHT2X_ENABLED=1 + -D SHT3X_ENABLED=1 + -D BH1750_ENABLED=1 + -D BUZZER_ENABLED=1 diff --git a/firmware/src/Constants.h b/firmware/src/Constants.h index aadd71b4..c030671c 100644 --- a/firmware/src/Constants.h +++ b/firmware/src/Constants.h @@ -1,14 +1,5 @@ -#include "Definitions.h" #include #include -#if TELNET_ENABLED -#include - -TelnetSpy SerialAndTelnet; -#define LOG SerialAndTelnet -#else -#define LOG Serial -#endif #define MAIN_LEDS_COUNT 26 #define DISTRICTS_COUNT 26 @@ -341,11 +332,11 @@ static SettingListItem LEGACY_OPTIONS[LEGACY_OPTIONS_COUNT] = { static const size_t MAX_JSON_SIZE = 6000; // 6KB // Визначення пінів для різних плат -#if BOARD_ESP32S3 - #define SUPPORTED_LEDS_PINS {2, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21} -#elif BOARD_ESP32 +#if ARDUINO_ESP32_DEV #define SUPPORTED_LEDS_PINS {2, 4, 12, 13, 14, 15, 16, 17, 18, 25, 26, 27, 32, 33} -#elif BOARD_ESP32C3 +#elif ARDUINO_ESP32S3_DEV + #define SUPPORTED_LEDS_PINS {2, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21} +#elif ARDUINO_ESP32C3_DEV #define SUPPORTED_LEDS_PINS {2, 4, 18} #else #error "Платформа не підтримується!" diff --git a/firmware/src/Definitions.h b/firmware/src/Definitions.h deleted file mode 100644 index 48054bf3..00000000 --- a/firmware/src/Definitions.h +++ /dev/null @@ -1,32 +0,0 @@ -#define TELNET_ENABLED 0 -#if LITE -#define ARDUINO_OTA_ENABLED 0 -#define FW_UPDATE_ENABLED 0 -#define HA_ENABLED 0 -#define DISPLAY_ENABLED 0 -#define BME280_ENABLED 0 -#define SHT2X_ENABLED 0 -#define SHT3X_ENABLED 0 -#define BH1750_ENABLED 0 -#define BUZZER_ENABLED 0 -#elif TEST_MODE -#define ARDUINO_OTA_ENABLED 0 -#define FW_UPDATE_ENABLED 0 -#define HA_ENABLED 0 -#define DISPLAY_ENABLED 1 -#define BME280_ENABLED 1 -#define SHT2X_ENABLED 1 -#define SHT3X_ENABLED 1 -#define BH1750_ENABLED 1 -#define BUZZER_ENABLED 1 -#else -#define ARDUINO_OTA_ENABLED 0 -#define FW_UPDATE_ENABLED 1 -#define HA_ENABLED 1 -#define DISPLAY_ENABLED 1 -#define BME280_ENABLED 1 -#define SHT2X_ENABLED 1 -#define SHT3X_ENABLED 1 -#define BH1750_ENABLED 1 -#define BUZZER_ENABLED 1 -#endif diff --git a/firmware/src/JaamClimateSensor.cpp b/firmware/src/JaamClimateSensor.cpp index 2e51a88a..7478aae9 100644 --- a/firmware/src/JaamClimateSensor.cpp +++ b/firmware/src/JaamClimateSensor.cpp @@ -1,6 +1,6 @@ #include "JaamClimateSensor.h" #include -#include "Constants.h" +#include "JaamLogs.h" #if BME280_ENABLED ForcedBME280Float *bme280; diff --git a/firmware/src/JaamClimateSensor.h b/firmware/src/JaamClimateSensor.h index 9f7aedda..207f6f04 100644 --- a/firmware/src/JaamClimateSensor.h +++ b/firmware/src/JaamClimateSensor.h @@ -1,4 +1,3 @@ -#include "Definitions.h" #if BME280_ENABLED #include #endif diff --git a/firmware/src/JaamDisplay.cpp b/firmware/src/JaamDisplay.cpp index 2d382afa..3ccce7a9 100644 --- a/firmware/src/JaamDisplay.cpp +++ b/firmware/src/JaamDisplay.cpp @@ -1,5 +1,5 @@ #include "JaamDisplay.h" -#include "Constants.h" +#include "JaamLogs.h" #if DISPLAY_ENABLED Adafruit_SSD1306 *ssd1306; diff --git a/firmware/src/JaamDisplay.h b/firmware/src/JaamDisplay.h index 24b74ef2..f2505327 100644 --- a/firmware/src/JaamDisplay.h +++ b/firmware/src/JaamDisplay.h @@ -1,5 +1,4 @@ -#include "Definitions.h" #if DISPLAY_ENABLED #include #include diff --git a/firmware/src/JaamFirmware.cpp b/firmware/src/JaamFirmware.cpp index 36f17613..33bbaad3 100644 --- a/firmware/src/JaamFirmware.cpp +++ b/firmware/src/JaamFirmware.cpp @@ -1,4 +1,3 @@ -#include "Definitions.h" #include "JaamUtils.h" #include #include @@ -29,8 +28,6 @@ #endif #include -const PROGMEM char* VERSION = "4.3-b101"; - JaamSettings settings; Firmware currentFirmware; #if FW_UPDATE_ENABLED @@ -3543,13 +3540,9 @@ void initFastledStrip(uint8_t pin, const CRGB *leds, int pixelcount) { } switch (pin) { - #if BOARD_ESP32S3 + #if ARDUINO_ESP32_DEV GENERATE_PIN_CASE(2) GENERATE_PIN_CASE(4) - GENERATE_PIN_CASE(8) - GENERATE_PIN_CASE(9) - GENERATE_PIN_CASE(10) - GENERATE_PIN_CASE(11) GENERATE_PIN_CASE(12) GENERATE_PIN_CASE(13) GENERATE_PIN_CASE(14) @@ -3557,12 +3550,18 @@ void initFastledStrip(uint8_t pin, const CRGB *leds, int pixelcount) { GENERATE_PIN_CASE(16) GENERATE_PIN_CASE(17) GENERATE_PIN_CASE(18) - GENERATE_PIN_CASE(19) - GENERATE_PIN_CASE(20) - GENERATE_PIN_CASE(21) - #elif BOARD_ESP32 + GENERATE_PIN_CASE(25) + GENERATE_PIN_CASE(26) + GENERATE_PIN_CASE(27) + GENERATE_PIN_CASE(32) + GENERATE_PIN_CASE(33) + #elif ARDUINO_ESP32S3_DEV GENERATE_PIN_CASE(2) GENERATE_PIN_CASE(4) + GENERATE_PIN_CASE(8) + GENERATE_PIN_CASE(9) + GENERATE_PIN_CASE(10) + GENERATE_PIN_CASE(11) GENERATE_PIN_CASE(12) GENERATE_PIN_CASE(13) GENERATE_PIN_CASE(14) @@ -3570,12 +3569,10 @@ void initFastledStrip(uint8_t pin, const CRGB *leds, int pixelcount) { GENERATE_PIN_CASE(16) GENERATE_PIN_CASE(17) GENERATE_PIN_CASE(18) - GENERATE_PIN_CASE(25) - GENERATE_PIN_CASE(26) - GENERATE_PIN_CASE(27) - GENERATE_PIN_CASE(32) - GENERATE_PIN_CASE(33) - #elif BOARD_ESP32C3 + GENERATE_PIN_CASE(19) + GENERATE_PIN_CASE(20) + GENERATE_PIN_CASE(21) + #elif ARDUINO_ESP32C3_DEV GENERATE_PIN_CASE(2) GENERATE_PIN_CASE(4) GENERATE_PIN_CASE(18) diff --git a/firmware/src/JaamHomeAssistant.h b/firmware/src/JaamHomeAssistant.h index 6091a87d..c9a40911 100644 --- a/firmware/src/JaamHomeAssistant.h +++ b/firmware/src/JaamHomeAssistant.h @@ -1,4 +1,3 @@ -#include "Definitions.h" #if HA_ENABLED #include #endif diff --git a/firmware/src/JaamLightSensor.cpp b/firmware/src/JaamLightSensor.cpp index 54fc8b37..00ddf6e2 100644 --- a/firmware/src/JaamLightSensor.cpp +++ b/firmware/src/JaamLightSensor.cpp @@ -1,6 +1,6 @@ #include "JaamLightSensor.h" #include -#include "Constants.h" +#include "JaamLogs.h" #if BH1750_ENABLED BH1750_WE *bh1750; diff --git a/firmware/src/JaamLightSensor.h b/firmware/src/JaamLightSensor.h index 4b1c8a5c..b92ef2a5 100644 --- a/firmware/src/JaamLightSensor.h +++ b/firmware/src/JaamLightSensor.h @@ -1,4 +1,3 @@ -#include "Definitions.h" #if BH1750_ENABLED #include #endif diff --git a/firmware/src/JaamLogs.h b/firmware/src/JaamLogs.h new file mode 100644 index 00000000..536f1cb4 --- /dev/null +++ b/firmware/src/JaamLogs.h @@ -0,0 +1,8 @@ +#if TELNET_ENABLED +#include + +static TelnetSpy SerialAndTelnet; +#define LOG SerialAndTelnet +#else +#define LOG Serial +#endif diff --git a/firmware/src/JaamUtils.h b/firmware/src/JaamUtils.h index 0d994012..7b2635c4 100644 --- a/firmware/src/JaamUtils.h +++ b/firmware/src/JaamUtils.h @@ -1,4 +1,5 @@ #include "Constants.h" +#include "JaamLogs.h" struct Firmware { int major = 0; From 61dbe861eedeec980936b8ba26f22b8cdf799438 Mon Sep 17 00:00:00 2001 From: v00g100skr Date: Sat, 8 Feb 2025 14:03:45 +0200 Subject: [PATCH 13/25] flasher --- .github/workflows/beta_release.yml | 28 +++++++++++- .github/workflows/upload-pages/action.yml | 54 ++++++++++++++++++----- deploy/redeploy_update_server.sh | 14 +++++- deploy/update_server/update_server.py | 2 + flasher/index.html | 21 ++++++--- flasher/manifest-beta-c3.json | 19 ++++++++ flasher/manifest-beta-s3.json | 19 ++++++++ 7 files changed, 138 insertions(+), 19 deletions(-) create mode 100644 flasher/manifest-beta-c3.json create mode 100644 flasher/manifest-beta-s3.json diff --git a/.github/workflows/beta_release.yml b/.github/workflows/beta_release.yml index 8d11ffb8..b3162766 100644 --- a/.github/workflows/beta_release.yml +++ b/.github/workflows/beta_release.yml @@ -36,10 +36,36 @@ jobs: - name: Leave only 10 recent BETA builds run: | bash ${{ github.workspace }}/deploy/remove_old_bins.sh ${{ github.workspace }}/bin_beta/ 10 + - name: Compile firmware s3 + uses: ./.github/workflows/firmware-compile + with: + project-env: firmware_esp32s3 + - name: Copy release files to bin folder + run: | + mkdir -p ${{ github.workspace }}/bin_beta_s3/ + cp -f ${{ github.workspace }}/firmware/.pio/build/firmware_esp32s3/firmware.bin ${{ github.workspace }}/bin_beta_s3/${{ env.BETA_VERSION }}.bin + cp -f ${{ github.workspace }}/firmware/.pio/build/firmware_esp32s3/firmware.bin ${{ github.workspace }}/JAAM_S3_${{ env.BETA_VERSION }}.bin + - name: Leave only 10 recent BETA S3 builds + run: | + bash ${{ github.workspace }}/deploy/remove_old_bins.sh ${{ github.workspace }}/bin_beta_s3/ 10 + - name: Compile firmware c3 + uses: ./.github/workflows/firmware-compile + with: + project-env: firmware_esp32c3 + - name: Copy release files to bin folder + run: | + mkdir -p ${{ github.workspace }}/bin_beta_c3/ + cp -f ${{ github.workspace }}/firmware/.pio/build/firmware_esp32c3/firmware.bin ${{ github.workspace }}/bin_beta_c3/${{ env.BETA_VERSION }}.bin + cp -f ${{ github.workspace }}/firmware/.pio/build/firmware_esp32c3/firmware.bin ${{ github.workspace }}/JAAM_C3_${{ env.BETA_VERSION }}.bin + - name: Leave only 10 recent BETA C3 builds + run: | + bash ${{ github.workspace }}/deploy/remove_old_bins.sh ${{ github.workspace }}/bin_beta_c3/ 10 - name: Upload flasher to Github Pages uses: ./.github/workflows/upload-pages with: beta_binary_path: ${{ github.workspace }}/JAAM_${{ env.BETA_VERSION }}.bin + beta_s3_binary_path: ${{ github.workspace }}/JAAM_S3_${{ env.BETA_VERSION }}.bin + beta_c3_binary_path: ${{ github.workspace }}/JAAM_C3_${{ env.BETA_VERSION }}.bin version: ${{ inputs.release-version }} beta_build: ${{ github.run_number }} - name: Commit changes @@ -47,7 +73,7 @@ jobs: uses: stefanzweifel/git-auto-commit-action@v5 with: commit_message: "Beta ${{ env.BETA_VERSION }}" - file_pattern: ${{ github.workspace }}/firmware/src/JaamFirmware.cpp ${{ github.workspace }}/bin_beta/ ${{ github.workspace }}/flasher/ + file_pattern: ${{ github.workspace }}/firmware/src/JaamFirmware.cpp ${{ github.workspace }}/bin_beta/ ${{ github.workspace }}/bin_beta_s3/ ${{ github.workspace }}/bin_beta_c3/ ${{ github.workspace }}/flasher/ - name: Create Beta Pre Release uses: ncipollo/release-action@v1 with: diff --git a/.github/workflows/upload-pages/action.yml b/.github/workflows/upload-pages/action.yml index 189efb3f..be8141a2 100644 --- a/.github/workflows/upload-pages/action.yml +++ b/.github/workflows/upload-pages/action.yml @@ -7,6 +7,12 @@ inputs: beta_binary_path: description: 'Path to the beta binary' default: '' + beta_s3_binary_path: + description: 'Path to the beta s3 binary' + default: '' + beta_c3_binary_path: + description: 'Path to the beta c3 binary' + default: '' lite_binary_path: description: 'Path to the lite binary' default: '' @@ -24,37 +30,63 @@ runs: shell: bash run: | cp -f ${{ inputs.binary_path }} ${{ github.workspace }}/flasher/bins/jaam.bin + - name: Copy beta bin to flasher + if: ${{ inputs.beta_binary_path != '' }} + shell: bash + run: | + cp -f ${{ inputs.beta_binary_path }} ${{ github.workspace }}/flasher/bins/jaam_beta.bin + - name: Copy beta s3 bin to flasher + if: ${{ inputs.beta_s3_binary_path != '' }} + shell: bash + run: | + cp -f ${{ inputs.beta_s3_binary_path }} ${{ github.workspace }}/flasher/bins/jaam_beta_s3.bin + - name: Copy beta c3 bin to flasher + if: ${{ inputs.beta_c3_binary_path != '' }} + shell: bash + run: | + cp -f ${{ inputs.beta_c3_binary_path }} ${{ github.workspace }}/flasher/bins/jaam_beta_c3.bin + - name: Copy lite bin to flasher + if: ${{ inputs.lite_binary_path != '' }} + shell: bash + run: | + cp -f ${{ inputs.lite_binary_path }} ${{ github.workspace }}/flasher/bins/jaam_lite.bin - name: Change version in flasher if: ${{ inputs.binary_path != '' }} shell: bash run: | - sed -i 's/>Встановити JAAM [0-9.]*Встановити JAAM ${{ inputs.version }}JAAM [0-9.]*JAAM ${{ inputs.version }}Отримати опис JAAM [0-9.]*>Отримати опис JAAM ${{ inputs.version }}Встановити JAAM [0-9.]* Beta [0-9]*Встановити JAAM ${{ inputs.version }} Beta ${{ inputs.beta_build }}JAAM [0-9.]* Beta [0-9]*JAAM ${{ inputs.version }} Beta ${{ inputs.beta_build }}Отримати опис JAAM [0-9.]* Beta [0-9]*Отримати опис JAAM ${{ inputs.version }} Beta ${{ inputs.beta_build }}JAAM [0-9.]* S3 Beta [0-9]*JAAM ${{ inputs.version }} S3 Beta ${{ inputs.beta_build }}Отримати опис JAAM [0-9.]* Beta [0-9]*Отримати опис JAAM ${{ inputs.version }} Beta ${{ inputs.beta_build }}JAAM [0-9.]* C3 Beta [0-9]*JAAM ${{ inputs.version }} C3 Beta ${{ inputs.beta_build }}Отримати опис JAAM [0-9.]* Beta [0-9]*Отримати опис JAAM ${{ inputs.version }} Beta ${{ inputs.beta_build }}Встановити JAAM [0-9.]* LiteВстановити JAAM ${{ inputs.version }} LiteJAAM [0-9.]* LiteJAAM ${{ inputs.version }} LiteJAAM Flasher
- +

Ваш браузер не підтримується!

@@ -84,16 +84,23 @@

JAAM Flasher

Встановлення через HTTP заборонено!

Спробуйте встановити через HTTPS.

-
-
+ + + + - + - - + + + + + + + @@ -103,6 +110,8 @@

JAAM Flasher

  • JAAM - стабільна релізна версія прошивки
  • JAAM Beta - тестова версія прошивки. Містить функції, що перебувають у розробці.
  • JAAM Lite - "скорочена" версія прошивки. Видалено підтримку дисплею, Home Assistant, сенсорів освітлення та клімату, динаміка (buzzer), не підтримує оновлення через веб-інтерфейс
  • +
  • JAAM S3 Beta - тестова версія прошивки для чіпа ESP32-S3. Містить функції, що перебувають у розробці.
  • +
  • JAAM C3 Beta - тестова версія прошивки для чіпа ESP32-C3. Містить функції, що перебувають у розробці.
  • diff --git a/flasher/manifest-beta-c3.json b/flasher/manifest-beta-c3.json new file mode 100644 index 00000000..526aaaf3 --- /dev/null +++ b/flasher/manifest-beta-c3.json @@ -0,0 +1,19 @@ +{ + "name": "JAAM C3 Beta", + "version": "4.3-b101", + "funding_url": "https://send.monobank.ua/jar/7GzS1PhPa2", + "new_install_improv_wait_time": 0, + "new_install_prompt_erase": true, + "builds": [ + { + "chipFamily": "ESP32-C3", + "improv": false, + "parts": [ + { "path": "bins/jaam.bootloader.bin", "offset": 4096 }, + { "path": "bins/jaam.partitions.bin", "offset": 32768 }, + { "path": "bins/jaam.boot.app0.bin", "offset": 57344 }, + { "path": "bins/jaam_beta_c3.bin", "offset": 65536 } + ] + } + ] + } \ No newline at end of file diff --git a/flasher/manifest-beta-s3.json b/flasher/manifest-beta-s3.json new file mode 100644 index 00000000..df89ebfd --- /dev/null +++ b/flasher/manifest-beta-s3.json @@ -0,0 +1,19 @@ +{ + "name": "JAAM S3 Beta", + "version": "4.3-b101", + "funding_url": "https://send.monobank.ua/jar/7GzS1PhPa2", + "new_install_improv_wait_time": 0, + "new_install_prompt_erase": true, + "builds": [ + { + "chipFamily": "ESP32-S3", + "improv": false, + "parts": [ + { "path": "bins/jaam.bootloader.bin", "offset": 4096 }, + { "path": "bins/jaam.partitions.bin", "offset": 32768 }, + { "path": "bins/jaam.boot.app0.bin", "offset": 57344 }, + { "path": "bins/jaam_beta_s3.bin", "offset": 65536 } + ] + } + ] + } \ No newline at end of file From 641dc58e071ac615f9ed7150e83723b304e380fb Mon Sep 17 00:00:00 2001 From: v00g100skr Date: Sat, 8 Feb 2025 14:15:58 +0200 Subject: [PATCH 14/25] flasher index.html fix --- flasher/index.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/flasher/index.html b/flasher/index.html index 6bcd2130..0965f981 100644 --- a/flasher/index.html +++ b/flasher/index.html @@ -84,6 +84,9 @@

    JAAM Flasher

    Встановлення через HTTP заборонено!

    Спробуйте встановити через HTTPS.

    +
    +
    + @@ -113,7 +116,6 @@

    JAAM Flasher

  • JAAM S3 Beta - тестова версія прошивки для чіпа ESP32-S3. Містить функції, що перебувають у розробці.
  • JAAM C3 Beta - тестова версія прошивки для чіпа ESP32-C3. Містить функції, що перебувають у розробці.
  • -
    From 75d55c6fb4f47037c256cb0b28b90e729ea17d13 Mon Sep 17 00:00:00 2001 From: Vladyslav Heneraliuk Date: Sat, 8 Feb 2025 14:36:04 +0200 Subject: [PATCH 15/25] added board description to fw version --- firmware/src/JaamUtils.h | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/firmware/src/JaamUtils.h b/firmware/src/JaamUtils.h index 7b2635c4..050e7ef3 100644 --- a/firmware/src/JaamUtils.h +++ b/firmware/src/JaamUtils.h @@ -1,5 +1,6 @@ #include "Constants.h" #include "JaamLogs.h" +#include struct Firmware { int major = 0; @@ -39,19 +40,31 @@ static Firmware parseFirmwareVersion(const char* version) { } static void fillFwVersion(char* result, Firmware firmware) { - char patch[10] = ""; + std::string version = std::to_string(firmware.major) + "." + std::to_string(firmware.minor); + if (firmware.patch > 0) { - sprintf(patch, ".%d", firmware.patch); + version += "." + std::to_string(firmware.patch); } - char beta[10] = ""; + if (firmware.isBeta) { - sprintf(beta, "-b%d", firmware.betaBuild); + version += "-b" + std::to_string(firmware.betaBuild); } + +#if ARDUINO_ESP32S3_DEV + version += "-s3"; +#elif ARDUINO_ESP32C3_DEV + version += "-c3"; +#endif + #if LITE - sprintf(result, "%d.%d%s%s-lite", firmware.major, firmware.minor, patch, beta); -#else - sprintf(result, "%d.%d%s%s", firmware.major, firmware.minor, patch, beta); + version += "-lite"; +#endif + +#if TEST_MODE + version += "-test"; #endif + + strcpy(result, version.c_str()); } #if FW_UPDATE_ENABLED From 1a0f347c8e6e5d36840a2333a8d52d0932ea6862 Mon Sep 17 00:00:00 2001 From: v00g100skr Date: Sat, 8 Feb 2025 14:49:14 +0200 Subject: [PATCH 16/25] fix manifest --- .github/workflows/upload-pages/action.yml | 16 ---------------- flasher/index.html | 22 +++++----------------- flasher/manifest-beta.json | 20 ++++++++++++++++++++ 3 files changed, 25 insertions(+), 33 deletions(-) diff --git a/.github/workflows/upload-pages/action.yml b/.github/workflows/upload-pages/action.yml index be8141a2..43633c47 100644 --- a/.github/workflows/upload-pages/action.yml +++ b/.github/workflows/upload-pages/action.yml @@ -66,22 +66,6 @@ runs: sed -i 's/>Отримати опис JAAM [0-9.]* Beta [0-9]*Отримати опис JAAM ${{ inputs.version }} Beta ${{ inputs.beta_build }}JAAM [0-9.]* S3 Beta [0-9]*JAAM ${{ inputs.version }} S3 Beta ${{ inputs.beta_build }}Отримати опис JAAM [0-9.]* Beta [0-9]*Отримати опис JAAM ${{ inputs.version }} Beta ${{ inputs.beta_build }}JAAM [0-9.]* C3 Beta [0-9]*JAAM ${{ inputs.version }} C3 Beta ${{ inputs.beta_build }}Отримати опис JAAM [0-9.]* Beta [0-9]*Отримати опис JAAM ${{ inputs.version }} Beta ${{ inputs.beta_build }}JAAM Flasher
    - +

    Ваш браузер не підтримується!

    @@ -87,23 +87,13 @@

    JAAM Flasher

    - - - - - - + - - - - - - - + + @@ -111,10 +101,8 @@

    JAAM Flasher

    • JAAM - стабільна релізна версія прошивки
    • -
    • JAAM Beta - тестова версія прошивки. Містить функції, що перебувають у розробці.
    • +
    • JAAM Beta - тестова версія прошивки. Містить функції, що перебувають у розробці. Підтримуються чіпи ESP32, ESP32-S3, ESP32-C3
    • JAAM Lite - "скорочена" версія прошивки. Видалено підтримку дисплею, Home Assistant, сенсорів освітлення та клімату, динаміка (buzzer), не підтримує оновлення через веб-інтерфейс
    • -
    • JAAM S3 Beta - тестова версія прошивки для чіпа ESP32-S3. Містить функції, що перебувають у розробці.
    • -
    • JAAM C3 Beta - тестова версія прошивки для чіпа ESP32-C3. Містить функції, що перебувають у розробці.
    diff --git a/flasher/manifest-beta.json b/flasher/manifest-beta.json index 3f497a71..645c362d 100644 --- a/flasher/manifest-beta.json +++ b/flasher/manifest-beta.json @@ -14,6 +14,26 @@ { "path": "bins/jaam.boot.app0.bin", "offset": 57344 }, { "path": "bins/jaam_beta.bin", "offset": 65536 } ] + }, + { + "chipFamily": "ESP32-S3", + "improv": false, + "parts": [ + { "path": "bins/jaam.bootloader.bin", "offset": 4096 }, + { "path": "bins/jaam.partitions.bin", "offset": 32768 }, + { "path": "bins/jaam.boot.app0.bin", "offset": 57344 }, + { "path": "bins/jaam_beta_s3.bin", "offset": 65536 } + ] + }, + { + "chipFamily": "ESP32-C3", + "improv": false, + "parts": [ + { "path": "bins/jaam.bootloader.bin", "offset": 4096 }, + { "path": "bins/jaam.partitions.bin", "offset": 32768 }, + { "path": "bins/jaam.boot.app0.bin", "offset": 57344 }, + { "path": "bins/jaam_beta_c3.bin", "offset": 65536 } + ] } ] } \ No newline at end of file From 7cc906dc029487f7493be7e08363956703a84bd1 Mon Sep 17 00:00:00 2001 From: v00g100skr Date: Sat, 8 Feb 2025 16:06:56 +0200 Subject: [PATCH 17/25] manifest --- flasher/bins/jaam.bootloader.c3.bin | Bin 0 -> 13248 bytes flasher/bins/jaam.bootloader.s3.bin | Bin 0 -> 15104 bytes flasher/bins/jaam.partitions.c3.bin | Bin 0 -> 3072 bytes flasher/bins/jaam.partitions.s3.bin | Bin 0 -> 3072 bytes flasher/manifest-beta.json | 8 ++++---- 5 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 flasher/bins/jaam.bootloader.c3.bin create mode 100644 flasher/bins/jaam.bootloader.s3.bin create mode 100644 flasher/bins/jaam.partitions.c3.bin create mode 100644 flasher/bins/jaam.partitions.s3.bin diff --git a/flasher/bins/jaam.bootloader.c3.bin b/flasher/bins/jaam.bootloader.c3.bin new file mode 100644 index 0000000000000000000000000000000000000000..054071a6db597574b8bf941c1e00f0fc99c5168f GIT binary patch literal 13248 zcmb7q3s@6Z_V}G7Gm{|Hq$47`wi^-!Wm~F5Oj{KaNiqeWZB=U33XEXg^@WJ7yUR8) znP5~5G$PX0Hgzp1zpiVc?bs(EFJGXw_0`&~E~V)1x=;%OR?Pq0nZ!qb-~ape$M=P~ z_uO;OJ@=e*&pqeNT$RfnQ@2hv{RbgL!Vd)k_&=e3t}W$p1?~m{=KTDeb?ddcSu0lN zEYq%7tsR^H2>hNLyG%Q7Z2tI&Fqn{)y=L9|apScwW#wzRtd$rsYrS@Es&>N5V<$ZR zvWSztX3hGQYqFN*tXrD9GAsYZr8zI>a0TmgmU3%Wt;$-xOnk0cjs6$jx}2;IQ6}cOi z;%zO>TDELm4#+AWXy>e6HZeJWeb&156aO0?SFGk%7A(uTmruN0!izu((@K$S<7>l=B`<{Dr>zc zr+a1kVpd|(E&YnMW=Kp1VLn3FmR}MfL zxWFrlx*DsUq@6ZRI|0_Xhc8%nJ&IkLou9u{6gt+P)CE~!e*XLY|8jj02?hZVvEsh( zT|neYT;U#Ga#ySbJAwVLSp_^6TtccNz+foiAEehz4O*Q=ve$*I% z>_#SZ@($z?fOG>SFcrpK@Ka3!$Ptuz59D!xXrmqv1WI81Jf>p-NZWllSZ4U_2NGa> z1N;btW<8gdis5O`KAVQ087o##UjyQ0EeJg~D>3Qm`I9G^0Y2|3gs@KuS0OYpkNVC> zBjjlMOg#^!w*ME&sz%E!93UlQHH14q0%pdqQR$Y0axM!kpkdhp&ira6?__o_X&{ z^VTw#g{1M4q%x07Pi>3zywoPJ;hE=CH@<$p@qB6l{O=q$@wYL*ZBFRcW{#*15v}PqX(tLolfqZjpTc!i zQ94$jN25V+uR476gNLc6hNzQ=Y%_YDlz9j$y@ly9VUjk;&G z)Mm)J@-=GpYO^LZMz!dgy45`^<6U<#p#OUvX)dlY=`3bqlf9aE*kWuX&{_LCsSP#` zbV^p>o>?3@^`cqh2=3hOP?@uAhsn%Kh* zTeV9%Oa36OQ`sT=kZ75*DuY~gtJPW9ZX|g9Qk|v7^r|I9+f2ZImlB%TV*<9XcN779 zdhywPrfI?9=j)|enTwrOih#qGmik6&#Z%0An(&p;gm^ai){mH%2ZlGm32FUE&RP*S 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 CBiDlf literal 0 HcmV?d00001 diff --git a/flasher/bins/jaam.bootloader.s3.bin b/flasher/bins/jaam.bootloader.s3.bin new file mode 100644 index 0000000000000000000000000000000000000000..204061acdcb98efc3ab980979b28fbbd486d9115 GIT binary patch literal 15104 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 H!b1Q6pG-mU literal 0 HcmV?d00001 diff --git a/flasher/bins/jaam.partitions.s3.bin b/flasher/bins/jaam.partitions.s3.bin new file mode 100644 index 0000000000000000000000000000000000000000..21800fab2305f464c5c5f081594acb714cbf4d4d GIT binary patch literal 3072 zcmZ1#z{tcffq{V`fPo>etQg2Z1*-xW85kY_#S|DA@=Fp^5=#cs$r00 zNGvEYK#>G;fbxP24Dv8}Lri(bCI$vupfD3daY1HU8k!S;_A@gu*aPJm8ItphQd3HE z3y{rt{rW!&*kUTYQR#?8@k&PSrZ-lqdr>4uIin#k8UmvsFd71*Aut*OqaiRF0;3@? H!b1Q6pG-mU literal 0 HcmV?d00001 diff --git a/flasher/manifest-beta.json b/flasher/manifest-beta.json index 645c362d..50c97eb5 100644 --- a/flasher/manifest-beta.json +++ b/flasher/manifest-beta.json @@ -19,8 +19,8 @@ "chipFamily": "ESP32-S3", "improv": false, "parts": [ - { "path": "bins/jaam.bootloader.bin", "offset": 4096 }, - { "path": "bins/jaam.partitions.bin", "offset": 32768 }, + { "path": "bins/jaam.bootloader.s3.bin", "offset": 4096 }, + { "path": "bins/jaam.partitions.s3.bin", "offset": 32768 }, { "path": "bins/jaam.boot.app0.bin", "offset": 57344 }, { "path": "bins/jaam_beta_s3.bin", "offset": 65536 } ] @@ -29,8 +29,8 @@ "chipFamily": "ESP32-C3", "improv": false, "parts": [ - { "path": "bins/jaam.bootloader.bin", "offset": 4096 }, - { "path": "bins/jaam.partitions.bin", "offset": 32768 }, + { "path": "bins/jaam.bootloader.c3.bin", "offset": 4096 }, + { "path": "bins/jaam.partitions.c3.bin", "offset": 32768 }, { "path": "bins/jaam.boot.app0.bin", "offset": 57344 }, { "path": "bins/jaam_beta_c3.bin", "offset": 65536 } ] From 8462cca92df7ce17f8acd3b9c6e7a943bf827cd9 Mon Sep 17 00:00:00 2001 From: Vladyslav Heneraliuk Date: Sat, 8 Feb 2025 16:12:36 +0200 Subject: [PATCH 18/25] update impl for s3 and c3 chips --- .github/workflows/beta_release.yml | 14 +-- .github/workflows/release.yml | 66 ++++++++++++- deploy/redeploy_update_server.sh | 12 +-- deploy/update_server/update_server.py | 58 +++++++++-- deploy/websocket_server/websocket_server.py | 103 +++++++++++++++++++- firmware/src/JaamFirmware.cpp | 6 ++ 6 files changed, 227 insertions(+), 32 deletions(-) diff --git a/.github/workflows/beta_release.yml b/.github/workflows/beta_release.yml index f13f6e8f..69820865 100644 --- a/.github/workflows/beta_release.yml +++ b/.github/workflows/beta_release.yml @@ -42,24 +42,24 @@ jobs: project-env: firmware_esp32s3 - name: Copy release files to bin folder run: | - mkdir -p ${{ github.workspace }}/bin_beta_s3/ - cp -f ${{ github.workspace }}/firmware/.pio/build/firmware_esp32s3/firmware.bin ${{ github.workspace }}/bin_beta_s3/${{ env.BETA_VERSION }}.bin + mkdir -p ${{ github.workspace }}/bin_beta/s3/ + cp -f ${{ github.workspace }}/firmware/.pio/build/firmware_esp32s3/firmware.bin ${{ github.workspace }}/bin_beta/s3/${{ env.BETA_VERSION }}.bin cp -f ${{ github.workspace }}/firmware/.pio/build/firmware_esp32s3/firmware.bin ${{ github.workspace }}/JAAM_S3_${{ env.BETA_VERSION }}.bin - name: Leave only 10 recent BETA S3 builds run: | - bash ${{ github.workspace }}/deploy/remove_old_bins.sh ${{ github.workspace }}/bin_beta_s3/ 10 + bash ${{ github.workspace }}/deploy/remove_old_bins.sh ${{ github.workspace }}/bin_beta/s3/ 10 - name: Compile firmware c3 uses: ./.github/workflows/firmware-compile with: project-env: firmware_esp32c3 - name: Copy release files to bin folder run: | - mkdir -p ${{ github.workspace }}/bin_beta_c3/ - cp -f ${{ github.workspace }}/firmware/.pio/build/firmware_esp32c3/firmware.bin ${{ github.workspace }}/bin_beta_c3/${{ env.BETA_VERSION }}.bin + mkdir -p ${{ github.workspace }}/bin_beta/c3/ + cp -f ${{ github.workspace }}/firmware/.pio/build/firmware_esp32c3/firmware.bin ${{ github.workspace }}/bin_beta/c3/${{ env.BETA_VERSION }}.bin cp -f ${{ github.workspace }}/firmware/.pio/build/firmware_esp32c3/firmware.bin ${{ github.workspace }}/JAAM_C3_${{ env.BETA_VERSION }}.bin - name: Leave only 10 recent BETA C3 builds run: | - bash ${{ github.workspace }}/deploy/remove_old_bins.sh ${{ github.workspace }}/bin_beta_c3/ 10 + bash ${{ github.workspace }}/deploy/remove_old_bins.sh ${{ github.workspace }}/bin_beta/c3/ 10 - name: Upload flasher to Github Pages uses: ./.github/workflows/upload-pages with: @@ -73,7 +73,7 @@ jobs: uses: stefanzweifel/git-auto-commit-action@v5 with: commit_message: "Beta ${{ env.BETA_VERSION }}" - file_pattern: ${{ github.workspace }}/firmware/platformio.ini ${{ github.workspace }}/bin_beta/ ${{ github.workspace }}/bin_beta_s3/ ${{ github.workspace }}/bin_beta_c3/ ${{ github.workspace }}/flasher/ + file_pattern: ${{ github.workspace }}/firmware/platformio.ini ${{ github.workspace }}/bin_beta/ ${{ github.workspace }}/flasher/ - name: Create Beta Pre Release uses: ncipollo/release-action@v1 with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 58910889..f4017d19 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -31,6 +31,48 @@ jobs: with: name: JAAM_${{ inputs.release-version }}.bin path: ${{ github.workspace }}/JAAM_${{ inputs.release-version }}.bin + build_s3: + if: ${{ github.ref_name == 'master' }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Replace version in firmware source + run: | + sed -i 's/VERSION=".*"/VERSION="${{ inputs.release-version }}"/' ${{ github.workspace }}/firmware/platformio.ini + - name: Compile firmware + uses: ./.github/workflows/firmware-compile + with: + project-env: firmware_esp32s3 + - name: Copy bin to upload + run: | + cp -f ${{ github.workspace }}/firmware/.pio/build/firmware_esp32s3/firmware.bin ${{ github.workspace }}/JAAM_S3_${{ inputs.release-version }}.bin + - name: Upload firmware + uses: actions/upload-artifact@v4 + with: + name: JAAM_S3_${{ inputs.release-version }}.bin + path: ${{ github.workspace }}/JAAM_S3_${{ inputs.release-version }}.bin + build_c3: + if: ${{ github.ref_name == 'master' }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Replace version in firmware source + run: | + sed -i 's/VERSION=".*"/VERSION="${{ inputs.release-version }}"/' ${{ github.workspace }}/firmware/platformio.ini + - name: Compile firmware + uses: ./.github/workflows/firmware-compile + with: + project-env: firmware_esp32c3 + - name: Copy bin to upload + run: | + cp -f ${{ github.workspace }}/firmware/.pio/build/firmware_esp32c3/firmware.bin ${{ github.workspace }}/JAAM_C3_${{ inputs.release-version }}.bin + - name: Upload firmware + uses: actions/upload-artifact@v4 + with: + name: JAAM_C3_${{ inputs.release-version }}.bin + path: ${{ github.workspace }}/JAAM_C3_${{ inputs.release-version }}.bin build_lite: if: ${{ github.ref_name == 'master' }} runs-on: ubuntu-latest @@ -53,7 +95,7 @@ jobs: name: JAAM_${{ inputs.release-version }}_lite.bin path: ${{ github.workspace }}/JAAM_${{ inputs.release-version }}_lite.bin release_firmware: - needs: [build, build_lite] + needs: [build, build_s3, build_c3, build_lite] runs-on: ubuntu-latest environment: name: github-pages @@ -72,6 +114,16 @@ jobs: with: name: JAAM_${{ inputs.release-version }}.bin path: ${{ github.workspace }}/JAAM_${{ inputs.release-version }}.bin + - name: Download S3 firmware + uses: actions/download-artifact@v4 + with: + name: JAAM_S3_${{ inputs.release-version }}.bin + path: ${{ github.workspace }}/JAAM_S3_${{ inputs.release-version }}.bin + - name: Download C3 firmware + uses: actions/download-artifact@v4 + with: + name: JAAM_C3_${{ inputs.release-version }}.bin + path: ${{ github.workspace }}/JAAM_C3_${{ inputs.release-version }}.bin - name: Download firmware lite uses: actions/download-artifact@v4 with: @@ -81,12 +133,24 @@ jobs: run: | mkdir -p ${{ github.workspace }}/bin/ mkdir -p ${{ github.workspace }}/bin_beta/ + mkdir -p ${{ github.workspace }}/bin/s3/ + mkdir -p ${{ github.workspace }}/bin_beta/s3/ + mkdir -p ${{ github.workspace }}/bin/c3/ + mkdir -p ${{ github.workspace }}/bin_beta/c3/ cp -f ${{ github.workspace }}/JAAM_${{ inputs.release-version }}.bin/JAAM_${{ inputs.release-version }}.bin ${{ github.workspace }}/bin/${{ inputs.release-version }}.bin cp -f ${{ github.workspace }}/JAAM_${{ inputs.release-version }}.bin/JAAM_${{ inputs.release-version }}.bin ${{ github.workspace }}/bin_beta/${{ inputs.release-version }}.bin + cp -f ${{ github.workspace }}/JAAM_S3_${{ inputs.release-version }}.bin/JAAM_S3_${{ inputs.release-version }}.bin ${{ github.workspace }}/bin/s3/${{ inputs.release-version }}.bin + cp -f ${{ github.workspace }}/JAAM_S3_${{ inputs.release-version }}.bin/JAAM_S3_${{ inputs.release-version }}.bin ${{ github.workspace }}/bin_beta/s3/${{ inputs.release-version }}.bin + cp -f ${{ github.workspace }}/JAAM_C3_${{ inputs.release-version }}.bin/JAAM_C3_${{ inputs.release-version }}.bin ${{ github.workspace }}/bin/c3/${{ inputs.release-version }}.bin + cp -f ${{ github.workspace }}/JAAM_C3_${{ inputs.release-version }}.bin/JAAM_C3_${{ inputs.release-version }}.bin ${{ github.workspace }}/bin_beta/c3/${{ inputs.release-version }}.bin - name: Leave only 5 recent PROD builds and 10 recent BETA builds run: | bash ${{ github.workspace }}/deploy/remove_old_bins.sh ${{ github.workspace }}/bin/ 5 bash ${{ github.workspace }}/deploy/remove_old_bins.sh ${{ github.workspace }}/bin_beta/ 10 + bash ${{ github.workspace }}/deploy/remove_old_bins.sh ${{ github.workspace }}/bin/s3/ 5 + bash ${{ github.workspace }}/deploy/remove_old_bins.sh ${{ github.workspace }}/bin_beta/s3/ 10 + bash ${{ github.workspace }}/deploy/remove_old_bins.sh ${{ github.workspace }}/bin/c3/ 5 + bash ${{ github.workspace }}/deploy/remove_old_bins.sh ${{ github.workspace }}/bin_beta/c3/ 10 - name: Upload flasher to Github Pages uses: ./.github/workflows/upload-pages with: diff --git a/deploy/redeploy_update_server.sh b/deploy/redeploy_update_server.sh index 6de5f3a9..ef32bf32 100644 --- a/deploy/redeploy_update_server.sh +++ b/deploy/redeploy_update_server.sh @@ -28,14 +28,6 @@ while [[ $# -gt 0 ]]; do SHARED_BETA_PATH="$2" shift 2 ;; - -sbs|--shared-beta-s3-path) - SHARED_BETA_S3_PATH="$2" - shift 2 - ;; - -sbc|--shared-beta-c3-path) - SHARED_BETA_C3_PATH="$2" - shift 2 - ;; -l|--logging) LOGGING="$2" shift 2 @@ -51,8 +43,6 @@ echo "UPDATE_SERVER" echo "SHARED_PATH: $SHARED_PATH" echo "SHARED_BETA_PATH: $SHARED_BETA_PATH" -echo "SHARED_BETA_S3_PATH: $SHARED_BETA_S3_PATH" -echo "SHARED_BETA_C3_PATH: $SHARED_BETA_C3_PATH" echo "MEMCACHED_HOST: $MEMCACHED_HOST" echo "PORT: $PORT" echo "LOGGING: $LOGGING" @@ -82,7 +72,7 @@ docker rm map_update_server || true # Deploying the new container echo "Deploying new container..." -docker run --name map_update_server --restart unless-stopped --network=jaam -d -p "$PORT":"$PORT" -v "$SHARED_PATH":/shared_data -v "$SHARED_BETA_PATH":/shared_beta_data -v "$SHARED_BETA_S3_PATH":/shared_beta_s3_data -v "$SHARED_BETA_C3_PATH":/shared_beta_c3_data --env PORT="$PORT" --env MEMCACHED_HOST="$MEMCACHED_HOST" --env LOGGING="$LOGGING" map_update_server +docker run --name map_update_server --restart unless-stopped --network=jaam -d -p "$PORT":"$PORT" -v "$SHARED_PATH":/shared_data -v "$SHARED_BETA_PATH":/shared_beta_data --env PORT="$PORT" --env MEMCACHED_HOST="$MEMCACHED_HOST" --env LOGGING="$LOGGING" map_update_server echo "Container deployed successfully!" diff --git a/deploy/update_server/update_server.py b/deploy/update_server/update_server.py index 9834a301..f32660e2 100644 --- a/deploy/update_server/update_server.py +++ b/deploy/update_server/update_server.py @@ -19,8 +19,6 @@ memcached_port = int(os.environ.get("MEMCACHED_PORT") or 11211) shared_path = os.environ.get("SHARED_PATH") or "/shared_data" shared_beta_path = os.environ.get("SHARED_BETA_PATH") or "/shared_beta_data" -shared_beta_s3_path = os.environ.get("SHARED_BETA_S3_PATH") or "/shared_beta_s3_data" -shared_beta_c3_path = os.environ.get("SHARED_BETA_C3_PATH") or "/shared_beta_c3_data" if not shared_path or not os.path.isdir(shared_path): raise ValueError(f"SHARED_PATH має вказувати на існуючу директорію: {shared_path}") @@ -135,6 +133,10 @@ async def update(request): return FileResponse(f'{shared_path}/{request.path_params["filename"]}.bin') +async def update_board(request): + return FileResponse(f'{shared_path}/{request.path_params["board"]}/{request.path_params["filename"]}.bin') + + async def update_beta(request): if request.path_params["filename"] == "latest_beta": filenames = sorted( @@ -162,12 +164,8 @@ async def update_beta(request): return FileResponse(f'{shared_beta_path}/{request.path_params["filename"]}.bin') -async def spiffs_update(request): - return FileResponse(f'{shared_path}/spiffs/{request.path_params["filename"]}.bin') - - -async def spiffs_update_beta(request): - return FileResponse(f'{shared_beta_path}/spiffs/{request.path_params["filename"]}.bin') +async def update_beta_board(request): + return FileResponse(f'{shared_beta_path}/{request.path_params["board"]}/{request.path_params["filename"]}.bin') async def update_cache(): @@ -186,8 +184,48 @@ async def update_cache(): if (os.path.isfile(os.path.join(shared_beta_path, file)) and file.endswith(".bin")) ] ) + s3_filenames = sorted( + [ + file + for file in os.listdir(f"{shared_path}/s3/") + if (os.path.isfile(os.path.join(f"{shared_path}/s3/", file)) and file.endswith(".bin")) + ], + key=bin_sort, + reverse=True, + ) + s3_beta_filenames = sorted( + [ + file + for file in os.listdir(f"{shared_beta_path}/s3/") + if (os.path.isfile(os.path.join(f"{shared_beta_path}/s3/", file)) and file.endswith(".bin")) + ], + key=bin_sort, + reverse=True, + ) + c3_filenames = sorted( + [ + file + for file in os.listdir(f"{shared_path}/c3/") + if (os.path.isfile(os.path.join(f"{shared_path}/c3/", file)) and file.endswith(".bin")) + ], + key=bin_sort, + reverse=True, + ) + c3_beta_filenames = sorted( + [ + file + for file in os.listdir(f"{shared_beta_path}/c3/") + if (os.path.isfile(os.path.join(f"{shared_beta_path}/c3/", file)) and file.endswith(".bin")) + ], + key=bin_sort, + reverse=True, + ) await mc.set(b"bins", json.dumps(filenames).encode("utf-8")) await mc.set(b"test_bins", json.dumps(beta_filenames).encode("utf-8")) + await mc.set(b"s3_bins", json.dumps(s3_filenames).encode("utf-8")) + await mc.set(b"s3_test_bins", json.dumps(s3_beta_filenames).encode("utf-8")) + await mc.set(b"c3_bins", json.dumps(c3_filenames).encode("utf-8")) + await mc.set(b"c3_test_bins", json.dumps(c3_beta_filenames).encode("utf-8")) app = Starlette( @@ -198,9 +236,9 @@ async def update_cache(): Route("/list", list), Route("/betalist", list_beta), Route("/{filename}.bin", update), - Route("/spiffs/{filename}.bin", spiffs_update), Route("/beta/{filename}.bin", update_beta), - Route("/beta/spiffs/{filename}.bin", spiffs_update_beta), + Route("/{board}/{filename}.bin", update_board), + Route("/beta/{board}/{filename}.bin", update_beta_board), ], ) diff --git a/deploy/websocket_server/websocket_server.py b/deploy/websocket_server/websocket_server.py index 416b2ade..7ce58caa 100644 --- a/deploy/websocket_server/websocket_server.py +++ b/deploy/websocket_server/websocket_server.py @@ -77,6 +77,10 @@ def __init__(self): self.drones_v1 = "[]" self.bins = "[]" self.test_bins = "[]" + self.s3_bins = "[]" + self.s3_test_bins = "[]" + self.c3_bins = "[]" + self.c3_test_bins = "[]" self.clients = {} self.trackers = {} self.blocked_ips = [] @@ -367,7 +371,7 @@ async def alerts_data(websocket: ServerConnection, client, client_id, client_ip, await websocket.send(payload) logger.debug(f"{client_ip}:{chip_id} <<< new weather") client["weather"] = shared_data.weather_v1 - if client["bins"] != shared_data.bins: + if client["bins"] != shared_data.bins and not firmware.contains("-s3") and not firmware.contains("-c3"): temp_bins = list(json.loads(shared_data.bins)) if firmware.startswith("3.") or firmware.startswith("2.") or firmware.startswith("1."): temp_bins = list(filter(lambda bin: not bin.startswith("4."), temp_bins)) @@ -377,7 +381,11 @@ async def alerts_data(websocket: ServerConnection, client, client_id, client_ip, await websocket.send(payload) logger.debug(f"{client_ip}:{chip_id} <<< new bins") client["bins"] = shared_data.bins - if client["test_bins"] != shared_data.test_bins: + if ( + client["test_bins"] != shared_data.test_bins + and not firmware.contains("-s3") + and not firmware.contains("-c3") + ): temp_bins = list(json.loads(shared_data.test_bins)) if firmware.startswith("3.") or firmware.startswith("2.") or firmware.startswith("1."): temp_bins = list(filter(lambda bin: not bin.startswith("4."), temp_bins)) @@ -387,6 +395,35 @@ async def alerts_data(websocket: ServerConnection, client, client_id, client_ip, await websocket.send(payload) logger.debug(f"{client_ip}:{chip_id} <<< new test_bins") client["test_bins"] = shared_data.test_bins + if client["bins"] != shared_data.s3_bins and firmware.contains("-s3"): + temp_bins = list(json.loads(shared_data.s3_bins)) + temp_bins.sort(key=bin_sort, reverse=True) + payload = '{"payload": "bins", "bins": %s}' % temp_bins + await websocket.send(payload) + logger.debug(f"{client_ip}:{chip_id} <<< new s3_bins") + client["bins"] = shared_data.s3_bins + if client["test_bins"] != shared_data.s3_test_bins and firmware.contains("-s3"): + temp_bins = list(json.loads(shared_data.s3_test_bins)) + temp_bins.sort(key=bin_sort, reverse=True) + payload = '{"payload": "test_bins", "test_bins": %s}' % temp_bins + await websocket.send(payload) + logger.debug(f"{client_ip}:{chip_id} <<< new s3_test_bins") + client["test_bins"] = shared_data.s3_test_bins + if client["bins"] != shared_data.c3_bins and firmware.contains("-c3"): + temp_bins = list(json.loads(shared_data.c3_bins)) + temp_bins.sort(key=bin_sort, reverse=True) + payload = '{"payload": "bins", "bins": %s}' % temp_bins + await websocket.send(payload) + logger.debug(f"{client_ip}:{chip_id} <<< new c3_bins") + client["bins"] = shared_data.c3_bins + if client["test_bins"] != shared_data.c3_test_bins and firmware.contains("-c3"): + temp_bins = list(json.loads(shared_data.c3_test_bins)) + temp_bins.sort(key=bin_sort, reverse=True) + payload = '{"payload": "test_bins", "test_bins": %s}' % temp_bins + await websocket.send(payload) + logger.debug(f"{client_ip}:{chip_id} <<< new c3_test_bins") + client["test_bins"] = shared_data.c3_test_bins + await asyncio.sleep(0.5) except ChipIdTimeoutException: logger.error(f"{client_ip}:{client_id} !!! chip_id timeout, closing connection") @@ -559,7 +596,7 @@ async def echo(websocket: ServerConnection): # } -async def update_shared_data(shared_data, mc): +async def update_shared_data(shared_data: SharedData, mc): while True: logger.debug("memcache check") ( @@ -571,6 +608,10 @@ async def update_shared_data(shared_data, mc): drones_v1, bins, test_bins, + s3_bins, + s3_test_bins, + c3_bins, + c3_test_bins, alerts_full, weather_full, ) = ( @@ -633,6 +674,34 @@ async def update_shared_data(shared_data, mc): except Exception as e: logger.error(f"error in test_bins: {e}") + try: + if s3_bins != shared_data.s3_bins: + shared_data.s3_bins = s3_bins + logger.debug(f"s3 bins updated: {s3_bins}") + except Exception as e: + logger.error(f"error in s3 bins: {e}") + + try: + if s3_test_bins != shared_data.s3_test_bins: + shared_data.s3_test_bins = s3_test_bins + logger.debug(f"s3 test bins updated: {s3_test_bins}") + except Exception as e: + logger.error(f"error in s3 test_bins: {e}") + + try: + if c3_bins != shared_data.c3_bins: + shared_data.c3_bins = c3_bins + logger.debug(f"c3 bins updated: {c3_bins}") + except Exception as e: + logger.error(f"error in c3 bins: {e}") + + try: + if c3_test_bins != shared_data.c3_test_bins: + shared_data.c3_test_bins = c3_test_bins + logger.debug(f"c3 test bins updated: {c3_test_bins}") + except Exception as e: + logger.error(f"error in c3 test_bins: {e}") + try: if alerts_full != shared_data.alerts_full: shared_data.alerts_full = alerts_full @@ -725,6 +794,10 @@ async def get_data_from_memcached(mc): drones_cached_v1 = await mc.get(b"drones_websocket_v1") bins_cached = await mc.get(b"bins") test_bins_cached = await mc.get(b"test_bins") + s3_bins_cached = await mc.get(b"s3_bins") + s3_test_bins_cached = await mc.get(b"s3_test_bins") + c3_bins_cached = await mc.get(b"c3_bins") + c3_test_bins_cached = await mc.get(b"c3_test_bins") alerts_full_cached = await mc.get(b"alerts_historical_v1") weather_full_cached = await mc.get(b"weather_openweathermap") @@ -794,6 +867,26 @@ async def get_data_from_memcached(mc): else: test_bins_cached_data = "[]" + if s3_bins_cached: + s3_bins_cached_data = s3_bins_cached.decode("utf-8") + else: + s3_bins_cached_data = "[]" + + if s3_test_bins_cached: + s3_test_bins_cached_data = s3_test_bins_cached.decode("utf-8") + else: + s3_test_bins_cached_data = "[]" + + if c3_bins_cached: + c3_bins_cached_data = c3_bins_cached.decode("utf-8") + else: + c3_bins_cached_data = "[]" + + if c3_test_bins_cached: + c3_test_bins_cached_data = c3_test_bins_cached.decode("utf-8") + else: + c3_test_bins_cached_data = "[]" + if alerts_full_cached: alerts_full_cached_data = json.loads(alerts_full_cached.decode("utf-8")) else: @@ -812,6 +905,10 @@ async def get_data_from_memcached(mc): drones_cashed_data_v1, bins_cached_data, test_bins_cached_data, + s3_bins_cached_data, + s3_test_bins_cached_data, + c3_bins_cached_data, + c3_test_bins_cached_data, alerts_full_cached_data, weather_full_cached_data, ) diff --git a/firmware/src/JaamFirmware.cpp b/firmware/src/JaamFirmware.cpp index 33bbaad3..7d951b4f 100644 --- a/firmware/src/JaamFirmware.cpp +++ b/firmware/src/JaamFirmware.cpp @@ -830,7 +830,13 @@ void downloadAndUpdateFw(const char* binFileName, bool isBeta) { "http://%s:%d%s%s", settings.getString(WS_SERVER_HOST), settings.getInt(UPDATE_SERVER_PORT), + #if ARDUINO_ESP32_DEV isBeta ? "/beta/" : "/", + #elif ARDUINO_ESP32S3_DEV + isBeta ? "/beta/s3/" : "/s3/", + #elif ARDUINO_ESP32C3_DEV + isBeta ? "/beta/c3/" : "/c3/", + #endif binFileName ); From 732c2548d97125b1295e64cc69d6ec19d934f5d6 Mon Sep 17 00:00:00 2001 From: Vladyslav Heneraliuk Date: Mon, 10 Feb 2025 15:10:50 +0200 Subject: [PATCH 19/25] fixed alternative boards checks --- deploy/websocket_server/websocket_server.py | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/deploy/websocket_server/websocket_server.py b/deploy/websocket_server/websocket_server.py index 7ce58caa..a19a2c07 100644 --- a/deploy/websocket_server/websocket_server.py +++ b/deploy/websocket_server/websocket_server.py @@ -322,7 +322,9 @@ def split_message(message): logger.debug(f"{client_ip}:{chip_id} !!! unknown data request") -async def alerts_data(websocket: ServerConnection, client, client_id, client_ip, shared_data, alert_version): +async def alerts_data( + websocket: ServerConnection, client, client_id, client_ip, shared_data: SharedData, alert_version +): while True: try: chip_id = await get_client_chip_id(client) @@ -371,7 +373,7 @@ async def alerts_data(websocket: ServerConnection, client, client_id, client_ip, await websocket.send(payload) logger.debug(f"{client_ip}:{chip_id} <<< new weather") client["weather"] = shared_data.weather_v1 - if client["bins"] != shared_data.bins and not firmware.contains("-s3") and not firmware.contains("-c3"): + if client["bins"] != shared_data.bins and "-s3" not in firmware and "-c3" not in firmware: temp_bins = list(json.loads(shared_data.bins)) if firmware.startswith("3.") or firmware.startswith("2.") or firmware.startswith("1."): temp_bins = list(filter(lambda bin: not bin.startswith("4."), temp_bins)) @@ -381,11 +383,7 @@ async def alerts_data(websocket: ServerConnection, client, client_id, client_ip, await websocket.send(payload) logger.debug(f"{client_ip}:{chip_id} <<< new bins") client["bins"] = shared_data.bins - if ( - client["test_bins"] != shared_data.test_bins - and not firmware.contains("-s3") - and not firmware.contains("-c3") - ): + if client["test_bins"] != shared_data.test_bins and "-s3" not in firmware and "-c3" not in firmware: temp_bins = list(json.loads(shared_data.test_bins)) if firmware.startswith("3.") or firmware.startswith("2.") or firmware.startswith("1."): temp_bins = list(filter(lambda bin: not bin.startswith("4."), temp_bins)) @@ -395,28 +393,28 @@ async def alerts_data(websocket: ServerConnection, client, client_id, client_ip, await websocket.send(payload) logger.debug(f"{client_ip}:{chip_id} <<< new test_bins") client["test_bins"] = shared_data.test_bins - if client["bins"] != shared_data.s3_bins and firmware.contains("-s3"): + if client["bins"] != shared_data.s3_bins and "-s3" in firmware: temp_bins = list(json.loads(shared_data.s3_bins)) temp_bins.sort(key=bin_sort, reverse=True) payload = '{"payload": "bins", "bins": %s}' % temp_bins await websocket.send(payload) logger.debug(f"{client_ip}:{chip_id} <<< new s3_bins") client["bins"] = shared_data.s3_bins - if client["test_bins"] != shared_data.s3_test_bins and firmware.contains("-s3"): + if client["test_bins"] != shared_data.s3_test_bins and "-s3" in firmware: temp_bins = list(json.loads(shared_data.s3_test_bins)) temp_bins.sort(key=bin_sort, reverse=True) payload = '{"payload": "test_bins", "test_bins": %s}' % temp_bins await websocket.send(payload) logger.debug(f"{client_ip}:{chip_id} <<< new s3_test_bins") client["test_bins"] = shared_data.s3_test_bins - if client["bins"] != shared_data.c3_bins and firmware.contains("-c3"): + if client["bins"] != shared_data.c3_bins and "-c3" in firmware: temp_bins = list(json.loads(shared_data.c3_bins)) temp_bins.sort(key=bin_sort, reverse=True) payload = '{"payload": "bins", "bins": %s}' % temp_bins await websocket.send(payload) logger.debug(f"{client_ip}:{chip_id} <<< new c3_bins") client["bins"] = shared_data.c3_bins - if client["test_bins"] != shared_data.c3_test_bins and firmware.contains("-c3"): + if client["test_bins"] != shared_data.c3_test_bins and "-c3" in firmware: temp_bins = list(json.loads(shared_data.c3_test_bins)) temp_bins.sort(key=bin_sort, reverse=True) payload = '{"payload": "test_bins", "test_bins": %s}' % temp_bins From eb6f9a3e4e3bf3057380b4b39d3c1905e5cbea3e Mon Sep 17 00:00:00 2001 From: Vladyslav Heneraliuk Date: Mon, 10 Feb 2025 15:32:08 +0200 Subject: [PATCH 20/25] simplified data mapping --- deploy/websocket_server/websocket_server.py | 83 ++++----------------- 1 file changed, 16 insertions(+), 67 deletions(-) diff --git a/deploy/websocket_server/websocket_server.py b/deploy/websocket_server/websocket_server.py index a19a2c07..4b3c5516 100644 --- a/deploy/websocket_server/websocket_server.py +++ b/deploy/websocket_server/websocket_server.py @@ -826,74 +826,23 @@ async def get_data_from_memcached(mc): missiles_cashed_data_v1 = json.dumps(missiles_v1[:26]) drones_cashed_data_v1 = json.dumps(drones_v1[:26]) else: - if alerts_cached_v1: - alerts_cached_data_v1 = alerts_cached_v1.decode("utf-8") - else: - alerts_cached_data_v1 = "[]" - if alerts_cached_v2: - alerts_cached_data_v2 = alerts_cached_v2.decode("utf-8") - else: - alerts_cached_data_v2 = "[]" - - if explosions_cached_v1: - explosions_cashed_data_v1 = explosions_cached_v1.decode("utf-8") - else: - explosions_cashed_data_v1 = "[]" + alerts_cached_data_v1 = alerts_cached_v1.decode("utf-8") if alerts_cached_v1 else "[]" + alerts_cached_data_v2 = alerts_cached_v2.decode("utf-8") if alerts_cached_v2 else "[]" + explosions_cashed_data_v1 = explosions_cached_v1.decode("utf-8") if explosions_cached_v1 else "[]" + missiles_cashed_data_v1 = missiles_cached_v1.decode("utf-8") if missiles_cached_v1 else "[]" + drones_cashed_data_v1 = drones_cached_v1.decode("utf-8") if drones_cached_v1 else "[]" + + weather_cached_data_v1 = weather_cached_v1.decode("utf-8") if weather_cached_v1 else "[]" + bins_cached_data = bins_cached.decode("utf-8") if bins_cached else "[]" + test_bins_cached_data = test_bins_cached.decode("utf-8") if test_bins_cached else "[]" + s3_bins_cached_data = s3_bins_cached.decode("utf-8") if s3_bins_cached else "[]" + s3_test_bins_cached_data = s3_test_bins_cached.decode("utf-8") if s3_test_bins_cached else "[]" + c3_bins_cached_data = c3_bins_cached.decode("utf-8") if c3_bins_cached else "[]" + c3_test_bins_cached_data = c3_test_bins_cached.decode("utf-8") if c3_test_bins_cached else "[]" + + alerts_full_cached_data = json.loads(alerts_full_cached.decode("utf-8")) if alerts_full_cached else {} + weather_full_cached_data = json.loads(weather_full_cached.decode("utf-8")) if weather_full_cached else {} - if missiles_cached_v1: - missiles_cashed_data_v1 = missiles_cached_v1.decode("utf-8") - else: - missiles_cashed_data_v1 = "[]" - - if drones_cached_v1: - drones_cashed_data_v1 = drones_cached_v1.decode("utf-8") - else: - drones_cashed_data_v1 = "[]" - - if weather_cached_v1: - weather_cached_data_v1 = weather_cached_v1.decode("utf-8") - else: - weather_cached_data_v1 = "[]" - - if bins_cached: - bins_cached_data = bins_cached.decode("utf-8") - else: - bins_cached_data = "[]" - - if test_bins_cached: - test_bins_cached_data = test_bins_cached.decode("utf-8") - else: - test_bins_cached_data = "[]" - - if s3_bins_cached: - s3_bins_cached_data = s3_bins_cached.decode("utf-8") - else: - s3_bins_cached_data = "[]" - - if s3_test_bins_cached: - s3_test_bins_cached_data = s3_test_bins_cached.decode("utf-8") - else: - s3_test_bins_cached_data = "[]" - - if c3_bins_cached: - c3_bins_cached_data = c3_bins_cached.decode("utf-8") - else: - c3_bins_cached_data = "[]" - - if c3_test_bins_cached: - c3_test_bins_cached_data = c3_test_bins_cached.decode("utf-8") - else: - c3_test_bins_cached_data = "[]" - - if alerts_full_cached: - alerts_full_cached_data = json.loads(alerts_full_cached.decode("utf-8")) - else: - alerts_full_cached_data = {} - - if weather_full_cached: - weather_full_cached_data = json.loads(weather_full_cached.decode("utf-8")) - else: - weather_full_cached_data = {} return ( alerts_cached_data_v1, alerts_cached_data_v2, From 583ee27a03e4f93e23b236261444a59c128c4a76 Mon Sep 17 00:00:00 2001 From: Vladyslav Heneraliuk Date: Mon, 10 Feb 2025 16:17:45 +0200 Subject: [PATCH 21/25] removed Jaam 1.3 and Jaam 2.x options for s3 and c3 boards --- firmware/src/Constants.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/firmware/src/Constants.h b/firmware/src/Constants.h index a5640f90..06c2224b 100644 --- a/firmware/src/Constants.h +++ b/firmware/src/Constants.h @@ -321,12 +321,18 @@ static SettingListItem DISPLAY_HEIGHT_OPTIONS[DISPLAY_HEIGHT_OPTIONS_COUNT] = { {64, "128x64", false} }; +#if ARDUINO_ESP32_DEV #define LEGACY_OPTIONS_COUNT 4 +#else +#define LEGACY_OPTIONS_COUNT 2 +#endif static SettingListItem LEGACY_OPTIONS[LEGACY_OPTIONS_COUNT] = { +#if ARDUINO_ESP32_DEV + {3, "Плата JAAM 2.x", false}, {0, "Плата JAAM 1.3", false}, +#endif {1, "Початок на Закарпатті", false}, {2, "Початок на Одещині", false}, - {3, "Плата JAAM 2.x", false} }; static const size_t MAX_JSON_SIZE = 6000; // 6KB From 07abc6b0f37c5e76fdfff1238a65b8f37ce8a80b Mon Sep 17 00:00:00 2001 From: v00g100skr Date: Mon, 10 Feb 2025 16:31:27 +0200 Subject: [PATCH 22/25] pin map --- firmware/src/Constants.h | 4 ++-- firmware/src/JaamFirmware.cpp | 27 +++++++++++++++++++-------- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/firmware/src/Constants.h b/firmware/src/Constants.h index 06c2224b..53ae0f21 100644 --- a/firmware/src/Constants.h +++ b/firmware/src/Constants.h @@ -341,9 +341,9 @@ static const size_t MAX_JSON_SIZE = 6000; // 6KB #if ARDUINO_ESP32_DEV #define SUPPORTED_LEDS_PINS {2, 4, 12, 13, 14, 15, 16, 17, 18, 25, 26, 27, 32, 33} #elif ARDUINO_ESP32S3_DEV - #define SUPPORTED_LEDS_PINS {2, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21} + #define SUPPORTED_LEDS_PINS {2, 4, 12, 13, 14, 15, 18, 21, 25, 26, 33, 34, 35 ,36, 37, 38, 39, 40, 41, 42} #elif ARDUINO_ESP32C3_DEV - #define SUPPORTED_LEDS_PINS {2, 4, 18} + #define SUPPORTED_LEDS_PINS {2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,18 ,19 ,20 ,21} #else #error "Платформа не підтримується!" #endif diff --git a/firmware/src/JaamFirmware.cpp b/firmware/src/JaamFirmware.cpp index 7d951b4f..f068761e 100644 --- a/firmware/src/JaamFirmware.cpp +++ b/firmware/src/JaamFirmware.cpp @@ -3564,24 +3564,35 @@ void initFastledStrip(uint8_t pin, const CRGB *leds, int pixelcount) { #elif ARDUINO_ESP32S3_DEV GENERATE_PIN_CASE(2) GENERATE_PIN_CASE(4) - GENERATE_PIN_CASE(8) - GENERATE_PIN_CASE(9) - GENERATE_PIN_CASE(10) - GENERATE_PIN_CASE(11) GENERATE_PIN_CASE(12) GENERATE_PIN_CASE(13) GENERATE_PIN_CASE(14) GENERATE_PIN_CASE(15) - GENERATE_PIN_CASE(16) - GENERATE_PIN_CASE(17) GENERATE_PIN_CASE(18) - GENERATE_PIN_CASE(19) - GENERATE_PIN_CASE(20) GENERATE_PIN_CASE(21) + GENERATE_PIN_CASE(26) + GENERATE_PIN_CASE(33) + GENERATE_PIN_CASE(34) + GENERATE_PIN_CASE(35) + GENERATE_PIN_CASE(36) + GENERATE_PIN_CASE(37) + GENERATE_PIN_CASE(38) + GENERATE_PIN_CASE(39) + GENERATE_PIN_CASE(40) + GENERATE_PIN_CASE(41) + GENERATE_PIN_CASE(42) #elif ARDUINO_ESP32C3_DEV GENERATE_PIN_CASE(2) + GENERATE_PIN_CASE(3) GENERATE_PIN_CASE(4) + GENERATE_PIN_CASE(5) + GENERATE_PIN_CASE(6) + GENERATE_PIN_CASE(7) + GENERATE_PIN_CASE(10) GENERATE_PIN_CASE(18) + GENERATE_PIN_CASE(19) + GENERATE_PIN_CASE(20) + GENERATE_PIN_CASE(21) #endif default: LOG.print("Error: Unexpected pin configuration for this board: "); From 51f15e5c7d4c405054af9f3b0250574c7a3c4481 Mon Sep 17 00:00:00 2001 From: v00g100skr Date: Mon, 10 Feb 2025 16:32:57 +0200 Subject: [PATCH 23/25] removed unused manifests --- flasher/manifest-beta-c3.json | 19 ------------------- flasher/manifest-beta-s3.json | 19 ------------------- 2 files changed, 38 deletions(-) delete mode 100644 flasher/manifest-beta-c3.json delete mode 100644 flasher/manifest-beta-s3.json diff --git a/flasher/manifest-beta-c3.json b/flasher/manifest-beta-c3.json deleted file mode 100644 index 526aaaf3..00000000 --- a/flasher/manifest-beta-c3.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "JAAM C3 Beta", - "version": "4.3-b101", - "funding_url": "https://send.monobank.ua/jar/7GzS1PhPa2", - "new_install_improv_wait_time": 0, - "new_install_prompt_erase": true, - "builds": [ - { - "chipFamily": "ESP32-C3", - "improv": false, - "parts": [ - { "path": "bins/jaam.bootloader.bin", "offset": 4096 }, - { "path": "bins/jaam.partitions.bin", "offset": 32768 }, - { "path": "bins/jaam.boot.app0.bin", "offset": 57344 }, - { "path": "bins/jaam_beta_c3.bin", "offset": 65536 } - ] - } - ] - } \ No newline at end of file diff --git a/flasher/manifest-beta-s3.json b/flasher/manifest-beta-s3.json deleted file mode 100644 index df89ebfd..00000000 --- a/flasher/manifest-beta-s3.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "JAAM S3 Beta", - "version": "4.3-b101", - "funding_url": "https://send.monobank.ua/jar/7GzS1PhPa2", - "new_install_improv_wait_time": 0, - "new_install_prompt_erase": true, - "builds": [ - { - "chipFamily": "ESP32-S3", - "improv": false, - "parts": [ - { "path": "bins/jaam.bootloader.bin", "offset": 4096 }, - { "path": "bins/jaam.partitions.bin", "offset": 32768 }, - { "path": "bins/jaam.boot.app0.bin", "offset": 57344 }, - { "path": "bins/jaam_beta_s3.bin", "offset": 65536 } - ] - } - ] - } \ No newline at end of file From e4d391173388a91b2bfa73e93621ec15af7dffc4 Mon Sep 17 00:00:00 2001 From: Vladyslav Heneraliuk Date: Mon, 10 Feb 2025 18:35:44 +0200 Subject: [PATCH 24/25] fixed issue with whitespaces --- firmware/src/Constants.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/firmware/src/Constants.h b/firmware/src/Constants.h index 53ae0f21..be5707d9 100644 --- a/firmware/src/Constants.h +++ b/firmware/src/Constants.h @@ -341,9 +341,9 @@ static const size_t MAX_JSON_SIZE = 6000; // 6KB #if ARDUINO_ESP32_DEV #define SUPPORTED_LEDS_PINS {2, 4, 12, 13, 14, 15, 16, 17, 18, 25, 26, 27, 32, 33} #elif ARDUINO_ESP32S3_DEV - #define SUPPORTED_LEDS_PINS {2, 4, 12, 13, 14, 15, 18, 21, 25, 26, 33, 34, 35 ,36, 37, 38, 39, 40, 41, 42} + #define SUPPORTED_LEDS_PINS {2, 4, 12, 13, 14, 15, 18, 21, 25, 26, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42} #elif ARDUINO_ESP32C3_DEV - #define SUPPORTED_LEDS_PINS {2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,18 ,19 ,20 ,21} + #define SUPPORTED_LEDS_PINS {2, 3, 4, 5, 6, 7, 8, 9, 10, 18, 19, 20, 21} #else #error "Платформа не підтримується!" #endif From 130619da6de40e9e3b8bba8a306713959bf7769f Mon Sep 17 00:00:00 2001 From: Vladyslav Heneraliuk Date: Mon, 10 Feb 2025 20:18:08 +0200 Subject: [PATCH 25/25] added 'exception decoder' build type --- firmware/platformio.ini | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/firmware/platformio.ini b/firmware/platformio.ini index 42299d09..f9d52b33 100644 --- a/firmware/platformio.ini +++ b/firmware/platformio.ini @@ -106,3 +106,7 @@ build_flags = -D SHT3X_ENABLED=1 -D BH1750_ENABLED=1 -D BUZZER_ENABLED=1 + +[env:firmware_exception_decoder] +extends = env:firmware +monitor_filters = esp32_exception_decoder