Commit Graph
22190 Commits
Author SHA1 Message Date
J. Nick Koston 75c952eaef Merge branch 'template_water_heater_onoff' into integration 2026-02-10 06:21:45 -06:00
J. Nick Koston 1b3f3c04b9 Use mutable globals in water heater test fixture
Use globals for away/is_on lambdas and sync them in set_action
so optimistic state changes persist across loop iterations.
2026-02-10 06:17:52 -06:00
J. Nick Koston 6410c6cf9b improve tests 2026-02-10 06:14:41 -06:00
J. Nick Koston 0503760af4 Add integration tests for toggling away and on/off state flags 2026-02-10 06:09:18 -06:00
J. Nick Koston 820afea83a Fix publish action skipping away: false and is_on: false
The walrus operator treats false as falsy, so publishing
away: false or is_on: false was silently ignored. Use key
presence check instead.
2026-02-10 06:06:54 -06:00
J. Nick Koston 22b038f6a4 Import WaterHeaterFeature from aioesphomeapi instead of redefining locally 2026-02-10 05:47:46 -06:00
J. Nick Koston 3410ee2420 Merge branch 'dev' into template_water_heater_onoff 2026-02-10 05:46:27 -06:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 1c3af30299 Bump aioesphomeapi from 43.14.0 to 44.0.0 (#13906)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-10 11:45:31 +00:00
J. Nick Koston 50aaea6bf1 Merge branch 'dev' into template_water_heater_onoff 2026-02-10 05:38:01 -06:00
tronikosandJ. Nick Koston 5caed68cd9 [api] Deprecate WATER_HEATER_COMMAND_HAS_STATE (#13892)
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2026-02-10 05:36:56 -06:00
Cody CutrerandCopilot b97a728cf1 [ld2450] add on_data callback (#13601)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-09 22:40:44 -05:00
J. Nick Koston 828fa3c408 Merge branch 'ble-loop-extract-transitions' into integration 2026-02-09 20:59:24 -06:00
J. Nick Koston fca26ce944 [esp32_ble] Extract state transitions from ESP32BLE::loop() hot path 2026-02-09 20:57:36 -06:00
J. Nick Koston b22290b2bb Merge branch 'api-server-extract-accept' into integration 2026-02-09 20:43:45 -06:00
J. Nick Koston a671f6ea85 Use if/else instead of continue in client loop 2026-02-09 20:42:25 -06:00
J. Nick Koston 0c62781539 Extract remove_client_() from APIServer::loop() hot path 2026-02-09 20:42:09 -06:00
J. Nick Koston 7b3ab7f7f0 Merge branch 'api-server-extract-accept' into integration 2026-02-09 20:35:24 -06:00
J. Nick Koston e6c743ea67 [api] Extract accept_new_connections_() from APIServer::loop() hot path 2026-02-09 20:34:11 -06:00
J. Nick Koston 94684cdc0b Revert early returns in process_active_iterator_()
The if/else pattern produces smaller code than early returns.
2026-02-09 20:20:33 -06:00
J. Nick Koston 5c8f1a180b Merge branch 'api-dedup-iterator-batch' into integration 2026-02-09 20:17:54 -06:00
J. Nick Koston c53baf70c7 Collapse else chain in process_active_iterator_() with early returns 2026-02-09 20:16:09 -06:00
J. Nick Koston 041c43fb32 Add INITIAL_STATE comment to else branch 2026-02-09 20:14:54 -06:00
J. Nick Koston b4741ade0d Remove unreachable NONE case from process_active_iterator_() 2026-02-09 20:13:57 -06:00
J. Nick Koston 2c3a92db97 Add forward declaration for ComponentIterator in api_connection.h 2026-02-09 20:11:45 -06:00
J. Nick Koston fc91a4d7a3 Extract iterator switch from loop() into process_active_iterator_()
The iterator switch only runs during initial connection handshake.
In steady state active_iterator_ is always NONE, so the entire
switch block is cold code that wastes icache in the hot loop path.
2026-02-09 20:10:44 -06:00
J. Nick Koston eb26b5d45c Merge branch 'api-dedup-iterator-batch' into integration 2026-02-09 20:02:32 -06:00
J. Nick Koston 842e0a9073 Merge branch 'app-loop-extract-dump-config' into integration 2026-02-09 20:02:27 -06:00
J. Nick Koston 8f367571f8 Add precondition comment to process_dump_config_() 2026-02-09 20:01:43 -06:00
J. Nick Koston 9bf90eff01 [api] De-duplicate iterator batch processing in APIConnection::loop()
Replace the process_iterator_batch_ template (instantiated separately
for ListEntitiesIterator and InitialStateIterator) with a single
non-template method taking a ComponentIterator& base class reference.

Both iterators inherit from ComponentIterator, and the template only
called completed() and advance() which are both base class methods.
The two template instantiations generated ~160 bytes of duplicate code
in APIConnection::loop(). The single non-template version is 79 bytes,
saving 61 bytes net flash and removing 140 bytes of cold
connect/reconnect code from the hot loop path.

Also move the duplicated completed() method from ListEntitiesIterator
and InitialStateIterator to the ComponentIterator base class where
state_ is defined.
2026-02-09 19:57:29 -06:00
J. Nick Koston 1213774168 [core] Extract dump_config from Application::loop() hot path
Extract the dump_config block (version/chip info logging + per-component
dump_config iteration) into a separate noinline process_dump_config_()
method.

This code runs once at startup and once on API reconnect, but was
inlined into loop() which runs ~7000 times/minute. On ESP32 the
dump_config block compiled to ~140 bytes (38% of loop's 368 bytes),
including esp_chip_info(), integer division for revision formatting,
and multiple ESP_LOG calls. Extracting it frees ~2 icache lines for
the hot path.
2026-02-09 19:43:25 -06:00
J. Nick Koston 80fd7b2e49 Merge branch 'scheduler-reduce-hot-path' into integration 2026-02-09 19:32:16 -06:00
J. Nick Koston c1328f1b3a [scheduler] Reduce set_timer_common_ hot path size by 25%
Restructure set_timer_common_ to reduce icache pressure on the hot path
(538 → 405 bytes on ESP32):

- Extract calculate_interval_offset_ as noinline helper - float math and
  random_float() only needed for intervals, not timeouts
- Extract is_retry_cancelled_locked_ as noinline helper - retry path is
  cold and deprecated (removal planned for 2026.8.0)
- Merge duplicated cancel+push_back epilogue by computing a target vector
  pointer (defer_queue_ vs to_add_) before the branch, converging both
  paths at a single cancel+push sequence
- Replace 4-way switch on name_type with unified set_name() method that
  does a single branch + store instead of 4 separate bitfield RMW
  sequences
- Remove now-unused individual name setters (set_static_name,
  set_hashed_name, set_numeric_id, set_internal_id)
2026-02-09 19:24:15 -06:00
Jonathan SwobodaandClaude Opus 4.6 dcbb020479 [uart] Fix available() return type to size_t across components (#13898)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 20:02:41 -05:00
J. Nick Koston b77bcf6460 Merge branch 'fix-available-size-t' into integration 2026-02-09 18:57:08 -06:00
Jonathan SwobodaandClaude Opus 4.6 4d9a75d808 Fix available() return type to size_t across UART components
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 19:42:05 -05:00
J. Nick Koston 59637ceda5 Merge branch 'peername_no_double_ram' into integration 2026-02-09 18:40:28 -06:00
J. Nick Koston 4c006d98af Merge remote-tracking branch 'upstream/dev' into peername_no_double_ram
# Conflicts:
#	esphome/components/api/api_connection.cpp
2026-02-09 18:38:02 -06:00
J. Nick Koston 33c1040668 Merge remote-tracking branch 'upstream/dev' into integration
# Conflicts:
#	esphome/components/dlms_meter/dlms_meter.cpp
#	esphome/components/hlk_fm22x/hlk_fm22x.cpp
#	esphome/components/ld2420/ld2420.cpp
2026-02-09 18:36:55 -06:00
J. Nick Koston 87ac263264 [dsmr] Batch UART reads to reduce per-loop overhead (#13826) 2026-02-10 00:32:52 +00:00
Sean Kelly 097901e9c8 [aqi] Fix AQI calculation for specific pm2.5 or pm10 readings (#13770) 2026-02-09 19:30:37 -05:00
J. Nick KostonandJonathan Swoboda 01a90074ba [ld2420] Batch UART reads to reduce loop overhead (#13821)
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com>
2026-02-10 00:25:34 +00:00
J. Nick KostonandJonathan Swoboda 57b85a8400 [dlms_meter] Batch UART reads to reduce per-loop overhead (#13828)
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com>
2026-02-10 00:24:20 +00:00
J. Nick Koston 2edfcf278f [hlk_fm22x] Replace per-cycle vector allocation with member buffer (#13859) 2026-02-09 18:21:10 -06:00
J. Nick Koston bcd4a9fc39 [pylontech] Batch UART reads to reduce loop overhead (#13824) 2026-02-09 18:20:53 -06:00
J. Nick Koston 78df8be31f [logger] Resolve thread name once and pass through logging chain (#13836) 2026-02-09 18:16:27 -06:00
J. Nick Koston dacc557a16 [uart] Convert parity_to_str to PROGMEM_STRING_TABLE (#13805) 2026-02-09 18:15:48 -06:00
J. Nick KostonandJonathan Swoboda 3767c5ec91 [scheduler] Make core timer ID collisions impossible with type-safe internal IDs (#13882)
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com>
2026-02-09 16:48:08 -06:00
J. Nick Koston 13ef9d0fcd Merge remote-tracking branch 'upstream/dev' into integration 2026-02-09 16:46:03 -06:00
George Joseph 7c1327f96a [mipi_dsi] Add WAVESHARE-ESP32-P4-WIFI6-TOUCH-LCD 3.4C and 4C (#13840) 2026-02-10 09:44:47 +11:00
Jonathan SwobodaandClaude Opus 4.6 475db750e0 [uart] Change available() return type from int to size_t (#13893)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 17:41:16 -05:00