MQTT-Display-LaserCutter/platformio.ini
MaPaLo76 c4d03bf1b7 fix(stability): Heap-Leak durch String/JsonDocument-Objekte behoben
- web_server.cpp: static String _logBuf -> char[6001] im BSS-Segment
  Jeder LOG_I/E/D-Aufruf loeste String-Reallokation aus (~280 Bytes/min Drift)
  Fix: memmove-basierter Ring-Puffer, kein malloc/free mehr
- mqtt_client.cpp: JsonDocument in publishHeartbeat() und _doPublishSession()
  durch snprintf-JSON ersetzt (kein ArduinoJson-Heap-Pool alle 60 s)
- config.h: LOG-Puffer von 200 auf 320 Bytes erhoeht (Truncation fix)
- platformio.ini: CORE_DEBUG_LEVEL wieder auf 1 (war 3 fuer Heap-Diagnose)
2026-03-01 12:11:00 +01:00

272 lines
11 KiB
INI
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
; =============================================================================
; GEMEINSAME BASIS - wird von allen Environments geerbt
; =============================================================================
[env]
platform = espressif32
board = az-delivery-devkit-v4
framework = arduino
monitor_speed = 115200
monitor_echo = yes
monitor_filters = esp32_exception_decoder, default
board_build.partitions = min_spiffs.csv
build_flags =
-DCORE_DEBUG_LEVEL=1 ; 0=keine, 1=Fehler, 3=Info, 5=Verbose
-DARDUINO_LOOP_STACK_SIZE=8192
-DELEGANTOTA_USE_ASYNC_WEBSERVER=1
-DFIRMWARE_VERSION='"1.2.1"' ; Semantic Versioning hier erhöhen bei neuem Release
lib_deps =
majicDesigns/MD_Parola @ ^3.7.3
majicDesigns/MD_MAX72XX @ ^3.5.1
knolleary/PubSubClient @ ^2.8
tzapu/WiFiManager @ ^2.0.17
https://github.com/me-no-dev/AsyncTCP.git
https://github.com/me-no-dev/ESPAsyncWebServer.git
bblanchon/ArduinoJson @ ^7.3.0
https://github.com/ayushsharma82/ElegantOTA.git
; =============================================================================
; HAUPT-ENVIRONMENT - USB Flash & Monitor
; pio run -e az-delivery-devkit-v4 --target upload
; =============================================================================
[env:az-delivery-devkit-v4]
upload_port = COM3
monitor_dtr = 0
monitor_rts = 0
; =============================================================================
; OTA ENVIRONMENT Firmware via WiFi flashen (ArduinoOTA / espota)
; Erscheint in Arduino IDE als Netzwerk-Port: lasercutter-display.local
; PlatformIO: pio run -e az-delivery-devkit-v4-ota --target upload
; IP anpassen: upload_port = <IP des ESP32> (oder lasercutter-display.local)
;
; Falls ein Web-Passwort gesetzt ist, muss es hier eingetragen werden:
; upload_flags = --auth=DEIN_WEBPASSWORT
; Oder als Umgebungsvariable (empfohlen, damit das Passwort nicht im Repo landet):
; Vor dem Upload: set LASERCUTTER_OTA_PW=DEIN_PASSWORT (Windows)
; upload_flags = --auth=${sysenv.LASERCUTTER_OTA_PW}
; =============================================================================
[env:az-delivery-devkit-v4-ota]
;upload_port = 172.30.30.90
upload_port = 192.168.2.62
upload_protocol = espota
; upload_flags = --auth=DEIN_WEBPASSWORT ; <-- auskommentieren und anpassen wenn Passwort gesetzt
; =============================================================================
; OTA ENVIRONMENT (HTTP) Firmware via ElegantOTA Webinterface
; Nur als Fallback falls ArduinoOTA nicht erreichbar
; pio run -e az-delivery-devkit-v4-ota-http --target upload
; =============================================================================
[env:az-delivery-devkit-v4-ota-http]
;upload_port = 172.30.30.90
upload_port = 192.168.2.62
upload_protocol = custom
extra_scripts = upload_ota.py
; =============================================================================
; TEST ENVIRONMENT 1.4 Dot-Matrix-Display Verdrahtungstest
; Flash: pio run -e test-display --target upload
; =============================================================================
[env:test-display]
platform = espressif32
board = az-delivery-devkit-v4
framework = arduino
upload_port = COM3
monitor_speed = 115200
monitor_echo = yes
build_src_filter = -<*> +<../test_sketches/test_display.cpp>
; SPI auf 1 MHz reduzieren: robuster bei 8 verketteten Modulen / langen Leitungen
build_flags =
-DMAX_SPI_CLOCK_SPEED=1000000L
-Wno-cpp ; unterdrückt "INFO: ARDUINO SPI interface selected"-Warning aus MD_MAX72XX
lib_deps =
majicDesigns/MD_Parola @ ^3.7.3
majicDesigns/MD_MAX72XX @ ^3.5.1
; =============================================================================
; TEST ENVIRONMENT Telnet-Server Verifikation (ohne externe Libraries)
; Testet ob WiFiServer/WiFiClient auf dem ESP32 korrekt schreibt.
; Credentials: TEST_WIFI_SSID + TEST_WIFI_PASSWORD in mqtt_test_secrets.h
; Flash: pio run -e test-telnet --target upload
; Monitor: pio device monitor (USB Serial, 115200)
; Telnet: telnet <IP> 23 (oder PuTTY Telnet Port 23)
; =============================================================================
[env:test-telnet]
platform = espressif32
board = az-delivery-devkit-v4
framework = arduino
upload_port = 172.30.30.90
upload_protocol = espota
monitor_speed = 115200
board_build.partitions = min_spiffs.csv
build_src_filter = -<*> +<../test_sketches/test_telnet.cpp>
; =============================================================================
; TEST ENVIRONMENT 1.5 Push Button / Potentialfreier Schalter Verdrahtungstest
; Flash: pio run -e test-button --target upload
; =============================================================================
[env:test-button]
platform = espressif32
board = az-delivery-devkit-v4
framework = arduino
upload_port = COM3
monitor_speed = 115200
monitor_echo = yes
build_src_filter = -<*> +<../test_sketches/test_button.cpp>
; =============================================================================
; TEST ENVIRONMENT 2.2 NVS Persistenz-Verifizierung
; Flash: pio run -e test-nvs --target upload
; Monitor: pio device monitor -e test-nvs
; =============================================================================
[env:test-nvs]
platform = espressif32
board = az-delivery-devkit-v4
framework = arduino
upload_port = COM3
monitor_speed = 115200
monitor_echo = yes
build_src_filter = -<*> +<../test_sketches/test_nvs.cpp> +<../src/settings.cpp>
; MD_MAX72XX wird nur wegen config.h -> DISPLAY_HW_TYPE benötigt
lib_deps =
majicDesigns/MD_MAX72XX @ ^3.5.1
; =============================================================================
; TEST ENVIRONMENT 3.3 WiFiManager Verbindungstest
; Flash: pio run -e test-wifi --target upload
; Monitor: pio device monitor -e test-wifi
; Credentials löschen: BOOT-Taste (GPIO 0) beim Start 3 s gedrückt halten
; =============================================================================
[env:test-wifi]
platform = espressif32
board = az-delivery-devkit-v4
framework = arduino
upload_port = COM3
monitor_speed = 115200
monitor_echo = yes
board_build.partitions = min_spiffs.csv
build_src_filter = -<*> +<../test_sketches/test_wifi.cpp> +<../src/wifi_connector.cpp>
lib_deps =
tzapu/WiFiManager @ ^2.0.17
majicDesigns/MD_MAX72XX @ ^3.5.1
; =============================================================================
; TEST ENVIRONMENT 5.6 LaserTracker Verifikation
; Flash: pio run -e test-laser-tracker --target upload
; Monitor: pio device monitor -e test-laser-tracker
; Button (GPIO 4) druecken = Laser aktiv simulieren
; BOOT-Taste (GPIO 0) 3s halten = Gesamtzeit loeschen
; =============================================================================
[env:test-laser-tracker]
platform = espressif32
board = az-delivery-devkit-v4
framework = arduino
upload_port = COM3
monitor_speed = 115200
monitor_echo = yes
build_src_filter = -<*> +<../test_sketches/test_laser_tracker.cpp> +<../src/display_manager.cpp> +<../src/settings.cpp> +<../src/laser_tracker.cpp>
build_flags =
-Wno-cpp
lib_deps =
majicDesigns/MD_MAX72XX @ ^3.5.1
; =============================================================================
; TEST ENVIRONMENT 4.3 DisplayManager Verifikation
; Flash: pio run -e test-display-mgr --target upload
; Monitor: pio device monitor -e test-display-mgr
; =============================================================================
[env:test-display-mgr]
platform = espressif32
board = az-delivery-devkit-v4
framework = arduino
upload_port = COM3
monitor_speed = 115200
monitor_echo = yes
build_src_filter = -<*> +<../test_sketches/test_display_manager.cpp> +<../src/display_manager.cpp>
build_flags =
-Wno-cpp
lib_deps =
majicDesigns/MD_MAX72XX @ ^3.5.1
; =============================================================================
; TEST ENVIRONMENT 6.5 MqttClient Verifikation
; Flash: pio run -e test-mqtt --target upload
; Monitor: pio device monitor -e test-mqtt
;
; Verifikation:
; - MQTT Explorer -> broker.hivemq.com:1883
; - Subscribe: lasercutter/#
; - lasercutter/status erscheint beim Connect (retained) und alle 60s
; - lasercutter/session erscheint nach Laser-AUS (GPIO 4 loslassen)
; - Publish lasercutter/reset Payload "1" -> Gesamtzeit wird geloescht
; - BOOT-Taste 3s halten -> lokaler Reset
; =============================================================================
[env:test-mqtt]
platform = espressif32
board = az-delivery-devkit-v4
framework = arduino
upload_port = COM3
monitor_speed = 115200
monitor_echo = yes
board_build.partitions = min_spiffs.csv
build_src_filter = -<*> +<../test_sketches/test_mqtt_client.cpp> +<../src/settings.cpp> +<../src/display_manager.cpp> +<../src/laser_tracker.cpp> +<../src/wifi_connector.cpp> +<../src/mqtt_client.cpp>
build_flags =
-Wno-cpp
lib_deps =
majicDesigns/MD_MAX72XX @ ^3.5.1
knolleary/PubSubClient @ ^2.8
tzapu/WiFiManager @ ^2.0.17
bblanchon/ArduinoJson @ ^7.3.0
; =============================================================================
; TEST ENVIRONMENT 7.7 WebServer Verifikation
; Flash: pio run -e test-web --target upload
; Monitor: pio device monitor -e test-web
;
; Verifikation:
; - IP-Adresse aus Serial Monitor ablesen
; - Browser: http://<IP>/ -> Statusseite
; - Browser: http://<IP>/config -> Konfigurationsformular
; - Browser: http://<IP>/update -> ElegantOTA
; - Gesamtzeit-Reset-Button testen
; - Konfiguration aendern + nach Neustart pruefen
; =============================================================================
[env:test-web]
platform = espressif32
board = az-delivery-devkit-v4
framework = arduino
upload_port = COM3
monitor_speed = 115200
monitor_echo = yes
board_build.partitions = min_spiffs.csv
build_src_filter =
-<*>
+<../test_sketches/test_web_server.cpp>
+<../src/settings.cpp>
+<../src/display_manager.cpp>
+<../src/laser_tracker.cpp>
+<../src/wifi_connector.cpp>
+<../src/mqtt_client.cpp>
+<../src/web_server.cpp>
build_flags =
-Wno-cpp
-DASYNC_TCP_SSL_ENABLED=0
-DELEGANTOTA_USE_ASYNC_WEBSERVER=1
lib_deps =
majicDesigns/MD_MAX72XX @ ^3.5.1
knolleary/PubSubClient @ ^2.8
tzapu/WiFiManager @ ^2.0.17
bblanchon/ArduinoJson @ ^7.3.0
https://github.com/me-no-dev/AsyncTCP.git
https://github.com/me-no-dev/ESPAsyncWebServer.git
https://github.com/ayushsharma82/ElegantOTA.git