diff --git a/platformio.ini b/platformio.ini index 970a7331c..1d146e6a1 100644 --- a/platformio.ini +++ b/platformio.ini @@ -52,96 +52,95 @@ default_envs = ; ********************************************************************* [platformio] -description = Provide ESP8266 / ESP32 based devices with Web, MQTT and OTA firmware -src_dir = tasmota -lib_dir = lib/default -build_cache_dir = .cache -extra_configs = platformio_tasmota32.ini - platformio_tasmota_env.ini - platformio_tasmota_env32.ini - platformio_override.ini -default_envs = ${build_envs.default_envs} +description = Provide ESP8266 / ESP32 based devices with Web, MQTT and OTA firmware +src_dir = tasmota +lib_dir = lib/default +build_cache_dir = .cache +extra_configs = platformio_tasmota32.ini + platformio_tasmota_env.ini + platformio_tasmota_env32.ini + platformio_override.ini +default_envs = ${build_envs.default_envs} [common] -framework = arduino -board = esp01_1m -board_build.flash_mode = dout -board_build.ldscript = eagle.flash.1m.ld +framework = arduino +board = esp01_1m +board_build.flash_mode = dout +board_build.ldscript = eagle.flash.1m.ld -platform = ${core.platform} -platform_packages = ${core.platform_packages} -build_unflags = ${core.build_unflags} -build_flags = ${core.build_flags} +platform = ${core.platform} +platform_packages = ${core.platform_packages} +build_unflags = ${core.build_unflags} +build_flags = ${core.build_flags} -board_build.f_cpu = 80000000L -board_build.f_flash = 40000000L -monitor_speed = 115200 -upload_speed = 115200 +board_build.f_cpu = 80000000L +board_build.f_flash = 40000000L +monitor_speed = 115200 +upload_speed = 115200 ; *** Upload Serial reset method for Wemos and NodeMCU -upload_resetmethod = nodemcu -upload_port = COM5 -extra_scripts = ${scripts_defaults.extra_scripts} -lib_ldf_mode = chain+ -shared_libdeps_dir = lib -lib_extra_dirs = - lib/lib_basic - lib/lib_i2c - lib/lib_display - lib/lib_ssl - lib/lib_audio - lib/lib_rf - lib/lib_div +upload_resetmethod = nodemcu +upload_port = COM5 +extra_scripts = ${scripts_defaults.extra_scripts} +lib_ldf_mode = chain+ +shared_libdeps_dir = lib +lib_extra_dirs = + lib/lib_basic + lib/lib_i2c + lib/lib_display + lib/lib_ssl + lib/lib_audio + lib/lib_rf + lib/lib_div [scripts_defaults] -extra_scripts = pio/strip-floats.py - pio/name-firmware.py - pio/gzip-firmware.py - pio/override_copy.py +extra_scripts = pio/strip-floats.py + pio/name-firmware.py + pio/gzip-firmware.py + pio/override_copy.py [esp_defaults] ; *** remove undesired all warnings -build_unflags = -Wall - -Wdeprecated-declarations -build_flags = -Wno-deprecated-declarations - -D_IR_ENABLE_DEFAULT_=false - -DDECODE_HASH=true -DDECODE_NEC=true -DSEND_NEC=true - -DDECODE_RC5=true -DSEND_RC5=true -DDECODE_RC6=true -DSEND_RC6=true +build_unflags = -Wall + -Wdeprecated-declarations +build_flags = -Wno-deprecated-declarations + -D_IR_ENABLE_DEFAULT_=false + -DDECODE_HASH=true -DDECODE_NEC=true -DSEND_NEC=true + -DDECODE_RC5=true -DSEND_RC5=true -DDECODE_RC6=true -DSEND_RC6=true ; new mechanism to set the IRremoteESP8266 supported protocols: none except HASH, NEC, RC5, RC6 ; ********************************************************************* ; *** Use custom settings from file user_config_override.h - -DUSE_CONFIG_OVERRIDE + -DUSE_CONFIG_OVERRIDE ; ********************************************************************* [esp82xx_defaults] -build_flags = ${esp_defaults.build_flags} - -Wl,-Map,firmware.map - -D CORE_DEBUG_LEVEL=0 - -D NDEBUG - -mtarget-align - -DFP_IN_IROM - -DBEARSSL_SSL_BASIC - ; NONOSDK22x_190703 = 2.2.2-dev(38a443e) - -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x_190703 - ; lwIP 2 - Higher Bandwidth no Features - -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH_LOW_FLASH - ; VTABLES in Flash - -DVTABLES_IN_FLASH - ; remove the 4-bytes alignment for PSTR() - -DPSTR_ALIGN=1 - ; restrict to minimal mime-types - -DMIMETYPE_MINIMAL - +build_flags = ${esp_defaults.build_flags} + -Wl,-Map,firmware.map + -D CORE_DEBUG_LEVEL=0 + -D NDEBUG + -mtarget-align + -DFP_IN_IROM + -DBEARSSL_SSL_BASIC + ; NONOSDK22x_190703 = 2.2.2-dev(38a443e) + -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x_190703 + -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH_LOW_FLASH + ; VTABLES in Flash + -DVTABLES_IN_FLASH + ; remove the 4-bytes alignment for PSTR() + -DPSTR_ALIGN=1 + ; restrict to minimal mime-types + -DMIMETYPE_MINIMAL + [irremoteesp_full] -build_flags = -DUSE_IR_REMOTE_FULL - -U_IR_ENABLE_DEFAULT_ - -DDECODE_PRONTO=false -DSEND_PRONTO=false +build_flags = -DUSE_IR_REMOTE_FULL + -U_IR_ENABLE_DEFAULT_ + -DDECODE_PRONTO=false -DSEND_PRONTO=false [core] ; *** Esp8266 Tasmota modified Arduino core based on core 2.7.4 -platform = espressif8266@2.6.2 -platform_packages = framework-arduinoespressif8266@https://github.com/tasmota/Arduino/releases/download/2.7.4.5/esp8266-2.7.4.5.zip - platformio/tool-esptool @ 1.413.0 -build_unflags = ${esp_defaults.build_unflags} -build_flags = ${esp82xx_defaults.build_flags} +platform = espressif8266@2.6.2 +platform_packages = framework-arduinoespressif8266@https://github.com/tasmota/Arduino/releases/download/2.7.4.5/esp8266-2.7.4.5.zip + platformio/tool-esptool @ 1.413.0 +build_unflags = ${esp_defaults.build_unflags} +build_flags = ${esp82xx_defaults.build_flags} diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini index 0a4dc4492..d4dceabb5 100644 --- a/platformio_override_sample.ini +++ b/platformio_override_sample.ini @@ -38,60 +38,59 @@ default_envs = [common] -platform_packages = ${core.platform_packages} -build_unflags = ${core.build_unflags} -build_flags = ${core.build_flags} +platform_packages = ${core.platform_packages} +build_unflags = ${core.build_unflags} +build_flags = ${core.build_flags} ; *** Optional Debug messages ; -DDEBUG_TASMOTA_CORE ; -DDEBUG_TASMOTA_DRIVER ; -DDEBUG_TASMOTA_SENSOR ; set CPU frequency to 80MHz (default) or 160MHz -;board_build.f_cpu = 160000000L +;board_build.f_cpu = 160000000L ; set Flash chip frequency to 40MHz (default), 20MHz, 26Mhz, 80Mhz -;board_build.f_flash = 20000000L -;board_build.f_flash = 26000000L -;board_build.f_flash = 80000000L +;board_build.f_flash = 20000000L +;board_build.f_flash = 26000000L +;board_build.f_flash = 80000000L ; *** Upload Serial reset method for Wemos and NodeMCU -upload_port = COM5 +upload_port = COM5 -extra_scripts = ${scripts_defaults.extra_scripts} -; pio/obj-dump.py +extra_scripts = ${scripts_defaults.extra_scripts} +; pio/obj-dump.py ; *** Upload file to OTA server using SCP -;upload_port = user@host:/path -;extra_scripts = ${scripts_defaults.extra_scripts} -; pio/strip-floats.py -; pio/sftp-uploader.py +;upload_port = user@host:/path +;extra_scripts = ${scripts_defaults.extra_scripts} +; pio/strip-floats.py +; pio/sftp-uploader.py ; *** Upload file to OTA server in folder api/arduino using HTTP -;upload_port = domus1:80/api/upload-arduino.php -;extra_scripts = ${scripts_defaults.extra_scripts} -; pio/strip-floats.py -; pio/http-uploader.py +;upload_port = domus1:80/api/upload-arduino.php +;extra_scripts = ${scripts_defaults.extra_scripts} +; pio/strip-floats.py +; pio/http-uploader.py -lib_ldf_mode = ${library.lib_ldf_mode} -shared_libdeps_dir = ${library.shared_libdeps_dir} +lib_extra_dirs = ${library.lib_extra_dirs} [core] ; Activate only (one set) if you want to override the standard core defined in platformio.ini !!! -;platform_packages = ${tasmota_stage.platform_packages} -;build_unflags = ${tasmota_stage.build_unflags} -;build_flags = ${tasmota_stage.build_flags} +;platform_packages = ${tasmota_stage.platform_packages} +;build_unflags = ${tasmota_stage.build_unflags} +;build_flags = ${tasmota_stage.build_flags} -;platform_packages = ${core_stage.platform_packages} -;build_unflags = ${core_stage.build_unflags} -;build_flags = ${core_stage.build_flags} +;platform_packages = ${core_stage.platform_packages} +;build_unflags = ${core_stage.build_unflags} +;build_flags = ${core_stage.build_flags} [tasmota_stage] ; *** Esp8266 core for Arduino version Tasmota stage (PR7231 and Backport PR7514) -platform_packages = framework-arduinoespressif8266@https://github.com/Jason2866/Arduino.git#2.7.4.4 -build_unflags = ${esp_defaults.build_unflags} -build_flags = ${esp82xx_defaults.build_flags} +platform_packages = framework-arduinoespressif8266@https://github.com/Jason2866/Arduino.git#2.7.4.4 +build_unflags = ${esp_defaults.build_unflags} +build_flags = ${esp82xx_defaults.build_flags} ; *********** Alternative Options, enable only if you know exactly what you do ******** ; NONOSDK221 @@ -119,17 +118,17 @@ build_flags = ${esp82xx_defaults.build_flags} ; VTABLES in IRAM ; -DVTABLES_IN_IRAM ; Exception code in firmware /needs much space! -; -fexceptions -; -lstdc++-exc +; -fexceptions +; -lstdc++-exc [core_stage] ; *** Esp8266 core version. Tasmota stage or Arduino stage version. Built with GCC 10.1 toolchain -platform_packages = framework-arduinoespressif8266 @ https://github.com/Jason2866/platform-espressif8266/releases/download/2.9.1/framework-arduinoespressif8266-3.20901.0.tar.gz +platform_packages = framework-arduinoespressif8266 @ https://github.com/Jason2866/platform-espressif8266/releases/download/2.9.1/framework-arduinoespressif8266-3.20901.0.tar.gz ;framework-arduinoespressif8266 @ https://github.com/esp8266/Arduino.git toolchain-xtensa @ ~2.100100.0 -build_unflags = ${esp_defaults.build_unflags} +build_unflags = ${esp_defaults.build_unflags} -Wswitch-unreachable -build_flags = ${esp82xx_defaults.build_flags} +build_flags = ${esp82xx_defaults.build_flags} -Wno-switch-unreachable ; *********** Alternative Options, enable only if you know exactly what you do ******** @@ -160,77 +159,76 @@ build_flags = ${esp82xx_defaults.build_flags} ; -lstdc++-exc [common32] -platform = ${core32.platform} -platform_packages = ${core32.platform_packages} -build_unflags = ${core32.build_unflags} -build_flags = ${core32.build_flags} -board = esp32dev -board_build.ldscript = esp32_out.ld -board_build.partitions = esp32_partition_app1984k_spiffs64k.csv -board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_flash = ${common.board_build.f_flash} -board_build.f_cpu = ${common.board_build.f_cpu} -monitor_speed = ${common.monitor_speed} -upload_port = ${common.upload_port} -upload_resetmethod = ${common.upload_resetmethod} -upload_speed = 921600 -extra_scripts = ${common.extra_scripts} -lib_ldf_mode = ${library.lib_ldf_mode} -shared_libdeps_dir = ${library.shared_libdeps_dir} - ; *** ESP32 lib. ALWAYS needed for ESP32 !!! - lib/libesp32 +platform = ${core32.platform} +platform_packages = ${core32.platform_packages} +build_unflags = ${core32.build_unflags} +build_flags = ${core32.build_flags} +board = esp32dev +board_build.ldscript = esp32_out.ld +board_build.partitions = esp32_partition_app1984k_spiffs64k.csv +board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_flash = ${common.board_build.f_flash} +board_build.f_cpu = ${common.board_build.f_cpu} +monitor_speed = ${common.monitor_speed} +upload_port = ${common.upload_port} +upload_resetmethod = ${common.upload_resetmethod} +upload_speed = 921600 +extra_scripts = ${common.extra_scripts} +lib_extra_dirs = ${library.lib_extra_dirs} +; *** ESP32 lib. ALWAYS needed for ESP32 !!! + lib/libesp32 [core32] ; Activate Stage Core32 by removing ";" in next 4 lines, if you want to override the standard core32 -;platform = ${core32_stage.platform} -;platform_packages = ${core32_stage.platform_packages} -;build_unflags = ${core32_stage.build_unflags} -;build_flags = ${core32_stage.build_flags} +;platform = ${core32_stage.platform} +;platform_packages = ${core32_stage.platform_packages} +;build_unflags = ${core32_stage.build_unflags} +;build_flags = ${core32_stage.build_flags} [core32_stage] -platform = espressif32@2.0.0 -platform_packages = tool-esptoolpy@1.20800.0 - framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#f7fb00632e04d74a7890a77fa7dbbb8ae572e866 -build_unflags = ${esp32_defaults.build_unflags} -build_flags = ${esp32_defaults.build_flags} - -D ESP32_STAGE=true +platform = espressif32@2.0.0 +platform_packages = tool-esptoolpy@1.20800.0 + framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#f7fb00632e04d74a7890a77fa7dbbb8ae572e866 +build_unflags = ${esp32_defaults.build_unflags} +build_flags = ${esp32_defaults.build_flags} + -D ESP32_STAGE=true [library] -lib_ldf_mode = chain+ -shared_libdeps_dir = lib +lib_ldf_mode = chain+ +shared_libdeps_dir = lib ; *** Library disable / enable for variant Tasmota(32). Disable reduces compile time ; *** !!! Disabling needed libs will generate compile errors !!! ; *** The resulting firmware will NOT be different if you leave all libs enabled ; *** Disabling by putting a ";" in front of the lib name ; *** If you dont know what it is all about, do not change -lib_extra_dirs = +lib_extra_dirs = ; *** Only disabled for Tasmota minimal and Tasmota light. For all other variants needed! - lib/lib_basic + lib/lib_basic ; **** I2C devices. Most sensors. Disable only if you dont have ANY I2C device enabled - lib/lib_i2c + lib/lib_i2c ; *** Displays. Disable if you dont have any Display activated - lib/lib_display + lib/lib_display ; *** Bear SSL and base64. Disable if you dont have SSL or TLS activated - lib/lib_ssl + lib/lib_ssl ; *** Audio needs a lot of time to compile. Mostly not used functions. Recommended to disable - lib/lib_audio + lib/lib_audio ; *** RF 433 stuff (not RF Bridge). Recommended to disable - lib/lib_rf + lib/lib_rf ; *** Mostly not used functions. Recommended to disable - lib/lib_div + lib/lib_div ; *** Debug version used for PlatformIO Home Project Inspection [env:tasmota-debug] -build_type = debug -build_unflags = ${esp_defaults.build_unflags} -build_flags = ${esp82xx_defaults.build_flags} -; -Wstack-usage=300 +build_type = debug +build_unflags = ${esp_defaults.build_unflags} +build_flags = ${esp82xx_defaults.build_flags} +; -Wstack-usage=300 [env:tasmota32-debug] -extends = env:tasmota32 -build_type = debug -build_unflags = ${esp32_defaults.build_unflags} -build_flags = ${esp32_defaults.build_flags} -; -Wstack-usage=300 +extends = env:tasmota32 +build_type = debug +build_unflags = ${esp32_defaults.build_unflags} +build_flags = ${esp32_defaults.build_flags} +; -Wstack-usage=300 diff --git a/platformio_tasmota32.ini b/platformio_tasmota32.ini index 548a570aa..ce963a8a1 100644 --- a/platformio_tasmota32.ini +++ b/platformio_tasmota32.ini @@ -4,7 +4,7 @@ [platformio] ; *** Tasmota build variant selection -default_envs = ${build_envs.default_envs} +default_envs = ${build_envs.default_envs} ; *** Uncomment by deleting ";" in the line(s) below to select version(s) ; tasmota32 ; tasmota32-webcam @@ -40,53 +40,53 @@ default_envs = ${build_envs.default_envs} ; tasmota32-VN [common32] -platform = ${core32.platform} -platform_packages = ${core32.platform_packages} -build_unflags = ${core32.build_unflags} -build_flags = ${core32.build_flags} -board = esp32dev -board_build.ldscript = esp32_out.ld -board_build.partitions = esp32_partition_app1984k_spiffs64k.csv -board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_flash = ${common.board_build.f_flash} -board_build.f_cpu = ${common.board_build.f_cpu} -monitor_speed = ${common.monitor_speed} -upload_port = ${common.upload_port} -upload_resetmethod = ${common.upload_resetmethod} -upload_speed = 921600 -extra_scripts = ${common.extra_scripts} -lib_ldf_mode = chain+ -shared_libdeps_dir = lib -lib_extra_dirs = - lib/libesp32 - lib/lib_basic - lib/lib_i2c - lib/lib_display - lib/lib_ssl - lib/lib_audio - lib/lib_rf - lib/lib_div +platform = ${core32.platform} +platform_packages = ${core32.platform_packages} +build_unflags = ${core32.build_unflags} +build_flags = ${core32.build_flags} +board = esp32dev +board_build.ldscript = esp32_out.ld +board_build.partitions = esp32_partition_app1984k_spiffs64k.csv +board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_flash = ${common.board_build.f_flash} +board_build.f_cpu = ${common.board_build.f_cpu} +monitor_speed = ${common.monitor_speed} +upload_port = ${common.upload_port} +upload_resetmethod = ${common.upload_resetmethod} +upload_speed = 921600 +extra_scripts = ${common.extra_scripts} +lib_ldf_mode = chain+ +shared_libdeps_dir = lib +lib_extra_dirs = + lib/libesp32 + lib/lib_basic + lib/lib_i2c + lib/lib_display + lib/lib_ssl + lib/lib_audio + lib/lib_rf + lib/lib_div [esp32_defaults] -build_unflags = ${esp_defaults.build_unflags} - -Wpointer-arith -build_flags = ${esp_defaults.build_flags} - -D CORE_DEBUG_LEVEL=0 - -D BUFFER_LENGTH=128 - -D MQTT_MAX_PACKET_SIZE=1200 - -D uint32=uint32_t - -D uint16=uint16_t - -D uint8=uint8_t - -D sint8_t=int8_t - -D sint32_t=int32_t - -D sint16_t=int16_t - -D memcpy_P=memcpy - -D memcmp_P=memcmp +build_unflags = ${esp_defaults.build_unflags} + -Wpointer-arith +build_flags = ${esp_defaults.build_flags} + -D CORE_DEBUG_LEVEL=0 + -D BUFFER_LENGTH=128 + -D MQTT_MAX_PACKET_SIZE=1200 + -D uint32=uint32_t + -D uint16=uint16_t + -D uint8=uint8_t + -D sint8_t=int8_t + -D sint32_t=int32_t + -D sint16_t=int16_t + -D memcpy_P=memcpy + -D memcmp_P=memcmp [core32] -platform = espressif32@2.0.0 -platform_packages = tool-esptoolpy@1.20800.0 - platformio/framework-arduinoespressif32 @ 3.10004.201016 -build_unflags = ${esp32_defaults.build_unflags} -build_flags = ${esp32_defaults.build_flags} +platform = espressif32@2.0.0 +platform_packages = tool-esptoolpy@1.20800.0 + platformio/framework-arduinoespressif32 @ 3.10004.201016 +build_unflags = ${esp32_defaults.build_unflags} +build_flags = ${esp32_defaults.build_flags}