mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 07:03:55 +00:00 
			
		
		
		
	[esp32] Add framework migration warning for upcoming ESP-IDF default change (#10030)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
		| @@ -680,6 +680,64 @@ ESP_IDF_FRAMEWORK_SCHEMA = cv.All( | ||||
| ) | ||||
|  | ||||
|  | ||||
| class _FrameworkMigrationWarning: | ||||
|     shown = False | ||||
|  | ||||
|  | ||||
| def _show_framework_migration_message(name: str, variant: str) -> None: | ||||
|     """Show a friendly message about framework migration when defaulting to Arduino.""" | ||||
|     if _FrameworkMigrationWarning.shown: | ||||
|         return | ||||
|     _FrameworkMigrationWarning.shown = True | ||||
|  | ||||
|     from esphome.log import AnsiFore, color | ||||
|  | ||||
|     message = ( | ||||
|         color( | ||||
|             AnsiFore.BOLD_CYAN, | ||||
|             f"💡 IMPORTANT: {name} doesn't have a framework specified!", | ||||
|         ) | ||||
|         + "\n\n" | ||||
|         + f"Currently, {variant} defaults to the Arduino framework.\n" | ||||
|         + color(AnsiFore.YELLOW, "This will change to ESP-IDF in ESPHome 2026.1.0.\n") | ||||
|         + "\n" | ||||
|         + "Note: Newer ESP32 variants (C6, H2, P4, etc.) already use ESP-IDF by default.\n" | ||||
|         + "\n" | ||||
|         + "Why change? ESP-IDF offers:\n" | ||||
|         + color(AnsiFore.GREEN, "  ✨ Up to 40% smaller binaries\n") | ||||
|         + color(AnsiFore.GREEN, "  🚀 Better performance and optimization\n") | ||||
|         + color(AnsiFore.GREEN, "  📦 Custom-built firmware for your exact needs\n") | ||||
|         + color( | ||||
|             AnsiFore.GREEN, | ||||
|             "  🔧 Active development and testing by ESPHome developers\n", | ||||
|         ) | ||||
|         + "\n" | ||||
|         + "Trade-offs:\n" | ||||
|         + color(AnsiFore.YELLOW, "  ⏱️  Compile times are ~25% longer\n") | ||||
|         + color(AnsiFore.YELLOW, "  🔄 Some components need migration\n") | ||||
|         + "\n" | ||||
|         + "What should I do?\n" | ||||
|         + color(AnsiFore.CYAN, "  Option 1") | ||||
|         + ": Migrate to ESP-IDF (recommended)\n" | ||||
|         + "    Add this to your YAML under 'esp32:':\n" | ||||
|         + color(AnsiFore.WHITE, "      framework:\n") | ||||
|         + color(AnsiFore.WHITE, "        type: esp-idf\n") | ||||
|         + "\n" | ||||
|         + color(AnsiFore.CYAN, "  Option 2") | ||||
|         + ": Keep using Arduino (still supported)\n" | ||||
|         + "    Add this to your YAML under 'esp32:':\n" | ||||
|         + color(AnsiFore.WHITE, "      framework:\n") | ||||
|         + color(AnsiFore.WHITE, "        type: arduino\n") | ||||
|         + "\n" | ||||
|         + "Need help? Check out the migration guide:\n" | ||||
|         + color( | ||||
|             AnsiFore.BLUE, | ||||
|             "https://esphome.io/guides/esp32_arduino_to_idf.html", | ||||
|         ) | ||||
|     ) | ||||
|     _LOGGER.warning(message) | ||||
|  | ||||
|  | ||||
| def _set_default_framework(config): | ||||
|     if CONF_FRAMEWORK not in config: | ||||
|         config = config.copy() | ||||
| @@ -688,6 +746,10 @@ def _set_default_framework(config): | ||||
|         if variant in ARDUINO_ALLOWED_VARIANTS: | ||||
|             config[CONF_FRAMEWORK] = ARDUINO_FRAMEWORK_SCHEMA({}) | ||||
|             config[CONF_FRAMEWORK][CONF_TYPE] = FRAMEWORK_ARDUINO | ||||
|             # Show the migration message | ||||
|             _show_framework_migration_message( | ||||
|                 config.get(CONF_NAME, "This device"), variant | ||||
|             ) | ||||
|         else: | ||||
|             config[CONF_FRAMEWORK] = ESP_IDF_FRAMEWORK_SCHEMA({}) | ||||
|             config[CONF_FRAMEWORK][CONF_TYPE] = FRAMEWORK_ESP_IDF | ||||
|   | ||||
| @@ -345,5 +345,11 @@ def get_esp32_arduino_flash_error_help() -> str | None: | ||||
|         + "2. Clean build files and compile again\n" | ||||
|         + "\n" | ||||
|         + "Note: ESP-IDF uses less flash space and provides better performance.\n" | ||||
|         + "Some Arduino-specific libraries may need alternatives.\n\n" | ||||
|         + "Some Arduino-specific libraries may need alternatives.\n" | ||||
|         + "\n" | ||||
|         + "For detailed migration instructions, see:\n" | ||||
|         + color( | ||||
|             AnsiFore.BLUE, | ||||
|             "https://esphome.io/guides/esp32_arduino_to_idf.html\n\n", | ||||
|         ) | ||||
|     ) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user