mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 15:12:06 +00:00 
			
		
		
		
	make areas and devices consistant
This commit is contained in:
		| @@ -193,7 +193,7 @@ message AreaInfo { | |||||||
|   string name = 2; |   string name = 2; | ||||||
| } | } | ||||||
|  |  | ||||||
| message SubDeviceInfo { | message DeviceInfo { | ||||||
|   uint32 device_id = 1; |   uint32 device_id = 1; | ||||||
|   string name = 2; |   string name = 2; | ||||||
|   uint32 area_id = 3; |   uint32 area_id = 3; | ||||||
| @@ -248,7 +248,7 @@ message DeviceInfoResponse { | |||||||
|   // Supports receiving and saving api encryption key |   // Supports receiving and saving api encryption key | ||||||
|   bool api_encryption_supported = 19; |   bool api_encryption_supported = 19; | ||||||
|  |  | ||||||
|   repeated SubDeviceInfo sub_devices = 20; |   repeated DeviceInfo devices = 20; | ||||||
|   repeated AreaInfo areas = 21; |   repeated AreaInfo areas = 21; | ||||||
|  |  | ||||||
|   // Top-level area info to phase out suggested_area |   // Top-level area info to phase out suggested_area | ||||||
|   | |||||||
| @@ -1620,13 +1620,13 @@ DeviceInfoResponse APIConnection::device_info(const DeviceInfoRequest &msg) { | |||||||
| #ifdef USE_API_NOISE | #ifdef USE_API_NOISE | ||||||
|   resp.api_encryption_supported = true; |   resp.api_encryption_supported = true; | ||||||
| #endif | #endif | ||||||
| #ifdef USE_SUB_DEVICE | #ifdef USE_DEVICES | ||||||
|   for (auto const &sub_device : App.get_sub_devices()) { |   for (auto const &device : App.get_devices()) { | ||||||
|     SubDeviceInfo sub_device_info; |     DeviceInfo device_info; | ||||||
|     sub_device_info.device_id = sub_device->get_device_id(); |     device_info.device_id = device->get_device_id(); | ||||||
|     sub_device_info.name = sub_device->get_name(); |     device_info.name = device->get_name(); | ||||||
|     sub_device_info.area_id = sub_device->get_area_id(); |     device_info.area_id = device->get_area_id(); | ||||||
|     resp.sub_devices.push_back(sub_device_info); |     resp.devices.push_back(device_info); | ||||||
|   } |   } | ||||||
| #endif | #endif | ||||||
| #ifdef USE_AREAS | #ifdef USE_AREAS | ||||||
|   | |||||||
| @@ -301,7 +301,7 @@ class APIConnection : public APIServerConnection { | |||||||
|     response.icon = entity->get_icon(); |     response.icon = entity->get_icon(); | ||||||
|     response.disabled_by_default = entity->is_disabled_by_default(); |     response.disabled_by_default = entity->is_disabled_by_default(); | ||||||
|     response.entity_category = static_cast<enums::EntityCategory>(entity->get_entity_category()); |     response.entity_category = static_cast<enums::EntityCategory>(entity->get_entity_category()); | ||||||
| #ifdef USE_SUB_DEVICE | #ifdef USE_DEVICES | ||||||
|     response.device_id = entity->get_device_id(); |     response.device_id = entity->get_device_id(); | ||||||
| #endif | #endif | ||||||
|   } |   } | ||||||
|   | |||||||
| @@ -9,8 +9,8 @@ | |||||||
| #include "esphome/core/preferences.h" | #include "esphome/core/preferences.h" | ||||||
| #include "esphome/core/scheduler.h" | #include "esphome/core/scheduler.h" | ||||||
|  |  | ||||||
| #ifdef USE_SUB_DEVICE | #ifdef USE_DEVICES | ||||||
| #include "esphome/core/sub_device.h" | #include "esphome/core/device.h" | ||||||
| #endif | #endif | ||||||
| #ifdef USE_AREAS | #ifdef USE_AREAS | ||||||
| #include "esphome/core/area.h" | #include "esphome/core/area.h" | ||||||
| @@ -114,8 +114,8 @@ class Application { | |||||||
|     this->compilation_time_ = compilation_time; |     this->compilation_time_ = compilation_time; | ||||||
|   } |   } | ||||||
|  |  | ||||||
| #ifdef USE_SUB_DEVICE | #ifdef USE_DEVICES | ||||||
|   void register_sub_device(SubDevice *sub_device) { this->sub_devices_.push_back(sub_device); } |   void register_device(Device *device) { this->devices_.push_back(device); } | ||||||
| #endif | #endif | ||||||
| #ifdef USE_AREAS | #ifdef USE_AREAS | ||||||
|   void register_area(Area *area) { this->areas_.push_back(area); } |   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_; } |   const std::string &get_friendly_name() const { return this->friendly_name_; } | ||||||
|  |  | ||||||
|   /// Get the area of this Application set by pre_setup(). |   /// Get the area of this Application set by pre_setup(). | ||||||
|   std::string get_area() const { |   const char *get_area() const { | ||||||
| #ifdef USE_AREAS | #ifdef USE_AREAS | ||||||
|     // If we have areas registered, return the name of the first one (which is the top-level area) |     // 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) { |     if (!this->areas_.empty() && this->areas_[0] != nullptr) { | ||||||
| @@ -356,8 +356,8 @@ class Application { | |||||||
|  |  | ||||||
|   uint8_t get_app_state() const { return this->app_state_; } |   uint8_t get_app_state() const { return this->app_state_; } | ||||||
|  |  | ||||||
| #ifdef USE_SUB_DEVICE | #ifdef USE_DEVICES | ||||||
|   const std::vector<SubDevice *> &get_sub_devices() { return this->sub_devices_; } |   const std::vector<Device *> &get_devices() { return this->devices_; } | ||||||
| #endif | #endif | ||||||
| #ifdef USE_AREAS | #ifdef USE_AREAS | ||||||
|   const std::vector<Area *> &get_areas() { return this->areas_; } |   const std::vector<Area *> &get_areas() { return this->areas_; } | ||||||
| @@ -638,8 +638,8 @@ class Application { | |||||||
|   uint16_t current_loop_index_{0}; |   uint16_t current_loop_index_{0}; | ||||||
|   bool in_loop_{false}; |   bool in_loop_{false}; | ||||||
|  |  | ||||||
| #ifdef USE_SUB_DEVICE | #ifdef USE_DEVICES | ||||||
|   std::vector<SubDevice *> sub_devices_{}; |   std::vector<Device *> devices_{}; | ||||||
| #endif | #endif | ||||||
| #ifdef USE_AREAS | #ifdef USE_AREAS | ||||||
|   std::vector<Area *> areas_{}; |   std::vector<Area *> areas_{}; | ||||||
|   | |||||||
| @@ -1,6 +1,5 @@ | |||||||
| #pragma once | #pragma once | ||||||
|  |  | ||||||
| #include <string> |  | ||||||
| #include <cstdint> | #include <cstdint> | ||||||
|  |  | ||||||
| namespace esphome { | namespace esphome { | ||||||
| @@ -9,12 +8,12 @@ class Area { | |||||||
|  public: |  public: | ||||||
|   void set_area_id(uint32_t area_id) { area_id_ = area_id; } |   void set_area_id(uint32_t area_id) { area_id_ = area_id; } | ||||||
|   uint32_t get_area_id() { return area_id_; } |   uint32_t get_area_id() { return area_id_; } | ||||||
|   void set_name(std::string name) { name_ = std::move(name); } |   void set_name(const char *name) { name_ = name; } | ||||||
|   std::string get_name() { return name_; } |   const char *get_name() { return name_; } | ||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
|   uint32_t area_id_{}; |   uint32_t area_id_{}; | ||||||
|   std::string name_ = ""; |   const char *name_ = ""; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| }  // namespace esphome | }  // namespace esphome | ||||||
|   | |||||||
| @@ -58,7 +58,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") | Device = cg.esphome_ns.class_("Device") | ||||||
| Area = cg.esphome_ns.class_("Area") | Area = cg.esphome_ns.class_("Area") | ||||||
|  |  | ||||||
| VALID_INCLUDE_EXTS = {".h", ".hpp", ".tcc", ".ino", ".cpp", ".c"} | 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.Optional(CONF_SUB_DEVICES, default=[]): cv.ensure_list( | ||||||
|                 cv.Schema( |                 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.Required(CONF_NAME): cv.string, | ||||||
|                         cv.Optional(CONF_AREA_ID): cv.use_id(Area), |                         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 |                 # Get the area variable and use its area_id | ||||||
|                 area = await cg.get_variable(dev_conf[CONF_AREA_ID]) |                 area = await cg.get_variable(dev_conf[CONF_AREA_ID]) | ||||||
|                 cg.add(dev.set_area_id(area.get_area_id())) |                 cg.add(dev.set_area_id(area.get_area_id())) | ||||||
|             cg.add(cg.App.register_sub_device(dev)) |             cg.add(cg.App.register_device(dev)) | ||||||
|         cg.add_define("USE_SUB_DEVICE") |         cg.add_define("USE_DEVICES") | ||||||
|   | |||||||
| @@ -51,7 +51,7 @@ class EntityBase { | |||||||
|   std::string get_icon() const; |   std::string get_icon() const; | ||||||
|   void set_icon(const char *icon); |   void set_icon(const char *icon); | ||||||
|  |  | ||||||
| #ifdef USE_SUB_DEVICE | #ifdef USE_DEVICES | ||||||
|   // Get/set this entity's device id |   // Get/set this entity's device id | ||||||
|   uint32_t get_device_id() const { return this->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; } |   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 *object_id_c_str_{nullptr}; | ||||||
|   const char *icon_c_str_{nullptr}; |   const char *icon_c_str_{nullptr}; | ||||||
|   uint32_t object_id_hash_{}; |   uint32_t object_id_hash_{}; | ||||||
| #ifdef USE_SUB_DEVICE | #ifdef USE_DEVICES | ||||||
|   uint32_t device_id_{}; |   uint32_t device_id_{}; | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|   | |||||||
| @@ -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 |  | ||||||
		Reference in New Issue
	
	Block a user