1
0
mirror of https://github.com/esphome/esphome.git synced 2025-03-13 14:18:14 +00:00
This commit is contained in:
Tomasz Duda 2025-02-24 18:48:01 +01:00
parent 35096657af
commit ff1d62d15c

View File

@ -1,5 +1,7 @@
import re
import voluptuous as vol
from esphome import automation
from esphome.automation import LambdaAction
import esphome.codegen as cg
@ -182,6 +184,48 @@ LoggerMessageTrigger = logger_ns.class_(
automation.Trigger.template(cg.int_, cg.const_char_ptr, cg.const_char_ptr),
)
def _get_default_key(*args):
return ["_".join([CORE.target_platform] + list(args))]
# https://github.com/esphome/esphome/pull/7715
class _SplitDefault(cv.Optional):
"""Mark this key to have a split default for ESP8266/ESP32."""
def __init__(self, key, **kwargs):
super().__init__(key)
self._defaults = {}
for platform_key, value in kwargs.items():
self._defaults[platform_key] = vol.default_factory(value)
@property
def default(self):
keys = []
if CORE.is_esp32:
from esphome.components.esp32 import get_esp32_variant
from esphome.components.esp32.const import VARIANT_ESP32
variant = get_esp32_variant().replace(VARIANT_ESP32, "").lower()
framework = CORE.target_framework.replace("esp-", "")
if variant:
keys += _get_default_key(variant, framework)
keys += _get_default_key(variant)
keys += _get_default_key(framework)
keys += _get_default_key()
for key in keys:
if self._defaults.get(key) is not None:
return self._defaults[key]
return vol.default_factory(vol.UNDEFINED)
@default.setter
def default(self, value):
# Ignore default set from vol.Optional
pass
PLATFORM_NRF52 = "nrf52"
CONF_ESP8266_STORE_LOG_STRINGS_IN_FLASH = "esp8266_store_log_strings_in_flash"
CONFIG_SCHEMA = cv.All(
@ -191,25 +235,23 @@ CONFIG_SCHEMA = cv.All(
cv.Optional(CONF_BAUD_RATE, default=115200): cv.positive_int,
cv.Optional(CONF_TX_BUFFER_SIZE, default=512): cv.validate_bytes,
cv.Optional(CONF_DEASSERT_RTS_DTR, default=False): cv.boolean,
cv.Optional(CONF_HARDWARE_UART, default=USB_CDC):
# https://github.com/esphome/esphome/pull/7715
# cv.SplitDefault(
# CONF_HARDWARE_UART,
# esp8266=UART0,
# esp32=UART0,
# esp32_s2=USB_CDC,
# esp32_s3_arduino=USB_CDC,
# esp32_s3_idf=USB_SERIAL_JTAG,
# esp32_c3_arduino=USB_CDC,
# esp32_c3_idf=USB_SERIAL_JTAG,
# esp32_c6_arduino=USB_CDC,
# esp32_c6_idf=USB_SERIAL_JTAG,
# rp2040=USB_CDC,
# bk72xx=DEFAULT,
# rtl87xx=DEFAULT,
# nrf52=USB_CDC,
# ):
cv.All(
_SplitDefault(
CONF_HARDWARE_UART,
esp8266=UART0,
esp32=UART0,
esp32_s2=USB_CDC,
esp32_s3_arduino=USB_CDC,
esp32_s3_idf=USB_SERIAL_JTAG,
esp32_c3_arduino=USB_CDC,
esp32_c3_idf=USB_SERIAL_JTAG,
esp32_c6_arduino=USB_CDC,
esp32_c6_idf=USB_SERIAL_JTAG,
rp2040=USB_CDC,
bk72xx=DEFAULT,
rtl87xx=DEFAULT,
nrf52=USB_CDC,
): cv.All(
cv.only_on(
[
PLATFORM_ESP8266,
@ -236,9 +278,9 @@ CONFIG_SCHEMA = cv.All(
}
),
# https://github.com/esphome/esphome/pull/7715
# cv.SplitDefault(
# CONF_ESP8266_STORE_LOG_STRINGS_IN_FLASH, esp8266=True
# ): cv.All(cv.only_on_esp8266, cv.boolean),
_SplitDefault(
CONF_ESP8266_STORE_LOG_STRINGS_IN_FLASH, esp8266=True
): cv.All(cv.only_on_esp8266, cv.boolean),
}
).extend(cv.COMPONENT_SCHEMA),
validate_local_no_higher_than_global,