# ═══════════════════════════════════════════════════════════ # Klubhaus Doorbell — Multi-Target Build Harness # ═══════════════════════════════════════════════════════════ [tasks.install-libs-shared] description = "Install shared (platform-independent) libraries" run = """ arduino-cli lib install "ArduinoJson@7.4.1" arduino-cli lib install "NTPClient@3.2.1" arduino-cli lib install "ESP32_IO_Expander@0.0.4" echo "[OK] Shared libraries installed" """ [tasks.install-libs-32e] description = "Vendor TFT_eSPI into vendor/esp32-32e" run = """ #!/usr/bin/env bash set -euo pipefail if [ ! -d "vendor/esp32-32e/TFT_eSPI" ]; then echo "Cloning TFT_eSPI..." git clone --depth 1 --branch V2.5.43 \ https://github.com/Bodmer/TFT_eSPI.git \ vendor/esp32-32e/TFT_eSPI fi echo "Copying board-specific User_Setup.h..." cp boards/esp32-32e/tft_user_setup.h vendor/esp32-32e/TFT_eSPI/User_Setup.h echo "[OK] TFT_eSPI 2.5.43 vendored + configured" """ [tasks.install-libs-s3-43] description = "Vendor Arduino_GFX into vendor/esp32-s3-lcd-43" run = """ #!/usr/bin/env bash set -euo pipefail if [ ! -d "vendor/esp32-s3-lcd-43/GFX_Library_for_Arduino" ]; then echo "Cloning Arduino_GFX..." git clone --depth 1 --branch v1.6.5 \ https://github.com/moononournation/Arduino_GFX.git \ vendor/esp32-s3-lcd-43/GFX_Library_for_Arduino fi echo "[OK] Arduino_GFX 1.6.5 vendored" """ [tasks.install-libs] description = "Install all libraries (shared + vendored)" depends = ["install-libs-shared", "install-libs-32e", "install-libs-s3-43"] # ── ESP32-32E ──────────────────────────────────────────── [tasks.compile-32e] description = "Compile ESP32-32E sketch" depends = ["install-libs"] run = """ arduino-cli compile \ --fqbn "esp32:esp32:esp32:FlashSize=4M,PartitionScheme=default" \ --libraries ./libraries \ --libraries ./vendor/esp32-32e \ --build-property "compiler.cpp.extra_flags=-DDEBUG_MODE" \ --warnings default \ ./boards/esp32-32e """ [tasks.upload-32e] description = "Upload to ESP32-32E" run = """ arduino-cli upload \ --fqbn "esp32:esp32:esp32:FlashSize=4M,PartitionScheme=default" \ --port "${PORT:-/dev/ttyUSB0}" \ ./boards/esp32-32e """ [tasks.monitor-32e] description = "Serial monitor for ESP32-32E" run = """ arduino-cli monitor --port "${PORT:-/dev/ttyUSB0}" --config baudrate=115200 """ # ── ESP32-S3-LCD-4.3 ──────────────────────────────────── [tasks.compile-s3-43] description = "Compile ESP32-S3-LCD-4.3 sketch" depends = ["install-libs"] run = """ arduino-cli compile \ --fqbn "esp32:esp32:waveshare_esp32_s3_touch_lcd_43:PSRAM=enabled,FlashSize=16M,USBMode=hwcdc,PartitionScheme=app3M_fat9M_16MB" \ --libraries ./libraries \ --libraries ./vendor/esp32-s3-lcd-43 \ --build-property "compiler.cpp.extra_flags=-DDEBUG_MODE -DBOARD_HAS_PSRAM" \ --warnings default \ ./boards/esp32-s3-lcd-43 """ [tasks.upload-s3-43] description = "Upload to ESP32-S3-LCD-4.3" run = """ arduino-cli upload \ --fqbn "esp32:esp32:waveshare_esp32_s3_touch_lcd_43:PSRAM=enabled,FlashSize=16M,USBMode=hwcdc,PartitionScheme=app3M_fat9M_16MB" \ --port "${PORT:-/dev/ttyACM0}" \ ./boards/esp32-s3-lcd-43 """ [tasks.monitor-s3-43] description = "Serial monitor for ESP32-S3-LCD-4.3" run = """ arduino-cli monitor --port "${PORT:-/dev/ttyACM0}" --config baudrate=115200 """ # ── Convenience ────────────────────────────────────────── [tasks.clean] description = "Remove build artifacts" run = """ rm -rf boards/esp32-32e/build rm -rf boards/esp32-s3-lcd-43/build echo "[OK] Build artifacts cleaned" """