mirror of
https://github.com/esphome/esphome.git
synced 2025-09-12 16:22:22 +01:00
Attempt moving it to esphome config section
This commit is contained in:
@@ -1,26 +0,0 @@
|
|||||||
from esphome import codegen as cg, config_validation as cv
|
|
||||||
from esphome.const import CONF_AREA, CONF_ID, CONF_NAME
|
|
||||||
|
|
||||||
devices_ns = cg.esphome_ns.namespace("devices")
|
|
||||||
SubDevice = devices_ns.class_("SubDevice")
|
|
||||||
|
|
||||||
MULTI_CONF = True
|
|
||||||
|
|
||||||
CODEOWNERS = ["@dala318"]
|
|
||||||
|
|
||||||
CONFIG_SCHEMA = cv.Schema(
|
|
||||||
{
|
|
||||||
cv.GenerateID(CONF_ID): cv.declare_id(SubDevice),
|
|
||||||
cv.Required(CONF_NAME): cv.string,
|
|
||||||
cv.Optional(CONF_AREA, default=""): cv.string,
|
|
||||||
}
|
|
||||||
).extend(cv.COMPONENT_SCHEMA)
|
|
||||||
|
|
||||||
|
|
||||||
async def to_code(config):
|
|
||||||
dev = cg.new_Pvariable(config[CONF_ID])
|
|
||||||
cg.add(dev.set_uid(hash(str(config[CONF_ID])) % 0xFFFFFFFF))
|
|
||||||
cg.add(dev.set_name(config[CONF_NAME]))
|
|
||||||
cg.add(dev.set_area(config[CONF_AREA]))
|
|
||||||
cg.add(cg.App.register_sub_device(dev))
|
|
||||||
cg.add_define("USE_SUB_DEVICE")
|
|
@@ -835,6 +835,7 @@ CONF_STEP_PIN = "step_pin"
|
|||||||
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_DEVICES = "sub_devices"
|
||||||
CONF_SUBNET = "subnet"
|
CONF_SUBNET = "subnet"
|
||||||
CONF_SUBSCRIBE_QOS = "subscribe_qos"
|
CONF_SUBSCRIBE_QOS = "subscribe_qos"
|
||||||
CONF_SUBSTITUTIONS = "substitutions"
|
CONF_SUBSTITUTIONS = "substitutions"
|
||||||
|
@@ -13,6 +13,7 @@ from esphome.const import (
|
|||||||
CONF_DEBUG_SCHEDULER,
|
CONF_DEBUG_SCHEDULER,
|
||||||
CONF_ESPHOME,
|
CONF_ESPHOME,
|
||||||
CONF_FRIENDLY_NAME,
|
CONF_FRIENDLY_NAME,
|
||||||
|
CONF_ID,
|
||||||
CONF_INCLUDES,
|
CONF_INCLUDES,
|
||||||
CONF_LIBRARIES,
|
CONF_LIBRARIES,
|
||||||
CONF_MIN_VERSION,
|
CONF_MIN_VERSION,
|
||||||
@@ -26,6 +27,7 @@ from esphome.const import (
|
|||||||
CONF_PLATFORMIO_OPTIONS,
|
CONF_PLATFORMIO_OPTIONS,
|
||||||
CONF_PRIORITY,
|
CONF_PRIORITY,
|
||||||
CONF_PROJECT,
|
CONF_PROJECT,
|
||||||
|
CONF_SUB_DEVICES,
|
||||||
CONF_TRIGGER_ID,
|
CONF_TRIGGER_ID,
|
||||||
CONF_VERSION,
|
CONF_VERSION,
|
||||||
KEY_CORE,
|
KEY_CORE,
|
||||||
@@ -48,7 +50,7 @@ LoopTrigger = cg.esphome_ns.class_(
|
|||||||
ProjectUpdateTrigger = cg.esphome_ns.class_(
|
ProjectUpdateTrigger = cg.esphome_ns.class_(
|
||||||
"ProjectUpdateTrigger", cg.Component, automation.Trigger.template(cg.std_string)
|
"ProjectUpdateTrigger", cg.Component, automation.Trigger.template(cg.std_string)
|
||||||
)
|
)
|
||||||
|
SubDevice = cg.esphome_ns.class_("SubDevice")
|
||||||
|
|
||||||
VALID_INCLUDE_EXTS = {".h", ".hpp", ".tcc", ".ino", ".cpp", ".c"}
|
VALID_INCLUDE_EXTS = {".h", ".hpp", ".tcc", ".ino", ".cpp", ".c"}
|
||||||
|
|
||||||
@@ -167,6 +169,15 @@ 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_DEVICES, default=[]): cv.ensure_list(
|
||||||
|
cv.Schema(
|
||||||
|
{
|
||||||
|
cv.GenerateID(CONF_ID): cv.declare_id(SubDevice),
|
||||||
|
cv.Required(CONF_NAME): cv.string,
|
||||||
|
cv.Optional(CONF_AREA, default=""): cv.string,
|
||||||
|
}
|
||||||
|
),
|
||||||
|
),
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
validate_hostname,
|
validate_hostname,
|
||||||
@@ -405,3 +416,12 @@ async def to_code(config):
|
|||||||
|
|
||||||
if config[CONF_PLATFORMIO_OPTIONS]:
|
if config[CONF_PLATFORMIO_OPTIONS]:
|
||||||
CORE.add_job(_add_platformio_options, config[CONF_PLATFORMIO_OPTIONS])
|
CORE.add_job(_add_platformio_options, config[CONF_PLATFORMIO_OPTIONS])
|
||||||
|
|
||||||
|
if config[CONF_SUB_DEVICES]:
|
||||||
|
for dev_conf in config[CONF_SUB_DEVICES]:
|
||||||
|
dev = cg.new_Pvariable(dev_conf[CONF_ID])
|
||||||
|
cg.add(dev.set_uid(hash(str(dev_conf[CONF_ID])) % 0xFFFFFFFF))
|
||||||
|
cg.add(dev.set_name(dev_conf[CONF_NAME]))
|
||||||
|
cg.add(dev.set_area(dev_conf[CONF_AREA]))
|
||||||
|
cg.add(cg.App.register_sub_device(dev))
|
||||||
|
cg.add_define("USE_SUB_DEVICE")
|
||||||
|
@@ -3,7 +3,6 @@
|
|||||||
#include "esphome/core/string_ref.h"
|
#include "esphome/core/string_ref.h"
|
||||||
|
|
||||||
namespace esphome {
|
namespace esphome {
|
||||||
namespace devices {
|
|
||||||
|
|
||||||
class SubDevice {
|
class SubDevice {
|
||||||
public:
|
public:
|
||||||
@@ -20,5 +19,4 @@ class SubDevice {
|
|||||||
std::string area_ = "";
|
std::string area_ = "";
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace devices
|
|
||||||
} // namespace esphome
|
} // namespace esphome
|
@@ -1,11 +0,0 @@
|
|||||||
devices:
|
|
||||||
- id: other_device
|
|
||||||
name: Another device
|
|
||||||
|
|
||||||
binary_sensor:
|
|
||||||
- platform: template
|
|
||||||
name: Basic sensor
|
|
||||||
|
|
||||||
- platform: template
|
|
||||||
name: Other device sensor
|
|
||||||
device_id: other_device
|
|
@@ -17,4 +17,12 @@ esphome:
|
|||||||
version: "1.1"
|
version: "1.1"
|
||||||
on_update:
|
on_update:
|
||||||
logger.log: on_update
|
logger.log: on_update
|
||||||
|
sub_devices:
|
||||||
|
- id: other_device
|
||||||
|
name: Another device
|
||||||
|
area: Another area
|
||||||
|
|
||||||
|
binary_sensor:
|
||||||
|
- platform: template
|
||||||
|
name: Other device sensor
|
||||||
|
device_id: other_device
|
||||||
|
Reference in New Issue
Block a user