diff --git a/esphome/components/api/api.proto b/esphome/components/api/api.proto index 96ef93ef46..58a0b52555 100644 --- a/esphome/components/api/api.proto +++ b/esphome/components/api/api.proto @@ -193,7 +193,7 @@ message AreaInfo { string name = 2; } -message SubDeviceInfo { +message DeviceInfo { uint32 device_id = 1; string name = 2; uint32 area_id = 3; @@ -248,7 +248,7 @@ message DeviceInfoResponse { // Supports receiving and saving api encryption key bool api_encryption_supported = 19; - repeated SubDeviceInfo sub_devices = 20; + repeated DeviceInfo devices = 20; repeated AreaInfo areas = 21; // Top-level area info to phase out suggested_area diff --git a/esphome/components/api/api_connection.cpp b/esphome/components/api/api_connection.cpp index 799cd2f102..948b67456b 100644 --- a/esphome/components/api/api_connection.cpp +++ b/esphome/components/api/api_connection.cpp @@ -1620,13 +1620,13 @@ DeviceInfoResponse APIConnection::device_info(const DeviceInfoRequest &msg) { #ifdef USE_API_NOISE resp.api_encryption_supported = true; #endif -#ifdef USE_SUB_DEVICE - for (auto const &sub_device : App.get_sub_devices()) { - SubDeviceInfo sub_device_info; - sub_device_info.device_id = sub_device->get_device_id(); - sub_device_info.name = sub_device->get_name(); - sub_device_info.area_id = sub_device->get_area_id(); - resp.sub_devices.push_back(sub_device_info); +#ifdef USE_DEVICES + for (auto const &device : App.get_devices()) { + DeviceInfo device_info; + device_info.device_id = device->get_device_id(); + device_info.name = device->get_name(); + device_info.area_id = device->get_area_id(); + resp.devices.push_back(device_info); } #endif #ifdef USE_AREAS diff --git a/esphome/components/api/api_connection.h b/esphome/components/api/api_connection.h index 9166dbbc94..da12a3e449 100644 --- a/esphome/components/api/api_connection.h +++ b/esphome/components/api/api_connection.h @@ -301,7 +301,7 @@ class APIConnection : public APIServerConnection { response.icon = entity->get_icon(); response.disabled_by_default = entity->is_disabled_by_default(); response.entity_category = static_cast(entity->get_entity_category()); -#ifdef USE_SUB_DEVICE +#ifdef USE_DEVICES response.device_id = entity->get_device_id(); #endif } diff --git a/esphome/core/application.h b/esphome/core/application.h index 09e2cfefbf..347cbca304 100644 --- a/esphome/core/application.h +++ b/esphome/core/application.h @@ -9,8 +9,8 @@ #include "esphome/core/preferences.h" #include "esphome/core/scheduler.h" -#ifdef USE_SUB_DEVICE -#include "esphome/core/sub_device.h" +#ifdef USE_DEVICES +#include "esphome/core/device.h" #endif #ifdef USE_AREAS #include "esphome/core/area.h" @@ -114,8 +114,8 @@ class Application { this->compilation_time_ = compilation_time; } -#ifdef USE_SUB_DEVICE - void register_sub_device(SubDevice *sub_device) { this->sub_devices_.push_back(sub_device); } +#ifdef USE_DEVICES + void register_device(Device *device) { this->devices_.push_back(device); } #endif #ifdef USE_AREAS void register_area(Area *area) { this->areas_.push_back(area); } @@ -299,7 +299,7 @@ class Application { const std::string &get_friendly_name() const { return this->friendly_name_; } /// Get the area of this Application set by pre_setup(). - std::string get_area() const { + const char *get_area() const { #ifdef USE_AREAS // If we have areas registered, return the name of the first one (which is the top-level area) if (!this->areas_.empty() && this->areas_[0] != nullptr) { @@ -356,8 +356,8 @@ class Application { uint8_t get_app_state() const { return this->app_state_; } -#ifdef USE_SUB_DEVICE - const std::vector &get_sub_devices() { return this->sub_devices_; } +#ifdef USE_DEVICES + const std::vector &get_devices() { return this->devices_; } #endif #ifdef USE_AREAS const std::vector &get_areas() { return this->areas_; } @@ -638,8 +638,8 @@ class Application { uint16_t current_loop_index_{0}; bool in_loop_{false}; -#ifdef USE_SUB_DEVICE - std::vector sub_devices_{}; +#ifdef USE_DEVICES + std::vector devices_{}; #endif #ifdef USE_AREAS std::vector areas_{}; diff --git a/esphome/core/area.h b/esphome/core/area.h index f239983741..30b82aad6d 100644 --- a/esphome/core/area.h +++ b/esphome/core/area.h @@ -1,6 +1,5 @@ #pragma once -#include #include namespace esphome { @@ -9,12 +8,12 @@ class Area { public: void set_area_id(uint32_t area_id) { area_id_ = area_id; } uint32_t get_area_id() { return area_id_; } - void set_name(std::string name) { name_ = std::move(name); } - std::string get_name() { return name_; } + void set_name(const char *name) { name_ = name; } + const char *get_name() { return name_; } protected: uint32_t area_id_{}; - std::string name_ = ""; + const char *name_ = ""; }; } // namespace esphome diff --git a/esphome/core/config.py b/esphome/core/config.py index 921e7653a8..ba7516d939 100644 --- a/esphome/core/config.py +++ b/esphome/core/config.py @@ -58,7 +58,7 @@ LoopTrigger = cg.esphome_ns.class_( ProjectUpdateTrigger = cg.esphome_ns.class_( "ProjectUpdateTrigger", cg.Component, automation.Trigger.template(cg.std_string) ) -SubDevice = cg.esphome_ns.class_("SubDevice") +Device = cg.esphome_ns.class_("Device") Area = cg.esphome_ns.class_("Area") VALID_INCLUDE_EXTS = {".h", ".hpp", ".tcc", ".ino", ".cpp", ".c"} @@ -197,7 +197,7 @@ CONFIG_SCHEMA = cv.All( cv.Optional(CONF_SUB_DEVICES, default=[]): cv.ensure_list( cv.Schema( { - cv.GenerateID(CONF_ID): cv.declare_id(SubDevice), + cv.GenerateID(CONF_ID): cv.declare_id(Device), cv.Required(CONF_NAME): cv.string, cv.Optional(CONF_AREA_ID): cv.use_id(Area), } @@ -507,5 +507,5 @@ async def to_code(config): # Get the area variable and use its area_id area = await cg.get_variable(dev_conf[CONF_AREA_ID]) cg.add(dev.set_area_id(area.get_area_id())) - cg.add(cg.App.register_sub_device(dev)) - cg.add_define("USE_SUB_DEVICE") + cg.add(cg.App.register_device(dev)) + cg.add_define("USE_DEVICES") diff --git a/esphome/core/entity_base.h b/esphome/core/entity_base.h index b21ae196f1..4bd04a9b1c 100644 --- a/esphome/core/entity_base.h +++ b/esphome/core/entity_base.h @@ -51,7 +51,7 @@ class EntityBase { std::string get_icon() const; void set_icon(const char *icon); -#ifdef USE_SUB_DEVICE +#ifdef USE_DEVICES // Get/set this entity's device id uint32_t get_device_id() const { return this->device_id_; } void set_device_id(const uint32_t device_id) { this->device_id_ = device_id; } @@ -73,7 +73,7 @@ class EntityBase { const char *object_id_c_str_{nullptr}; const char *icon_c_str_{nullptr}; uint32_t object_id_hash_{}; -#ifdef USE_SUB_DEVICE +#ifdef USE_DEVICES uint32_t device_id_{}; #endif diff --git a/esphome/core/sub_device.h b/esphome/core/sub_device.h deleted file mode 100644 index f17f882dfd..0000000000 --- a/esphome/core/sub_device.h +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once - -#include "esphome/core/string_ref.h" - -namespace esphome { - -class SubDevice { - public: - void set_device_id(uint32_t device_id) { device_id_ = device_id; } - uint32_t get_device_id() { return device_id_; } - void set_name(std::string name) { name_ = std::move(name); } - std::string get_name() { return name_; } - void set_area_id(uint32_t area_id) { area_id_ = area_id; } - uint32_t get_area_id() { return area_id_; } - - protected: - uint32_t device_id_{}; - uint32_t area_id_{}; - std::string name_ = ""; -}; - -} // namespace esphome