diff --git a/esphome/components/wifi/wifi_component.cpp b/esphome/components/wifi/wifi_component.cpp index fc47d3aa00e..38585e5093b 100644 --- a/esphome/components/wifi/wifi_component.cpp +++ b/esphome/components/wifi/wifi_component.cpp @@ -1595,9 +1595,12 @@ void WiFiComponent::check_connecting_finished(uint32_t now) { format_mac_addr_upper(current_bssid.data(), bssid_buf); ESP_LOGD(TAG, "Roam successful (via retry) to %s", bssid_buf); this->roaming_attempts_ = 0; - } else { - // Failed roam, reconnected to different AP - keep attempts to prevent ping-pong + } else if (this->roaming_target_bssid_ != bssid_t{}) { + // Failed roam to specific target, reconnected to different AP - keep attempts to prevent ping-pong ESP_LOGD(TAG, "Reconnected after failed roam (attempt %u/%u)", this->roaming_attempts_, ROAMING_MAX_ATTEMPTS); + } else { + // Reconnected after scan-induced disconnect (no roam target) - keep attempts + ESP_LOGD(TAG, "Reconnected after roam scan (attempt %u/%u)", this->roaming_attempts_, ROAMING_MAX_ATTEMPTS); } } else { // Normal connection (boot, credentials changed, etc.)