Commit Graph
13953 Commits
Author SHA1 Message Date
J. Nick Koston 95af5c233e [wifi] Distinguish failed roam vs scan-induced disconnect in log
Split the RECONNECTING log message into two cases:
- "Reconnected after failed roam" when a specific roam target was
  set but we ended up on a different AP
- "Reconnected after roam scan" when no roam target was set (the
  disconnect was caused by going off-channel during the scan itself)
2026-03-23 13:27:35 -10:00
J. Nick Koston 0814685af0 [wifi] Review fixes: clear grace period on reconnect, log BSSID, fix layout
- Clear roaming_scan_end_ on successful reconnect to prevent grace
  period from incorrectly applying to a second disconnect
- Log target BSSID in "Roam successful (via retry)" message
- Move bssid_t roaming_target_bssid_ to 1-byte section to avoid
  2 bytes struct padding before ap_timeout_
2026-03-23 13:11:42 -10:00
J. Nick Koston b357758369 [wifi] Fix use-after-free: read target BSSID before releasing scan results
best is a pointer into scan_result_. Move roaming_target_bssid_
assignment before release_scan_results_() to avoid dangling pointer.
2026-03-23 13:09:37 -10:00
J. Nick Koston ea37542b41 [wifi] Track roam target BSSID to detect successful roam via retry
When a roam connection fails on the first attempt, retry_connect()
transitions to RECONNECTING. The subsequent scan-based retry may
connect to the same better AP, but the success handler treated all
RECONNECTING connections as failed roams and preserved the attempts
counter. This meant a successful roam (that needed two tries) would
incorrectly consume an attempt.

Fix by storing the roam target BSSID and checking it on reconnection.
If the device connected to the intended target, reset the counter
(successful roam). If it fell back to a different AP, preserve the
counter (failed roam, prevent ping-pong).
2026-03-23 13:05:15 -10:00
J. Nick Koston 96657f71a2 [wifi] Fix roaming counter reset from delayed disconnect after scan
On ESP8266, the roaming scan goes off-channel for ~3 seconds. Some
APs aggressively disconnect the client (Beacon Timeout) 8-20 seconds
after the scan finishes. By that time, process_roaming_scan_() has
already set roaming_state_ back to IDLE. When retry_connect() runs,
it sees IDLE and calls clear_roaming_state_(), resetting the attempts
counter to 0. This creates an infinite loop of "attempt 1/3" every
5 minutes.

The aggressive AP behavior cannot be fixed from the ESP side, but we
can prevent the counter from resetting so roaming eventually stops
after 3 attempts.

Fix by recording when the roaming scan completes and adding a 30s
grace period. If a disconnect occurs within that window, the state
transitions to RECONNECTING (preserving the counter) instead of
clearing it.

Closes https://github.com/esphome/esphome/issues/15124
2026-03-23 12:34:56 -10:00
dependabot[bot] 332118db56 Bump pytest-cov from 7.0.0 to 7.1.0 (#15123)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-23 11:44:26 -10:00
Clyde Stubbs 6956bf7e53 [text] Add text_sensor for read-only view of text component (#15090) 2026-03-24 10:24:25 +13:00
Daniel KentandJonathan Swoboda 11b829dda1 [spa06_spi] Add SPA06-003 Temperature and Pressure Sensor - SPI support (Part 3 of 3) (#14523)
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com>
2026-03-23 15:59:17 -04:00
J. Nick Koston 1e16b30380 [ethernet] Add ENC28J60 SPI Ethernet support (#14945) 2026-03-23 19:18:58 +00:00
Daniel Kent 4c1363b104 [spi] Add LOG_SPI_DEVICE macro (#15118) 2026-03-23 15:07:40 -04:00
J. Nick Koston 9da0c5bc85 [wifi] Fix roaming attempt counter reset on disconnect during scan (#15099) 2026-03-23 08:47:15 -10:00
J. Nick Koston 4b0c711f77 [ci] Ban std::bind in new C++ code (#14969) 2026-03-23 08:23:35 -10:00
J. Nick Koston 9385f16128 [text_sensor] Guard raw_callback_ behind USE_TEXT_SENSOR_FILTER, save 4 bytes per instance (#15097) 2026-03-23 08:23:22 -10:00
J. Nick Koston 36d2e58b11 [api] Make ProtoDecodableMessage::decode() non-virtual (#15076) 2026-03-23 08:23:08 -10:00
J. Nick Koston 03d6b36fe0 [gpio] Compile out interlock fields when unused (#15111) 2026-03-23 08:22:38 -10:00
J. Nick Koston 3b5b51b4f0 [time] Point to valid IANA timezone list on validation failure (#15110) 2026-03-23 08:22:25 -10:00
Clyde Stubbs e8c5dfca3e [lvgl] Various fixes (#15098) 2026-03-23 12:09:30 -04:00
Kevin Ahrendt 5a984b54cf [audio] Bump microOpus to avoid creating an extra opus-staged directory (#14974) 2026-03-23 08:31:05 -04:00
Simone RossettoandJ. Nick Koston 43879964bd [wireguard] bump esp_wireguard to 0.4.4 for mbedtls 4.0+ compatibility (#15104)
Co-authored-by: J. Nick Koston <nick@koston.org>
2026-03-22 23:03:19 -10:00
J. Nick Koston 5560c9eef7 [test] Fix flakey ld2412 integration test race condition (#15100) 2026-03-22 21:10:51 -10:00
J. Nick Koston f4097d5a95 [api] Devirtualize API command dispatch (#15044) 2026-03-23 19:57:40 +13:00
Keith BurzinskiandClaude Sonnet 4.6 225330413a [uart] Rename FlushResult to UARTFlushResult with UART_FLUSH_RESULT_ prefix (#15101)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23 01:55:14 -05:00
J. Nick Koston e67b5a78d0 [esp32] Patch DRAM segment for testing mode to fix grouped component test overflow (#15102) 2026-03-23 01:51:40 -05:00
J. Nick Koston baf365404c [network] Inline get_use_address() to eliminate function call overhead (#14942) 2026-03-23 04:18:43 +00:00
J. Nick Koston 0de2c758aa [scheduler] Use placement-new for std::function move in set_timer_common_ (#14757) 2026-03-23 16:31:27 +13:00
J. Nick Koston 597bb18543 [benchmark] Add binary sensor publish and sensor filter benchmarks (#15035) 2026-03-23 16:30:57 +13:00
Jesse Hills ebdf20adc0 Merge branch 'release' into dev 2026-03-23 16:10:17 +13:00
Jesse Hills 7ecdf6db2e Merge pull request #15084 from esphome/bump-2026.3.1
2026.3.1
2026.3.1
2026-03-23 16:09:32 +13:00
J. Nick Koston 8a3b5a8def [core] Fix placement new storage name for templated types (#15096) 2026-03-23 16:09:23 +13:00
J. Nick Koston 98d9fd76b3 [mqtt] Fix const-correctness for trigger constructors (#15093) 2026-03-22 16:27:20 -10:00
J. Nick Koston 6992219e34 [core] Attribute placement new storage symbols to components (#15092) 2026-03-22 16:27:07 -10:00
J. Nick Koston fbe3e7d99c [api] Emit raw tag+value writes for forced fixed32 key fields (#15051) 2026-03-22 15:28:46 -10:00
J. Nick Koston 9cdc17566a [combination] Use FixedVector and parent pointer to enable inline Callback storage (#14947) 2026-03-22 15:06:45 -10:00
cd05462e9f [core] Use placement new allocation for Pvariables (#15079)
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
Co-authored-by: J. Nick Koston <nick@koston.org>
2026-03-22 14:42:04 -10:00
J. Nick KostonandClaude Opus 4.6 83d02c602a [logger] Fix dummy_main.cpp Logger constructor for clang-tidy (#15088)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 13:25:04 +13:00
J. Nick KostonandClaude Opus 4.6 e85065b1c4 [logger] Fix dummy_main.cpp Logger constructor for clang-tidy (#15088)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 14:06:00 -10:00
J. Nick Koston d0e705d948 [core] Inline Application::loop() to eliminate stack frame (#15041) 2026-03-22 12:46:28 -10:00
J. Nick Koston 2c06464f7b [packet_transport] Use FixedVector and parent pointer to enable inline Callback storage (#14946) 2026-03-22 12:41:54 -10:00
J. Nick Koston 84727b1f71 [esp32] Validate eFuse MAC reads and reject garbage MACs (#15049) 2026-03-22 12:41:01 -10:00
J. Nick Koston aef987dccf [core] Fix Callback::create memcpy from function reference (#14995) 2026-03-22 12:37:46 -10:00
J. Nick Koston b2b61bea6a [web_server_idf] Inline send() to reduce httpd task stack depth (#15045) 2026-03-22 12:33:06 -10:00
J. Nick Koston 30f66be1da [esp32] Mention ignore_pin_validation_error in flash pin error message (#14998) 2026-03-22 12:32:42 -10:00
J. Nick Koston 6caa9ee227 [logger] Move log level lookup tables to PROGMEM (#15003) 2026-03-22 12:32:08 -10:00
J. Nick Koston 9152f77cdd [core] Reduce automation call chain stack depth (#15042) 2026-03-22 12:31:48 -10:00
J. Nick Koston 4d09eb2cec [tests] Fix flaky ld24xx integration tests by disabling API batching (#15050) 2026-03-22 12:29:28 -10:00
J. Nick Koston 5cc4f6e85a [logger] Add task_log_buffer_zephyr.cpp to platform source filter (#15081) 2026-03-22 12:29:12 -10:00
J. Nick Koston 6d16c57747 [sht4x] Add missing hal.h include for millis() on ESP-IDF (#15087) 2026-03-23 11:23:21 +13:00
J. Nick Koston 27f3a5f5f4 [sht4x] Add missing hal.h include for millis() on ESP-IDF (#15087) 2026-03-22 11:54:54 -10:00
J. Nick Koston 45c0e6ef7f [logger] Fix unit test Logger constructor call (#15086) 2026-03-23 09:52:46 +13:00
J. Nick Koston 593dbc9e67 [logger] Fix unit test and benchmark Logger constructor calls (#15085) 2026-03-23 09:50:58 +13:00