1
0
mirror of https://github.com/esphome/esphome.git synced 2025-10-02 01:52:21 +01:00

make areas and devices consistant

This commit is contained in:
J. Nick Koston
2025-06-21 17:12:00 +02:00
parent 2a39060912
commit 65e3c6bfbb
4 changed files with 13 additions and 12 deletions

View File

@@ -844,8 +844,8 @@ CONF_STILL_THRESHOLD = "still_threshold"
CONF_STOP = "stop" CONF_STOP = "stop"
CONF_STOP_ACTION = "stop_action" CONF_STOP_ACTION = "stop_action"
CONF_STORE_BASELINE = "store_baseline" CONF_STORE_BASELINE = "store_baseline"
CONF_SUB_AREAS = "sub_areas" CONF_AREAS = "areas"
CONF_SUB_DEVICES = "sub_devices" CONF_DEVICES = "devices"
CONF_SUBNET = "subnet" CONF_SUBNET = "subnet"
CONF_SUBSCRIBE_QOS = "subscribe_qos" CONF_SUBSCRIBE_QOS = "subscribe_qos"
CONF_SUBSTITUTIONS = "substitutions" CONF_SUBSTITUTIONS = "substitutions"

View File

@@ -8,10 +8,12 @@ import esphome.config_validation as cv
from esphome.const import ( from esphome.const import (
CONF_AREA, CONF_AREA,
CONF_AREA_ID, CONF_AREA_ID,
CONF_AREAS,
CONF_BUILD_PATH, CONF_BUILD_PATH,
CONF_COMMENT, CONF_COMMENT,
CONF_COMPILE_PROCESS_LIMIT, CONF_COMPILE_PROCESS_LIMIT,
CONF_DEBUG_SCHEDULER, CONF_DEBUG_SCHEDULER,
CONF_DEVICES,
CONF_ESPHOME, CONF_ESPHOME,
CONF_FRIENDLY_NAME, CONF_FRIENDLY_NAME,
CONF_ID, CONF_ID,
@@ -28,8 +30,6 @@ from esphome.const import (
CONF_PLATFORMIO_OPTIONS, CONF_PLATFORMIO_OPTIONS,
CONF_PRIORITY, CONF_PRIORITY,
CONF_PROJECT, CONF_PROJECT,
CONF_SUB_AREAS,
CONF_SUB_DEVICES,
CONF_TRIGGER_ID, CONF_TRIGGER_ID,
CONF_VERSION, CONF_VERSION,
KEY_CORE, KEY_CORE,
@@ -186,7 +186,7 @@ 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_SUB_AREAS, default=[]): cv.ensure_list( cv.Optional(CONF_AREAS, default=[]): cv.ensure_list(
cv.Schema( cv.Schema(
{ {
cv.GenerateID(CONF_ID): cv.declare_id(Area), cv.GenerateID(CONF_ID): cv.declare_id(Area),
@@ -194,7 +194,7 @@ CONFIG_SCHEMA = cv.All(
} }
), ),
), ),
cv.Optional(CONF_SUB_DEVICES, default=[]): cv.ensure_list( cv.Optional(CONF_DEVICES, default=[]): cv.ensure_list(
cv.Schema( cv.Schema(
{ {
cv.GenerateID(CONF_ID): cv.declare_id(Device), cv.GenerateID(CONF_ID): cv.declare_id(Device),
@@ -486,9 +486,9 @@ async def to_code(config):
cg.add_define("USE_AREAS") cg.add_define("USE_AREAS")
# Process sub-devices and areas # Process sub-devices and areas
if sub_devices := config.get(CONF_SUB_DEVICES): if sub_devices := config.get(CONF_DEVICES):
# Process areas first # Process areas first
if sub_areas := config.get(CONF_SUB_AREAS): if sub_areas := config.get(CONF_AREAS):
for area_conf in sub_areas: for area_conf in sub_areas:
area = cg.new_Pvariable(area_conf[CONF_ID]) area = cg.new_Pvariable(area_conf[CONF_ID])
area_id = fnv1a_32bit_hash(str(area_conf[CONF_ID])) area_id = fnv1a_32bit_hash(str(area_conf[CONF_ID]))

View File

@@ -84,7 +84,8 @@
#define USE_SELECT #define USE_SELECT
#define USE_SENSOR #define USE_SENSOR
#define USE_STATUS_LED #define USE_STATUS_LED
#define USE_SUB_DEVICE #define USE_DEVICES
#define USE_AREAS
#define USE_SWITCH #define USE_SWITCH
#define USE_TEXT #define USE_TEXT
#define USE_TEXT_SENSOR #define USE_TEXT_SENSOR

View File

@@ -19,16 +19,16 @@ esphome:
version: "1.1" version: "1.1"
on_update: on_update:
logger.log: on_update logger.log: on_update
sub_areas: areas:
- id: another_area - id: another_area
name: Another area name: Another area
sub_devices: devices:
- id: other_device - id: other_device
name: Another device name: Another device
area_id: another_area area_id: another_area
- id: test_device - id: test_device
name: Test device in main area name: Test device in main area
area_id: testing_area # Reference the main area (not in sub_areas) area_id: testing_area # Reference the main area (not in areas)
- id: no_area_device - id: no_area_device
name: Device without area # This device has no area_id name: Device without area # This device has no area_id