mirror of
https://github.com/esphome/esphome.git
synced 2025-09-12 08:12:22 +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,
|
copy_file_if_changed,
|
||||||
fnv1a_32bit_hash,
|
fnv1a_32bit_hash,
|
||||||
get_str_env,
|
get_str_env,
|
||||||
slugify,
|
|
||||||
walk_files,
|
walk_files,
|
||||||
)
|
)
|
||||||
from esphome.types import ConfigType
|
from esphome.types import ConfigType
|
||||||
@@ -67,27 +66,6 @@ Area = cg.esphome_ns.class_("Area")
|
|||||||
VALID_INCLUDE_EXTS = {".h", ".hpp", ".tcc", ".ino", ".cpp", ".c"}
|
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):
|
def validate_hostname(config):
|
||||||
max_length = 31
|
max_length = 31
|
||||||
if config[CONF_NAME_ADD_MAC_SUFFIX]:
|
if config[CONF_NAME_ADD_MAC_SUFFIX]:
|
||||||
@@ -206,21 +184,28 @@ if "ESPHOME_DEFAULT_COMPILE_PROCESS_LIMIT" in os.environ:
|
|||||||
else:
|
else:
|
||||||
_compile_process_limit_default = cv.UNDEFINED
|
_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(
|
CONFIG_SCHEMA = cv.All(
|
||||||
cv.Schema(
|
cv.Schema(
|
||||||
{
|
{
|
||||||
cv.Required(CONF_NAME): cv.valid_name,
|
cv.Required(CONF_NAME): cv.valid_name,
|
||||||
cv.Optional(CONF_FRIENDLY_NAME, ""): cv.string,
|
cv.Optional(CONF_FRIENDLY_NAME, ""): cv.string,
|
||||||
cv.Optional(CONF_AREA): cv.All(
|
cv.Optional(CONF_AREA): cv.maybe_simple_value(AREA_SCHEMA, key=CONF_NAME),
|
||||||
validate_area_config,
|
|
||||||
cv.Schema(
|
|
||||||
{
|
|
||||||
cv.GenerateID(CONF_ID): cv.declare_id(Area),
|
|
||||||
cv.Required(CONF_NAME): cv.string,
|
|
||||||
}
|
|
||||||
),
|
|
||||||
),
|
|
||||||
cv.Optional(CONF_COMMENT): cv.string,
|
cv.Optional(CONF_COMMENT): cv.string,
|
||||||
cv.Required(CONF_BUILD_PATH): cv.string,
|
cv.Required(CONF_BUILD_PATH): cv.string,
|
||||||
cv.Optional(CONF_PLATFORMIO_OPTIONS, default={}): cv.Schema(
|
cv.Optional(CONF_PLATFORMIO_OPTIONS, default={}): cv.Schema(
|
||||||
@@ -270,23 +255,8 @@ CONFIG_SCHEMA = cv.All(
|
|||||||
cv.Optional(
|
cv.Optional(
|
||||||
CONF_COMPILE_PROCESS_LIMIT, default=_compile_process_limit_default
|
CONF_COMPILE_PROCESS_LIMIT, default=_compile_process_limit_default
|
||||||
): cv.int_range(min=1, max=get_usable_cpu_count()),
|
): cv.int_range(min=1, max=get_usable_cpu_count()),
|
||||||
cv.Optional(CONF_AREAS, default=[]): cv.ensure_list(
|
cv.Optional(CONF_AREAS, default=[]): cv.ensure_list(AREA_SCHEMA),
|
||||||
cv.Schema(
|
cv.Optional(CONF_DEVICES, default=[]): cv.ensure_list(DEVICE_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),
|
|
||||||
}
|
|
||||||
),
|
|
||||||
),
|
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
validate_hostname,
|
validate_hostname,
|
||||||
|
Reference in New Issue
Block a user