From 7488ed03f0753f7608968e49cc9b904a64ece94f Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sun, 6 Aug 2023 13:44:28 +0200 Subject: [PATCH] Tasmota based on Arduino 3.0.0 (#19270) --- boards/esp32c6.json | 44 +++++++++++ pio-tools/add_c_flags.py | 3 + platformio_override_sample.ini | 1 + platformio_tasmota32.ini | 2 +- platformio_tasmota_env32.ini | 42 +++++++++++ .../include/tasmota_configurations_ESP32.h | 75 +++++++++++++++++++ 6 files changed, 166 insertions(+), 1 deletion(-) create mode 100644 boards/esp32c6.json diff --git a/boards/esp32c6.json b/boards/esp32c6.json new file mode 100644 index 000000000..919bcfdfe --- /dev/null +++ b/boards/esp32c6.json @@ -0,0 +1,44 @@ +{ + "build": { + "arduino":{ + "ldscript": "esp32c6_out.ld" + }, + "core": "esp32", + "extra_flags": "-DESP32_4M -DESP32C6", + "f_cpu": "160000000L", + "f_flash": "80000000L", + "flash_mode": "dio", + "mcu": "esp32c6", + "variant": "esp32c6", + "partitions": "partitions/esp32_partition_app2880k_fs320k.csv" + }, + "connectivity": [ + "wifi", + "bluetooth" + ], + "debug": { + "openocd_target": "esp32c6.cfg" + }, + "frameworks": [ + "arduino", + "espidf" + ], + "name": "Espressif Generic ESP32-C6 >= 4M Flash, Tasmota 2880k Code/OTA, 320k FS", + "upload": { + "arduino": { + "flash_extra_images": [ + [ + "0x10000", + "variants/tasmota/tasmota32c6-safeboot.bin" + ] + ] + }, + "flash_size": "4MB", + "maximum_ram_size": 327680, + "maximum_size": 4194304, + "require_upload_port": true, + "speed": 460800 + }, + "url": "https://docs.espressif.com/projects/espressif-esp-dev-kits/en/latest/esp32c6/esp32-c6-devkitc-1/index.html", + "vendor": "Espressif" + } diff --git a/pio-tools/add_c_flags.py b/pio-tools/add_c_flags.py index 0c39e777f..020a77f82 100644 --- a/pio-tools/add_c_flags.py +++ b/pio-tools/add_c_flags.py @@ -2,3 +2,6 @@ Import("env") # General options that are passed to the C compiler (C only; not C++). env.Append(CFLAGS=["-Wno-discarded-qualifiers", "-Wno-implicit-function-declaration"]) + +# General options that are passed to the C++ compiler +env.Append(CXXFLAGS=["-Wno-volatile"]) \ No newline at end of file diff --git a/platformio_override_sample.ini b/platformio_override_sample.ini index 7d9b1d9e8..97290c0cd 100644 --- a/platformio_override_sample.ini +++ b/platformio_override_sample.ini @@ -28,6 +28,7 @@ default_envs = ; tasmota-zbbridge ; tasmota-ir ; tasmota32 +; tasmota32-arduino30 ; tasmota32-zbbrdgpro ; tasmota32-bluetooth ; tasmota32-webcam diff --git a/platformio_tasmota32.ini b/platformio_tasmota32.ini index 30f42a99a..3aa0503dc 100644 --- a/platformio_tasmota32.ini +++ b/platformio_tasmota32.ini @@ -15,7 +15,7 @@ build_flags = ${esp_defaults.build_flags} -Wno-switch-unreachable -Wno-stringop-overflow -fno-exceptions - -flto + -flto=auto -DBUFFER_LENGTH=128 -DHTTP_UPLOAD_BUFLEN=2048 -DMQTT_MAX_PACKET_SIZE=1200 diff --git a/platformio_tasmota_env32.ini b/platformio_tasmota_env32.ini index 337255131..08779ebe5 100644 --- a/platformio_tasmota_env32.ini +++ b/platformio_tasmota_env32.ini @@ -40,6 +40,48 @@ lib_ignore = ; tasmota/berry/modules/Partition_Manager.tapp custom_files_upload = no_files +[env:tasmota32-arduino30] +platform = https://github.com/Jason2866/platform-espressif32.git#Arduino/IDF5 +platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/1457/framework-arduinoespressif32-release_v5.1-69cdc81680.zip +extends = env:tasmota32_base +board = esp32 +build_unflags = ${env:tasmota32_base.build_unflags} + -DUSE_IPV6 +build_flags = ${env:tasmota32_base.build_flags} + -DFIRMWARE_ARDUINO30 + -DOTA_URL='""' +lib_extra_dirs = lib/lib_ssl, lib/libesp32 +lib_ignore = + ESP Mail Client + IRremoteESP8266 + NeoPixelBus + OneWire + MFRC522 + universal display Library + ESP8266Audio + ESP8266SAM + +[env:tasmota32c6-safeboot] +platform = https://github.com/Jason2866/platform-espressif32.git#Arduino/IDF5 +platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/1457/framework-arduinoespressif32-release_v5.1-69cdc81680.zip +extends = env:tasmota32_base +board = esp32c6 +build_unflags = ${env:tasmota32_base.build_unflags} + -DUSE_IPV6 +build_flags = ${env:tasmota32_base.build_flags} + -DFIRMWARE_SAFEBOOT + -DOTA_URL='""' +lib_extra_dirs = lib/lib_ssl, lib/libesp32 +lib_ignore = + ESP Mail Client + IRremoteESP8266 + NeoPixelBus + OneWire + MFRC522 + universal display Library + ESP8266Audio + ESP8266SAM + [env:tasmota32-safeboot] extends = env:tasmota32_base build_flags = ${env:tasmota32_base.build_flags} diff --git a/tasmota/include/tasmota_configurations_ESP32.h b/tasmota/include/tasmota_configurations_ESP32.h index 9d438475d..21fc5c0ce 100644 --- a/tasmota/include/tasmota_configurations_ESP32.h +++ b/tasmota/include/tasmota_configurations_ESP32.h @@ -189,6 +189,81 @@ #endif // FIRMWARE_SAFEBOOT +/*********************************************************************************************\ + * FIRMWARE_ARDUINO30 + * Provide an image which compiles with WiP Arduino 3.0.x +\*********************************************************************************************/ + +#ifdef FIRMWARE_ARDUINO30 + +#ifndef CODE_IMAGE_STR + #define CODE_IMAGE_STR "arduino30" +#endif + + +#undef FIRMWARE_LITE // Disable tasmota-lite with no sensors +#undef FIRMWARE_SENSORS // Disable tasmota-sensors with useful sensors enabled +#undef FIRMWARE_KNX_NO_EMULATION // Disable tasmota-knx with KNX but without Emulation +#undef FIRMWARE_DISPLAYS // Disable tasmota-display with display drivers enabled +#undef FIRMWARE_IR // Disable tasmota-ir with IR full protocols activated +#undef FIRMWARE_WEBCAM +#undef FIRMWARE_BLUETOOTH +#undef FIRMWARE_LVGL +#undef FIRMWARE_TASMOTA32 + +#undef USE_EMULATION // Disable Wemo or Hue emulation +#undef USE_EMULATION_HUE // Disable Hue Bridge emulation for Alexa (+14k code, +2k mem common) +#undef USE_EMULATION_WEMO // Disable Belkin WeMo emulation for Alexa (+6k code, +2k mem common) + + +// -- Optional modules ---------------------------- +#undef ROTARY_V1 // Disable support for MI Desk Lamp +#undef USE_SONOFF_RF // Disable support for Sonoff Rf Bridge (+3k2 code) + #undef USE_RF_FLASH // Disable support for flashing the EFM8BB1 chip on the Sonoff RF Bridge. C2CK must be connected to GPIO4, C2D to GPIO5 on the PCB +#undef USE_SONOFF_SC // Disable support for Sonoff Sc (+1k1 code) +#undef USE_TUYA_MCU // Disable support for Tuya Serial MCU +#undef USE_ARMTRONIX_DIMMERS // Disable support for Armtronix Dimmers (+1k4 code) +#undef USE_PS_16_DZ // Disable support for PS-16-DZ Dimmer and Sonoff L1 (+2k code) +#undef USE_SONOFF_IFAN // Disable support for Sonoff iFan02 and iFan03 (+2k code) +#undef USE_BUZZER // Disable support for a buzzer (+0k6 code) +#undef USE_ARILUX_RF // Disable support for Arilux RF remote controller +#undef USE_SHUTTER // Disable Shutter support for up to 4 shutter with different motortypes (+6k code) +#undef USE_DEEPSLEEP // Disable support for deepsleep (+1k code) +#undef USE_EXS_DIMMER // Disable support for EX-Store WiFi Dimmer +#undef USE_HOTPLUG // Disable support for HotPlug +#undef USE_DEVICE_GROUPS // Disable support for device groups (+3k5 code) +#undef USE_PWM_DIMMER // Disable support for MJ-SD01/acenx/NTONPOWER PWM dimmers (+4k5 code) +#undef USE_PWM_DIMMER_REMOTE // Disbale support for remote switches to PWM Dimmer +#undef USE_KEELOQ // Disable support for Jarolift rollers by Keeloq algorithm (+4k5 code) +#undef USE_SONOFF_D1 // Disable support for Sonoff D1 Dimmer (+0k7 code) +#undef USE_SHELLY_DIMMER // Disable support for Shelly Dimmer (+3k code) + +#undef USE_LIGHT // Disable support for lights +#undef USE_WS2812 + +#undef USE_DS18x20 // Disable DS18x20 sensor + +#undef USE_I2C // Disable all I2C sensors and devices + +#undef USE_ENERGY_SENSOR // Disable energy sensors + +#undef USE_IR_REMOTE // Disable IR driver + +#undef USE_TX20_WIND_SENSOR // Disable support for La Crosse TX20 anemometer +#undef USE_TX23_WIND_SENSOR // Disable support for La Crosse TX23 anemometer + +#undef USE_AC_ZERO_CROSS_DIMMER // Disable support for AC_ZERO_CROSS_DIMMER + +#define USE_TLS +#define USE_WEBSERVER +#define USE_WEBCLIENT +#define USE_WEBCLIENT_HTTPS +#define USE_SERIAL_BRIDGE // Add support for software Serial Bridge console Tee (+2k code) +#define USE_ETHERNET + +#endif // FIRMWARE_ARDUINO30 + + /*********************************************************************************************\ * [tasmota32-webcam.bin] * Provide an image with useful supported sensors enabled