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:
@@ -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")
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user