Commit Graph

2869 Commits

Author SHA1 Message Date
J. Nick Koston
bd7e1e8526 Merge remote-tracking branch 'origin/fix-water-heater-device-id' into integration 2026-02-22 16:58:32 -06:00
J. Nick Koston
cdb2e32518 [water_heater] Fix device_id missing from state responses
Water heater was the only entity type that directly called
encode_message_to_buffer() instead of fill_and_encode_entity_state().
This meant device_id was never set on WaterHeaterStateResponse,
causing entities with device_id to show as unknown in Home Assistant.

Expand the device_id integration test to cover all entity types:
cover, fan, lock, number, select, text, valve, water_heater,
alarm_control_panel, date, time, datetime, and event.

Closes https://github.com/esphome/esphome/issues/14206
2026-02-22 16:43:08 -06:00
J. Nick Koston
fc56165440 Merge remote-tracking branch 'origin/logger-compile-time-tx-buffer' into integration 2026-02-22 13:52:53 -06:00
J. Nick Koston
649aec69d7 [logger] Make tx_buffer_ compile-time sized
Replace the heap-allocated tx_buffer_ (new char[]) with a compile-time
sized inline array using ESPHOME_LOGGER_TX_BUFFER_SIZE define. This
eliminates a heap allocation during Logger construction, saving ~513
bytes of heap on memory-constrained devices like BK72xx.

Changes:
- Add ESPHOME_LOGGER_TX_BUFFER_SIZE define set from Python config
- Change tx_buffer_ from char* to char[ESPHOME_LOGGER_TX_BUFFER_SIZE+1]
- Remove tx_buffer_size_ member field
- Update constructor to no longer take tx_buffer_size parameter
- Update all references to use the compile-time constant
2026-02-22 12:56:28 -06:00
J. Nick Koston
1fa340c6a4 Merge remote-tracking branch 'origin/dev' into integration 2026-02-22 10:23:01 -06:00
J. Nick Koston
49e4ae54be [bme68x_bsec2] Fix compilation on ESP32 Arduino (#14194) 2026-02-22 05:22:59 +00:00
J. Nick Koston
c98b955881 Merge remote-tracking branch 'origin/pack-entity-strings' into integration 2026-02-21 22:13:39 -06:00
J. Nick Koston
5fd0ee1717 Merge branch 'dev' into pack-entity-strings 2026-02-21 22:12:49 -06:00
J. Nick Koston
655968af66 Merge remote-tracking branch 'origin/api-stringref-user-services' into integration 2026-02-21 22:10:03 -06:00
J. Nick Koston
d21d897766 deferred 2026-02-21 21:12:31 -06:00
J. Nick Koston
38058d0308 deferred 2026-02-21 21:07:21 -06:00
J. Nick Koston
fa343aa1ba tweaks 2026-02-21 20:49:49 -06:00
J. Nick Koston
ec1dbd39ae tests 2026-02-21 20:37:28 -06:00
J. Nick Koston
d5c9c56fdf [platformio] Add exponential backoff and session reset to download retries (#14191) 2026-02-21 19:41:43 -06:00
J. Nick Koston
f87a0b24a9 Merge remote-tracking branch 'origin/libretiny-lwip-tune' into integration 2026-02-21 17:34:47 -06:00
J. Nick Koston
e74506b957 Merge branch 'scheduler_de_template' into integration 2026-02-21 17:34:37 -06:00
J. Nick Koston
5a07908dfa [api] Fix build error when lambda returns StringRef in homeassistant.event data (#14187) 2026-02-21 13:54:20 -06:00
tomaszduda23
48ba007c22 [nrf52] print line number after crash in logs (#14165) 2026-02-21 14:16:20 -05:00
J. Nick Koston
482721d1ce [libretiny] Tune oversized lwIP defaults for ESPHome
The Beken/RTL SDKs ship lwIP defaults tuned for a general-purpose WiFi
SoC: TCP_SND_BUF=10*MSS (14.6KB), MEM_SIZE=32KB, 12 TCP + 22 UDP
sockets. These waste significant RAM on memory-constrained chips.
ESPAsyncWebServer allocates malloc(tcp_sndbuf()) per response chunk,
and at 14.6KB this causes OOM on BK7231N.

This tunes lwIP to match ESP32/ESP8266 ranges:
- TCP_SND_BUF/TCP_WND: 4*MSS (was 10*MSS)
- MEM_SIZE: 12KB BK72XX / 16KB RTL,LN (was 32KB)
- Socket counts: dynamic from component registrations
- All derived pool sizes adjusted accordingly

Also splits socket consumer tracking into TCP/UDP, adds
get_socket_counts() API, and updates ESP32 to use it.

Closes https://github.com/esphome/esphome/issues/14095
2026-02-21 11:50:29 -06:00
J. Nick Koston
7fb09da7cf [dsmr] Add deprecated std::string overload for set_decryption_key (#14180) 2026-02-21 11:08:13 -06:00
Sxt Fov
6ecb01dedc [cc1101] actions to change general and tuner settings (#14141)
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com>
2026-02-21 08:45:15 -05:00
Clyde Stubbs
518f08b909 [mipi_dsi] Disallow swap_xy (#14124) 2026-02-21 19:51:13 +11:00
J. Nick Koston
f1578351aa empty 2026-02-20 22:46:59 -06:00
J. Nick Koston
4eac632939 pack_entity_strings 2026-02-20 22:36:15 -06:00
J. Nick Koston
5de56714c0 Merge branch 'setup_heap_stats' into integration 2026-02-20 19:31:55 -06:00
J. Nick Koston
c6c01f85af [setup_heap_stats] Add component to track per-component heap allocation during boot
Tracks heap usage per component during both construction and setup() phases.
Logs deltas inline as components are registered and set up, then prints a
sorted summary after setup() completes. Storage is freed after the summary.

This is a diagnostic tool - not intended for production use. It was used to
discover the logger's unused UART event queue allocation (#14168).
2026-02-20 19:29:41 -06:00
J. Nick Koston
09ac3bc1cb Merge remote-tracking branch 'origin/fix_logger_loop_disable' into integration 2026-02-20 17:04:06 -06:00
tomaszduda23
1d3054ef5e [nrf52,logger] Early debug (#11685) 2026-02-20 16:12:50 -06:00
Jonathan Swoboda
db6aa58f40 [max7219digit] Fix typo in action names (#14162)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 16:06:46 -05:00
J. Nick Koston
4c70f2001a Merge branch 'fix_logger_loop_disable' into integration 2026-02-20 13:21:08 -06:00
Jonathan Swoboda
403235e2d4 [wifi] Add band_mode configuration for ESP32-C5 dual-band WiFi (#14148)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 11:20:29 -05:00
Jonathan Swoboda
9ce01fc369 [esp32] Add engineering_sample option for ESP32-P4 (#14139)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 11:20:05 -05:00
J. Nick Koston
d4765bb21d Merge remote-tracking branch 'upstream/dev' into integration 2026-02-19 22:34:05 -06:00
Jonathan Swoboda
efe54e3b5e [ld2410/ld2450] Replace header sync with buffer size increase for frame resync (#14138)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 23:25:25 -05:00
J. Nick Koston
f4e412d1d6 Merge remote-tracking branch 'swoboda1337/fix/ld24xx-buffer-size' into integration 2026-02-19 22:02:34 -06:00
Jonathan Swoboda
dbe3dfb265 [ld2410/ld2450] Replace header sync with buffer size increase for frame resync
Reverts the frame header synchronization added in #14135 and #14136
in favor of a simpler fix: increasing MAX_LINE_LENGTH so that the
existing footer-based resynchronization can recover after losing sync.

Both components already check for frame footers at every byte position,
which naturally resyncs the parser. The problem was that the buffers
were sized exactly to fit the largest frame, so a desynced parser's
footer could land at the overflow boundary and get discarded. Increasing
the buffer by 4 bytes (footer size) ensures the footer always lands
inside the buffer.

- ld2450: 41 -> 45 (zone query response = 40 bytes + 1 null + 4 footer)
- ld2410: 46 -> 50 (engineering data frame = 45 bytes + 1 null + 4 footer)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 22:47:58 -05:00
Jonathan Swoboda
b67b2cc3ab [ld2450] Add frame header synchronization to fix initialization regression (#14135)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2026-02-20 02:56:20 +00:00
J. Nick Koston
b6913a9fb3 Merge branch 'fix/ld2450-frame-sync' into integration 2026-02-19 20:44:15 -06:00
Jonathan Swoboda
3dcaa552f7 [ld2450] Add frame header synchronization to fix initialization regression
The batch UART read change in #13818 exposed a latent bug where the
UART parser could start accumulating bytes mid-frame after module
restart, causing an infinite cycle of "Max command length exceeded"
warnings that prevented initialization.

Add header validation for the first 4 bytes of each frame, ensuring
the parser only accumulates data starting from a valid DATA_FRAME_HEADER
(AA FF 03 00) or CMD_FRAME_HEADER (FD FC FB FA). Non-matching bytes are
discarded until a valid frame start is found.

Fixes #14131

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 21:37:09 -05:00
J. Nick Koston
d29288547e [core] Use constexpr for PROGMEM arrays (#14127)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 18:54:33 -06:00
J. Nick Koston
0e6d0a0918 Merge branch 'constexpr-progmem' into integration 2026-02-19 16:40:31 -06:00
J. Nick Koston
41346716cc [core] Use constexpr for PROGMEM arrays
Change progmem_array codegen from `static const` to `static constexpr`.
This ensures the compiler evaluates the array at compile time with no
runtime initialization, and is the correct qualifier for constant data
known at compile time.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 16:33:38 -06:00
J. Nick Koston
4aa8f57d36 [json] Add SerializationBuffer for stack-first JSON serialization (#13625) 2026-02-19 14:08:44 -06:00
J. Nick Koston
7ff3ac59cb Merge remote-tracking branch 'origin/dev' into integration 2026-02-19 11:48:30 -06:00
J. Nick Koston
7a5c3cee0d [esp32_ble] Enable CONFIG_BT_RELEASE_IRAM on ESP32-C2 (#14109)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 17:41:00 +00:00
Jonathan Swoboda
9aa17984df [pulse_counter] Fix build failure when use_pcnt is false (#14111)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 17:25:26 +00:00
J. Nick Koston
04268ebe1d Merge remote-tracking branch 'swoboda1337/remove-ethernet-clk-mode-deprecated' into integration 2026-02-19 10:35:53 -06:00
Jonathan Swoboda
5304750215 [socket] Fix IPv6 compilation error on host platform (#14101)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 16:00:34 +00:00
J. Nick Koston
8728c5c4ca Merge remote-tracking branch 'origin/optimize-warn-blocking-guard' into integration 2026-02-19 09:05:00 -06:00
Rodrigo Martín
4cc1e6a910 [esp32_ble_server] add test for lambda characteristic (#14091) 2026-02-19 09:23:22 -05:00