1
0
mirror of https://github.com/esphome/esphome.git synced 2025-09-13 16:52:18 +01:00

Work on sub-device creation

This commit is contained in:
Daniel Vikström
2025-04-09 01:39:24 +02:00
parent 01ac59ce2a
commit 0651f7cb3c
2 changed files with 23 additions and 10 deletions

View File

@@ -1,8 +1,8 @@
from esphome import codegen as cg, config_validation as cv
from esphome.const import CONF_ID, CONF_NAME
from esphome.const import CONF_AREA, CONF_ID, CONF_NAME
# ns = cg.esphome_ns.namespace("devices")
# DeviceClass = ns.Class("SubDevice")
ns = cg.esphome_ns.namespace("devices")
DeviceClass = ns.Class("SubDevice")
StringRef = cg.esphome_ns.struct("StringRef")
MULTI_CONF = True
@@ -11,16 +11,27 @@ CODEOWNERS = ["@dala318"]
CONFIG_SCHEMA = cv.Schema(
{
# cv.Required(CONF_ID): cv.declare_id(DeviceClass),
cv.Required(CONF_ID): cv.declare_id(StringRef),
cv.GenerateID(CONF_ID): cv.declare_id(DeviceClass),
# cv.Required(CONF_NAME): cv.declare_id(StringRef),
# cv.Optional(CONF_AREA, ""): cv.declare_id(StringRef),
cv.Required(CONF_NAME): cv.string,
cv.Optional(CONF_AREA, ""): cv.string,
}
).extend(cv.COMPONENT_SCHEMA)
async def to_code(config):
cg.new_Pvariable(
config[CONF_ID],
config[CONF_NAME],
)
dev = cg.new_Pvariable(config[CONF_ID])
cg.add(dev.set_name(config[CONF_NAME]))
if CONF_AREA in config:
cg.add(dev.set_area(config[CONF_AREA]))
cg.add(cg.App.register_sub_device(dev))
# cg.add(
# cg.App.register_sub_device(
# config[CONF_ID],
# config[CONF_NAME],
# config[CONF_AREA],
# # config.get(CONF_COMMENT, ""),
# )
# )
cg.add_define("USE_SUB_DEVICE")

View File

@@ -7,11 +7,13 @@ class SubDevice {
public:
void set_name(std::string name) { name_ = name; }
std::string get_name(void) { return name_; }
void set_area(std::string area) { area_ = area; }
std::string get_area(void) { return area_; }
protected:
// std::string id_ = "";
std::string name_ = "";
std::string suggested_area_ = "";
std::string area_ = "";
};
} // namespace devices