diff --git a/esphome/components/climate/climate.cpp b/esphome/components/climate/climate.cpp index c820831f90..e7a454d459 100644 --- a/esphome/components/climate/climate.cpp +++ b/esphome/components/climate/climate.cpp @@ -368,7 +368,7 @@ void Climate::save_state_() { const auto &supported = traits.get_supported_custom_fan_modes(); std::vector vec{supported.begin(), supported.end()}; for (size_t i = 0; i < vec.size(); i++) { - if (vec[i] == custom_fan_mode.value()) { + if (vec[i] == custom_fan_mode) { state.custom_fan_mode = i; break; } @@ -383,7 +383,7 @@ void Climate::save_state_() { const auto &supported = traits.get_supported_custom_presets(); std::vector vec{supported.begin(), supported.end()}; for (size_t i = 0; i < vec.size(); i++) { - if (vec[i] == custom_preset.value()) { + if (vec[i] == custom_preset) { state.custom_preset = i; break; } diff --git a/esphome/components/web_server/web_server.cpp b/esphome/components/web_server/web_server.cpp index 0a97e542c3..03bc17f4fa 100644 --- a/esphome/components/web_server/web_server.cpp +++ b/esphome/components/web_server/web_server.cpp @@ -108,14 +108,14 @@ static UrlMatch match_url(const char *url_ptr, size_t url_len, bool only_domain) void DeferredUpdateEventSource::deq_push_back_with_dedup_(void *source, message_generator_t *message_generator) { DeferredEvent item(source, message_generator); - auto iter = std::find_if(this->deferred_queue_.begin(), this->deferred_queue_.end(), - [&item](const DeferredEvent &test) -> bool { return test == item; }); - - if (iter != this->deferred_queue_.end()) { - (*iter) = item; - } else { - this->deferred_queue_.push_back(item); + // Use range-based for loop instead of std::find_if to reduce template instantiation overhead and binary size + for (auto &event : this->deferred_queue_) { + if (event == item) { + event = item; + return; + } } + this->deferred_queue_.push_back(item); } void DeferredUpdateEventSource::process_deferred_queue_() {