mirror of
https://github.com/esphome/esphome.git
synced 2025-09-14 01:02:19 +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 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")
|
ns = cg.esphome_ns.namespace("devices")
|
||||||
# DeviceClass = ns.Class("SubDevice")
|
DeviceClass = ns.Class("SubDevice")
|
||||||
StringRef = cg.esphome_ns.struct("StringRef")
|
StringRef = cg.esphome_ns.struct("StringRef")
|
||||||
|
|
||||||
MULTI_CONF = True
|
MULTI_CONF = True
|
||||||
@@ -11,16 +11,27 @@ CODEOWNERS = ["@dala318"]
|
|||||||
|
|
||||||
CONFIG_SCHEMA = cv.Schema(
|
CONFIG_SCHEMA = cv.Schema(
|
||||||
{
|
{
|
||||||
# cv.Required(CONF_ID): cv.declare_id(DeviceClass),
|
cv.GenerateID(CONF_ID): cv.declare_id(DeviceClass),
|
||||||
cv.Required(CONF_ID): cv.declare_id(StringRef),
|
# cv.Required(CONF_NAME): cv.declare_id(StringRef),
|
||||||
|
# cv.Optional(CONF_AREA, ""): cv.declare_id(StringRef),
|
||||||
cv.Required(CONF_NAME): cv.string,
|
cv.Required(CONF_NAME): cv.string,
|
||||||
|
cv.Optional(CONF_AREA, ""): cv.string,
|
||||||
}
|
}
|
||||||
).extend(cv.COMPONENT_SCHEMA)
|
).extend(cv.COMPONENT_SCHEMA)
|
||||||
|
|
||||||
|
|
||||||
async def to_code(config):
|
async def to_code(config):
|
||||||
cg.new_Pvariable(
|
dev = cg.new_Pvariable(config[CONF_ID])
|
||||||
config[CONF_ID],
|
cg.add(dev.set_name(config[CONF_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")
|
cg.add_define("USE_SUB_DEVICE")
|
||||||
|
@@ -7,11 +7,13 @@ class SubDevice {
|
|||||||
public:
|
public:
|
||||||
void set_name(std::string name) { name_ = name; }
|
void set_name(std::string name) { name_ = name; }
|
||||||
std::string get_name(void) { return name_; }
|
std::string get_name(void) { return name_; }
|
||||||
|
void set_area(std::string area) { area_ = area; }
|
||||||
|
std::string get_area(void) { return area_; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// std::string id_ = "";
|
// std::string id_ = "";
|
||||||
std::string name_ = "";
|
std::string name_ = "";
|
||||||
std::string suggested_area_ = "";
|
std::string area_ = "";
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace devices
|
} // namespace devices
|
||||||
|
Reference in New Issue
Block a user