mirror of
https://github.com/esphome/esphome.git
synced 2025-09-12 00:02:21 +01:00
Dont need to warning about simple string area
A single device in a single area can have a simple string as the area
This commit is contained in:
@@ -42,7 +42,6 @@ from esphome.helpers import (
|
||||
copy_file_if_changed,
|
||||
fnv1a_32bit_hash,
|
||||
get_str_env,
|
||||
slugify,
|
||||
walk_files,
|
||||
)
|
||||
from esphome.types import ConfigType
|
||||
@@ -67,27 +66,6 @@ Area = cg.esphome_ns.class_("Area")
|
||||
VALID_INCLUDE_EXTS = {".h", ".hpp", ".tcc", ".ino", ".cpp", ".c"}
|
||||
|
||||
|
||||
def validate_area_config(value: dict | str) -> dict[str, str | core.ID]:
|
||||
"""Convert legacy string area to structured format."""
|
||||
if isinstance(value, str):
|
||||
# Legacy string format - convert to structured format
|
||||
_LOGGER.warning(
|
||||
"Using 'area' as a string is deprecated. Please use the new format:\n"
|
||||
"area:\n"
|
||||
" id: %s\n"
|
||||
' name: "%s"',
|
||||
slugify(value),
|
||||
value,
|
||||
)
|
||||
# Return a structured area config with the ID generated here
|
||||
return {
|
||||
CONF_ID: cv.declare_id(Area)(slugify(value)),
|
||||
CONF_NAME: value,
|
||||
}
|
||||
# Already structured format
|
||||
return value
|
||||
|
||||
|
||||
def validate_hostname(config):
|
||||
max_length = 31
|
||||
if config[CONF_NAME_ADD_MAC_SUFFIX]:
|
||||
@@ -206,21 +184,28 @@ if "ESPHOME_DEFAULT_COMPILE_PROCESS_LIMIT" in os.environ:
|
||||
else:
|
||||
_compile_process_limit_default = cv.UNDEFINED
|
||||
|
||||
AREA_SCHEMA = cv.Schema(
|
||||
{
|
||||
cv.GenerateID(CONF_ID): cv.declare_id(Area),
|
||||
cv.Required(CONF_NAME): cv.string,
|
||||
}
|
||||
)
|
||||
|
||||
DEVICE_SCHEMA = cv.Schema(
|
||||
{
|
||||
cv.GenerateID(CONF_ID): cv.declare_id(Device),
|
||||
cv.Required(CONF_NAME): cv.string,
|
||||
cv.Optional(CONF_AREA_ID): cv.use_id(Area),
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
CONFIG_SCHEMA = cv.All(
|
||||
cv.Schema(
|
||||
{
|
||||
cv.Required(CONF_NAME): cv.valid_name,
|
||||
cv.Optional(CONF_FRIENDLY_NAME, ""): cv.string,
|
||||
cv.Optional(CONF_AREA): cv.All(
|
||||
validate_area_config,
|
||||
cv.Schema(
|
||||
{
|
||||
cv.GenerateID(CONF_ID): cv.declare_id(Area),
|
||||
cv.Required(CONF_NAME): cv.string,
|
||||
}
|
||||
),
|
||||
),
|
||||
cv.Optional(CONF_AREA): cv.maybe_simple_value(AREA_SCHEMA, key=CONF_NAME),
|
||||
cv.Optional(CONF_COMMENT): cv.string,
|
||||
cv.Required(CONF_BUILD_PATH): cv.string,
|
||||
cv.Optional(CONF_PLATFORMIO_OPTIONS, default={}): cv.Schema(
|
||||
@@ -270,23 +255,8 @@ CONFIG_SCHEMA = cv.All(
|
||||
cv.Optional(
|
||||
CONF_COMPILE_PROCESS_LIMIT, default=_compile_process_limit_default
|
||||
): cv.int_range(min=1, max=get_usable_cpu_count()),
|
||||
cv.Optional(CONF_AREAS, default=[]): cv.ensure_list(
|
||||
cv.Schema(
|
||||
{
|
||||
cv.GenerateID(CONF_ID): cv.declare_id(Area),
|
||||
cv.Required(CONF_NAME): cv.string,
|
||||
}
|
||||
),
|
||||
),
|
||||
cv.Optional(CONF_DEVICES, default=[]): cv.ensure_list(
|
||||
cv.Schema(
|
||||
{
|
||||
cv.GenerateID(CONF_ID): cv.declare_id(Device),
|
||||
cv.Required(CONF_NAME): cv.string,
|
||||
cv.Optional(CONF_AREA_ID): cv.use_id(Area),
|
||||
}
|
||||
),
|
||||
),
|
||||
cv.Optional(CONF_AREAS, default=[]): cv.ensure_list(AREA_SCHEMA),
|
||||
cv.Optional(CONF_DEVICES, default=[]): cv.ensure_list(DEVICE_SCHEMA),
|
||||
}
|
||||
),
|
||||
validate_hostname,
|
||||
|
Reference in New Issue
Block a user