From 59b4a1f5541ac053a5968efabddb6bd7402a6368 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 17 Apr 2025 17:04:43 +1200 Subject: [PATCH 1/8] Fix psram below idf 5 (#8584) --- esphome/components/psram/psram.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/esphome/components/psram/psram.cpp b/esphome/components/psram/psram.cpp index f592ada246..162543545e 100644 --- a/esphome/components/psram/psram.cpp +++ b/esphome/components/psram/psram.cpp @@ -1,7 +1,8 @@ #ifdef USE_ESP32 #include "psram.h" -#ifdef USE_ESP_IDF +#include +#if defined(USE_ESP_IDF) && ESP_IDF_VERSION_MAJOR >= 5 #include #endif // USE_ESP_IDF @@ -15,7 +16,7 @@ static const char *const TAG = "psram"; void PsramComponent::dump_config() { ESP_LOGCONFIG(TAG, "PSRAM:"); -#ifdef USE_ESP_IDF +#if defined(USE_ESP_IDF) && ESP_IDF_VERSION_MAJOR >= 5 bool available = esp_psram_is_initialized(); ESP_LOGCONFIG(TAG, " Available: %s", YESNO(available)); From 86033b661208cfa22f1fd8bbc38241aa8aa4b523 Mon Sep 17 00:00:00 2001 From: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com> Date: Tue, 22 Apr 2025 06:51:52 +1000 Subject: [PATCH 2/8] [lvgl] Ensure pages are created on the correct display (#8596) --- esphome/components/lvgl/lvgl_esphome.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/esphome/components/lvgl/lvgl_esphome.cpp b/esphome/components/lvgl/lvgl_esphome.cpp index 2560cd2168..2e5ba25851 100644 --- a/esphome/components/lvgl/lvgl_esphome.cpp +++ b/esphome/components/lvgl/lvgl_esphome.cpp @@ -120,6 +120,7 @@ void LvglComponent::add_event_cb(lv_obj_t *obj, event_callback_t callback, lv_ev void LvglComponent::add_page(LvPageType *page) { this->pages_.push_back(page); page->set_parent(this); + lv_disp_set_default(this->disp_); page->setup(this->pages_.size() - 1); } void LvglComponent::show_page(size_t index, lv_scr_load_anim_t anim, uint32_t time) { From aa6e172e14e042f27c4de2ed11a905789b19165f Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Mon, 21 Apr 2025 23:17:09 -1000 Subject: [PATCH 3/8] Fix BLE connection loop caused by timeout and pending disconnect race (#8597) --- esphome/components/bluetooth_proxy/bluetooth_proxy.cpp | 6 ++++++ esphome/components/esp32_ble_tracker/esp32_ble_tracker.h | 2 ++ 2 files changed, 8 insertions(+) diff --git a/esphome/components/bluetooth_proxy/bluetooth_proxy.cpp b/esphome/components/bluetooth_proxy/bluetooth_proxy.cpp index a263aca456..03213432cd 100644 --- a/esphome/components/bluetooth_proxy/bluetooth_proxy.cpp +++ b/esphome/components/bluetooth_proxy/bluetooth_proxy.cpp @@ -265,6 +265,12 @@ void BluetoothProxy::bluetooth_device_request(const api::BluetoothDeviceRequest connection->get_connection_index(), connection->address_str().c_str()); return; } else if (connection->state() == espbt::ClientState::CONNECTING) { + if (connection->disconnect_pending()) { + ESP_LOGW(TAG, "[%d] [%s] Connection request while pending disconnect, cancelling pending disconnect", + connection->get_connection_index(), connection->address_str().c_str()); + connection->cancel_pending_disconnect(); + return; + } ESP_LOGW(TAG, "[%d] [%s] Connection request ignored, already connecting", connection->get_connection_index(), connection->address_str().c_str()); return; diff --git a/esphome/components/esp32_ble_tracker/esp32_ble_tracker.h b/esphome/components/esp32_ble_tracker/esp32_ble_tracker.h index 99126f9173..8b712a01ea 100644 --- a/esphome/components/esp32_ble_tracker/esp32_ble_tracker.h +++ b/esphome/components/esp32_ble_tracker/esp32_ble_tracker.h @@ -173,6 +173,8 @@ class ESPBTClient : public ESPBTDeviceListener { virtual void gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param_t *param) = 0; virtual void connect() = 0; virtual void disconnect() = 0; + bool disconnect_pending() const { return this->want_disconnect_; } + void cancel_pending_disconnect() { this->want_disconnect_ = false; } virtual void set_state(ClientState st) { this->state_ = st; if (st == ClientState::IDLE) { From b940db65492b937d6abdea98ae45e735ee4b3d22 Mon Sep 17 00:00:00 2001 From: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com> Date: Wed, 23 Apr 2025 18:47:15 +1000 Subject: [PATCH 4/8] [online_image] Fix printf format; comment fixes (#8607) --- esphome/components/online_image/online_image.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/esphome/components/online_image/online_image.cpp b/esphome/components/online_image/online_image.cpp index 3411018901..cb4a3be9e8 100644 --- a/esphome/components/online_image/online_image.cpp +++ b/esphome/components/online_image/online_image.cpp @@ -111,7 +111,7 @@ void OnlineImage::update() { case ImageFormat::BMP: accept_mime_type = "image/bmp"; break; -#endif // ONLINE_IMAGE_BMP_SUPPORT +#endif // USE_ONLINE_IMAGE_BMP_SUPPORT #ifdef USE_ONLINE_IMAGE_JPEG_SUPPORT case ImageFormat::JPEG: accept_mime_type = "image/jpeg"; @@ -121,7 +121,7 @@ void OnlineImage::update() { case ImageFormat::PNG: accept_mime_type = "image/png"; break; -#endif // ONLINE_IMAGE_PNG_SUPPORT +#endif // USE_ONLINE_IMAGE_PNG_SUPPORT default: accept_mime_type = "image/*"; } @@ -159,7 +159,7 @@ void OnlineImage::update() { ESP_LOGD(TAG, "Allocating BMP decoder"); this->decoder_ = make_unique(this); } -#endif // ONLINE_IMAGE_BMP_SUPPORT +#endif // USE_ONLINE_IMAGE_BMP_SUPPORT #ifdef USE_ONLINE_IMAGE_JPEG_SUPPORT if (this->format_ == ImageFormat::JPEG) { ESP_LOGD(TAG, "Allocating JPEG decoder"); @@ -171,7 +171,7 @@ void OnlineImage::update() { ESP_LOGD(TAG, "Allocating PNG decoder"); this->decoder_ = make_unique(this); } -#endif // ONLINE_IMAGE_PNG_SUPPORT +#endif // USE_ONLINE_IMAGE_PNG_SUPPORT if (!this->decoder_) { ESP_LOGE(TAG, "Could not instantiate decoder. Image format unsupported: %d", this->format_); @@ -185,7 +185,7 @@ void OnlineImage::update() { this->download_error_callback_.call(); return; } - ESP_LOGI(TAG, "Downloading image (Size: %d)", total_size); + ESP_LOGI(TAG, "Downloading image (Size: %zu)", total_size); this->start_time_ = ::time(nullptr); } From 1c60038111b6357972fb6531f8e07e499f6f033a Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 23 Apr 2025 20:49:33 +1200 Subject: [PATCH 5/8] [watchdog] Fix for variants with single core (#8602) --- esphome/components/watchdog/watchdog.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/esphome/components/watchdog/watchdog.cpp b/esphome/components/watchdog/watchdog.cpp index 3a94a658e8..f6f2992a11 100644 --- a/esphome/components/watchdog/watchdog.cpp +++ b/esphome/components/watchdog/watchdog.cpp @@ -6,6 +6,7 @@ #include #include #ifdef USE_ESP32 +#include #include "esp_idf_version.h" #include "esp_task_wdt.h" #endif @@ -40,7 +41,7 @@ void WatchdogManager::set_timeout_(uint32_t timeout_ms) { #if ESP_IDF_VERSION_MAJOR >= 5 esp_task_wdt_config_t wdt_config = { .timeout_ms = timeout_ms, - .idle_core_mask = 0x03, + .idle_core_mask = (1 << SOC_CPU_CORES_NUM) - 1, .trigger_panic = true, }; esp_task_wdt_reconfigure(&wdt_config); From 5bfb5ccc348b68deddffed389e8f771f76ed791d Mon Sep 17 00:00:00 2001 From: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com> Date: Mon, 28 Apr 2025 10:19:50 +1000 Subject: [PATCH 6/8] [core] Fix setting of log level/verbose (#8600) --- esphome/log.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/esphome/log.py b/esphome/log.py index 835cd6b44d..516f27be45 100644 --- a/esphome/log.py +++ b/esphome/log.py @@ -74,13 +74,14 @@ def setup_log( colorama.init() - if log_level == logging.DEBUG: - CORE.verbose = True - elif log_level == logging.CRITICAL: - CORE.quiet = True - + # Setup logging - will map log level from string to constant logging.basicConfig(level=log_level) + if logging.root.level == logging.DEBUG: + CORE.verbose = True + elif logging.root.level == logging.CRITICAL: + CORE.quiet = True + logging.getLogger("urllib3").setLevel(logging.WARNING) logging.getLogger().handlers[0].setFormatter( From f096567ac750e3b7f943721c1b5ef7769f808238 Mon Sep 17 00:00:00 2001 From: Steffen Banhardt Date: Mon, 28 Apr 2025 21:18:46 +0200 Subject: [PATCH 7/8] =?UTF-8?q?Update=20ens160=5Fbase.cpp=20=E2=80=93=20fi?= =?UTF-8?q?x=20wrong=20double=20negative=20(#8639)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- esphome/components/ens160_base/ens160_base.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/esphome/components/ens160_base/ens160_base.cpp b/esphome/components/ens160_base/ens160_base.cpp index 71082c58c2..852328d4bb 100644 --- a/esphome/components/ens160_base/ens160_base.cpp +++ b/esphome/components/ens160_base/ens160_base.cpp @@ -187,7 +187,7 @@ void ENS160Component::update() { } return; case INVALID_OUTPUT: - ESP_LOGE(TAG, "ENS160 Invalid Status - No Invalid Output"); + ESP_LOGE(TAG, "ENS160 Invalid Status - No valid output"); this->status_set_warning(); return; } From 7900660bb879a214744f869480bc21128013a877 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 29 Apr 2025 11:46:20 +1200 Subject: [PATCH 8/8] Bump version to 2025.4.1 --- esphome/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/esphome/const.py b/esphome/const.py index 6fe79eb2c9..6d1ff157bf 100644 --- a/esphome/const.py +++ b/esphome/const.py @@ -1,6 +1,6 @@ """Constants used by esphome.""" -__version__ = "2025.4.0" +__version__ = "2025.4.1" ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_" VALID_SUBSTITUTIONS_CHARACTERS = (