mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 07:03:55 +00:00 
			
		
		
		
	Merge remote-tracking branch 'upstream/dev' into integration
This commit is contained in:
		| @@ -540,6 +540,23 @@ class Nextion : public NextionBase, public PollingComponent, public uart::UARTDe | ||||
|    */ | ||||
|   void goto_page(uint8_t page); | ||||
|  | ||||
|   /** | ||||
|    * Set the visibility of a component. | ||||
|    * | ||||
|    * @param component The component name. | ||||
|    * @param show True to show the component, false to hide it. | ||||
|    * | ||||
|    * @see show_component() | ||||
|    * @see hide_component() | ||||
|    * | ||||
|    * Example: | ||||
|    * ```cpp | ||||
|    * it.set_component_visibility("textview", true);   // Equivalent to show_component("textview") | ||||
|    * it.set_component_visibility("textview", false);  // Equivalent to hide_component("textview") | ||||
|    * ``` | ||||
|    */ | ||||
|   void set_component_visibility(const char *component, bool show) override; | ||||
|  | ||||
|   /** | ||||
|    * Hide a component. | ||||
|    * @param component The component name. | ||||
|   | ||||
| @@ -45,6 +45,7 @@ class NextionBase { | ||||
|   virtual void set_component_pressed_font_color(const char *component, Color color) = 0; | ||||
|   virtual void set_component_font(const char *component, uint8_t font_id) = 0; | ||||
|  | ||||
|   virtual void set_component_visibility(const char *component, bool show) = 0; | ||||
|   virtual void show_component(const char *component) = 0; | ||||
|   virtual void hide_component(const char *component) = 0; | ||||
|  | ||||
|   | ||||
| @@ -201,13 +201,13 @@ void Nextion::set_component_font(const char *component, uint8_t font_id) { | ||||
|   this->add_no_result_to_queue_with_printf_("set_component_font", "%s.font=%" PRIu8, component, font_id); | ||||
| } | ||||
|  | ||||
| void Nextion::hide_component(const char *component) { | ||||
|   this->add_no_result_to_queue_with_printf_("hide_component", "vis %s,0", component); | ||||
| void Nextion::set_component_visibility(const char *component, bool show) { | ||||
|   this->add_no_result_to_queue_with_printf_("set_component_visibility", "vis %s,%d", component, show ? 1 : 0); | ||||
| } | ||||
|  | ||||
| void Nextion::show_component(const char *component) { | ||||
|   this->add_no_result_to_queue_with_printf_("show_component", "vis %s,1", component); | ||||
| } | ||||
| void Nextion::hide_component(const char *component) { this->set_component_visibility(component, false); } | ||||
|  | ||||
| void Nextion::show_component(const char *component) { this->set_component_visibility(component, true); } | ||||
|  | ||||
| void Nextion::enable_component_touch(const char *component) { | ||||
|   this->add_no_result_to_queue_with_printf_("enable_component_touch", "tsw %s,1", component); | ||||
|   | ||||
| @@ -81,13 +81,11 @@ void NextionComponent::update_component_settings(bool force_update) { | ||||
|  | ||||
|     this->component_flags_.visible_needs_update = false; | ||||
|  | ||||
|     if (this->component_flags_.visible) { | ||||
|       this->nextion_->show_component(name_to_send.c_str()); | ||||
|       this->send_state_to_nextion(); | ||||
|     } else { | ||||
|       this->nextion_->hide_component(name_to_send.c_str()); | ||||
|     this->nextion_->set_component_visibility(name_to_send.c_str(), this->component_flags_.visible); | ||||
|     if (!this->component_flags_.visible) { | ||||
|       return; | ||||
|     } | ||||
|     this->send_state_to_nextion(); | ||||
|   } | ||||
|  | ||||
|   if (this->component_flags_.bco_needs_update || (force_update && this->component_flags_.bco2_is_set)) { | ||||
|   | ||||
| @@ -174,11 +174,6 @@ bool Nextion::upload_tft(uint32_t baud_rate, bool exit_reparse) { | ||||
|  | ||||
|   // Check if baud rate is supported | ||||
|   this->original_baud_rate_ = this->parent_->get_baud_rate(); | ||||
|   static const std::vector<uint32_t> SUPPORTED_BAUD_RATES = {2400,   4800,   9600,   19200,  31250,  38400, 57600, | ||||
|                                                              115200, 230400, 250000, 256000, 512000, 921600}; | ||||
|   if (std::find(SUPPORTED_BAUD_RATES.begin(), SUPPORTED_BAUD_RATES.end(), baud_rate) == SUPPORTED_BAUD_RATES.end()) { | ||||
|     baud_rate = this->original_baud_rate_; | ||||
|   } | ||||
|   ESP_LOGD(TAG, "Baud rate: %" PRIu32, baud_rate); | ||||
|  | ||||
|   // Define the configuration for the HTTP client | ||||
|   | ||||
| @@ -177,11 +177,6 @@ bool Nextion::upload_tft(uint32_t baud_rate, bool exit_reparse) { | ||||
|  | ||||
|   // Check if baud rate is supported | ||||
|   this->original_baud_rate_ = this->parent_->get_baud_rate(); | ||||
|   static const std::vector<uint32_t> SUPPORTED_BAUD_RATES = {2400,   4800,   9600,   19200,  31250,  38400, 57600, | ||||
|                                                              115200, 230400, 250000, 256000, 512000, 921600}; | ||||
|   if (std::find(SUPPORTED_BAUD_RATES.begin(), SUPPORTED_BAUD_RATES.end(), baud_rate) == SUPPORTED_BAUD_RATES.end()) { | ||||
|     baud_rate = this->original_baud_rate_; | ||||
|   } | ||||
|   ESP_LOGD(TAG, "Baud rate: %" PRIu32, baud_rate); | ||||
|  | ||||
|   // Define the configuration for the HTTP client | ||||
|   | ||||
| @@ -67,7 +67,9 @@ void TuyaClimate::setup() { | ||||
|   } | ||||
|   if (this->eco_id_.has_value()) { | ||||
|     this->parent_->register_listener(*this->eco_id_, [this](const TuyaDatapoint &datapoint) { | ||||
|       // Whether data type is BOOL or ENUM, it will still be a 1 or a 0, so the functions below are valid in both cases | ||||
|       this->eco_ = datapoint.value_bool; | ||||
|       this->eco_type_ = datapoint.type; | ||||
|       ESP_LOGV(TAG, "MCU reported eco is: %s", ONOFF(this->eco_)); | ||||
|       this->compute_preset_(); | ||||
|       this->compute_target_temperature_(); | ||||
| @@ -176,7 +178,11 @@ void TuyaClimate::control(const climate::ClimateCall &call) { | ||||
|     if (this->eco_id_.has_value()) { | ||||
|       const bool eco = preset == climate::CLIMATE_PRESET_ECO; | ||||
|       ESP_LOGV(TAG, "Setting eco: %s", ONOFF(eco)); | ||||
|       this->parent_->set_boolean_datapoint_value(*this->eco_id_, eco); | ||||
|       if (this->eco_type_ == TuyaDatapointType::ENUM) { | ||||
|         this->parent_->set_enum_datapoint_value(*this->eco_id_, eco); | ||||
|       } else { | ||||
|         this->parent_->set_boolean_datapoint_value(*this->eco_id_, eco); | ||||
|       } | ||||
|     } | ||||
|     if (this->sleep_id_.has_value()) { | ||||
|       const bool sleep = preset == climate::CLIMATE_PRESET_SLEEP; | ||||
|   | ||||
| @@ -104,6 +104,7 @@ class TuyaClimate : public climate::Climate, public Component { | ||||
|   optional<uint8_t> eco_id_{}; | ||||
|   optional<uint8_t> sleep_id_{}; | ||||
|   optional<float> eco_temperature_{}; | ||||
|   TuyaDatapointType eco_type_{}; | ||||
|   uint8_t active_state_; | ||||
|   uint8_t fan_state_; | ||||
|   optional<uint8_t> swing_vertical_id_{}; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user