Commit Graph
25389 Commits
Author SHA1 Message Date
J. Nick Koston 0e9936f9fa Merge remote-tracking branch 'upstream/dev' into integration 2026-03-20 15:14:58 -10:00
J. Nick KostonandCopilot 21e384cafd [esp32] Disable PicolibC Newlib compatibility shim on IDF 6.0+ (#15008)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-20 15:10:18 -10:00
J. Nick Koston 32db055b98 [number] Clean up NumberCall::perform() increment/decrement logic (#15000) 2026-03-20 15:09:28 -10:00
J. Nick Koston 2c87260046 [core] Optimize Component::is_ready() with bitmask check (#15005) 2026-03-20 15:09:13 -10:00
J. Nick Koston 51ccad8461 [preferences] Shorten TAG strings across all platforms (#15004) 2026-03-20 15:09:01 -10:00
J. Nick Koston 7f500c4b6e [modbus] Fix size_t format warning in clear_rx_buffer_ (#15002) 2026-03-20 15:08:46 -10:00
J. Nick Koston 564d155cb6 [wifi] Use LOG_STR_LITERAL for scan complete log on ESP8266 (#15001) 2026-03-20 15:08:33 -10:00
J. Nick Koston edf5542559 [analyze-memory] Attribute extern C symbols to components via source file mapping (#15006) 2026-03-20 15:05:17 -10:00
J. Nick Koston 51335e8830 [ledc] Fix deprecated intr_type warning on ESP-IDF 6.0+ (#15009) 2026-03-20 15:01:30 -10:00
J. Nick Koston 391ffe34f8 [rp2040] Fix get_mac_address_raw to use ethernet MAC when WiFi unavailable (#15033) 2026-03-20 15:01:11 -10:00
J. Nick Koston 12ead0408a [gpio] Use constexpr uint32_t timer ID for interlock timeout (#15010) 2026-03-20 15:00:56 -10:00
Daniel KentandJonathan Swoboda 2d39cc2540 [spa06_i2c] Add SPA06-003 Temperature and Pressure Sensor - I2C support (Part 2 of 3) (#14522)
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com>
2026-03-21 00:38:04 +00:00
J. Nick Koston 8662910be0 Merge remote-tracking branch 'origin/rp2040-ethernet-mac' into integration 2026-03-20 14:22:56 -10:00
J. Nick Koston 830f766f0c Merge remote-tracking branch 'upstream/fix-sht4x-heater-jitter' into integration 2026-03-20 14:22:50 -10:00
J. Nick Koston f8af7354b1 [rp2040] Fix get_mac_address_raw to use ethernet MAC when WiFi unavailable
On RP2040, get_mac_address_raw() only queried WiFi.macAddress(). When
ethernet is configured without WiFi, the MAC address was left
uninitialized, causing get_mac_address() and get_mac_address_pretty()
to return all zeros. This affects device identification (API, mDNS,
unique ID).

Unlike ESP32 which reads from eFuse (always available regardless of
network interface), RP2040 must query the actual network driver.

Fall back to ethernet::global_eth_component->get_eth_mac_address_raw()
when USE_ETHERNET is defined and USE_WIFI is not.
2026-03-20 14:17:49 -10:00
J. Nick Koston 0302a14fa2 [sht4x] Restore original comments removed in refactor 2026-03-20 14:10:40 -10:00
J. Nick Koston 464d333142 [sht4x] Fire heater after measurement instead of skipping cycles
Per swoboda1337's suggestion, run the heater after the measurement
read instead of before. This maximizes cooldown time before the
next reading and avoids skipping any measurement cycles.
2026-03-20 14:08:36 -10:00
J. Nick Koston a9a8f4cb3b [time] Fix timezone_offset() and recalc_timestamp_local() always returning UTC (#14996) 2026-03-20 13:58:14 -10:00
J. Nick Koston 8fa2e75afa [core] Add copy() method to StringRef for std::string compatibility (#15028) 2026-03-20 13:58:02 -10:00
J. Nick KostonandCopilot 0b01f9fc42 [web_server] Increase httpd task stack size to prevent stack overflow (#14997)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-20 13:57:51 -10:00
Jonathan Swoboda ed8c062d9f [esp32_touch] Fix initial state never published when sensor untouched (#15032) 2026-03-20 19:53:02 -04:00
J. Nick Koston c2b2aaddd1 [sht4x] Move timestamp update after successful command, add heater test
Only advance last_heater_millis_ after the heater command succeeds
so a failed write retries on the next cycle instead of silently
skipping.

Add heater settings to the test YAML to ensure CI exercises the
heater code path.
2026-03-20 12:57:53 -10:00
J. Nick Koston a73b5cc94a [sht4x] Ensure normal measurement between heater cycles
When heater_interval < update_interval, the heater would fire on
nearly every update cycle, skipping almost all real measurements.
Push the next eligible heater time forward by at least one
update_interval to guarantee at least one ambient reading between
heater activations.
2026-03-20 12:55:01 -10:00
J. Nick Koston 43ff2157b9 [sht4x] Fix heater causing measurement jitter
Integrate heater activation into the measurement cycle instead of
running it on an independent timer. The separate heater interval
could overlap with measurement polling, causing readings to be
taken while the sensor was still hot.

Now the heater fires during update() when due, skipping that
measurement cycle. The next regular update() takes an ambient
reading after the sensor has cooled.

Also replace magic numbers with named constexpr constants for
the datasheet conversion formulas.

Closes https://github.com/esphome/esphome/issues/15011
2026-03-20 12:49:24 -10:00
J. Nick Koston 3541dced07 Merge remote-tracking branch 'upstream/dev' into integration 2026-03-20 12:25:10 -10:00
J. Nick Koston 6a545efa62 Merge remote-tracking branch 'upstream/fix-httpd-stack-overflow' into integration 2026-03-20 12:25:07 -10:00
J. Nick KostonandCopilot c5471ebaad Update esphome/components/web_server_idf/web_server_idf.cpp
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-20 12:24:08 -10:00
J. Nick Koston 5e516e78e4 [wifi] Fix ESP8266 power_save_mode mapping (LIGHT/HIGH were swapped) (#15029) 2026-03-20 12:13:49 -10:00
J. Nick Koston 896b6ec8c9 [api] Increase noise handshake timeout to 60s for slow WiFi environments (#15022) 2026-03-20 17:06:23 -05:00
dependabot[bot] 9e7cdaf475 Bump aioesphomeapi from 44.6.1 to 44.6.2 (#15027)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-20 11:10:40 -10:00
dependabot[bot] a3fd1d5d00 Bump github/codeql-action from 4.33.0 to 4.34.1 (#15023)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-20 10:41:45 -10:00
dependabot[bot] 7257bed1e9 Bump CodSpeedHQ/action from 4.11.1 to 4.12.1 (#15024)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-20 10:41:20 -10:00
Javier Peletier 5a9977cf5c [lvgl] Fix arc indicator widget not registered in widget_map (#14986) 2026-03-21 07:35:41 +11:00
Keith Roehrenbeck 12b3aec567 [ld2450] Fix zone target counts including untracked ghost targets (#15026) 2026-03-20 10:11:57 -10:00
J. Nick Koston 4395492ba9 Merge remote-tracking branch 'upstream/gpio-switch-interlock-timeout-id' into integration 2026-03-20 00:01:58 -10:00
J. Nick Koston b51d6165df [gpio] Use constexpr uint32_t timer ID for interlock timeout
Replace string-based timeout ID "interlock" with a constexpr
uint32_t, saving 12 bytes of RAM on ESP8266 and avoiding the
string hash lookup.
2026-03-19 23:57:50 -10:00
J. Nick Koston 855972135f Merge remote-tracking branch 'upstream/fix-ledc-deprecated-intr-type' into integration 2026-03-19 23:23:54 -10:00
J. Nick Koston b4acb9b613 [ledc] Fix deprecated intr_type warning on ESP-IDF 6.0+
The intr_type field of ledc_channel_config_t was deprecated in
ESP-IDF 6.0 as the driver now handles interrupts internally.
Guard the assignment with a version check to silence the warning.
2026-03-19 23:22:51 -10:00
J. Nick Koston 0e2529197d Merge branch 'disable-picolibc-newlib-compat' into integration 2026-03-19 23:10:33 -10:00
J. Nick Koston f66f29fbf5 Merge remote-tracking branch 'upstream/analyze-memory-extern-c' into integration 2026-03-19 23:10:27 -10:00
J. Nick Koston a259b1e8b4 Guard _scan_source_symbols against missing nm_path 2026-03-19 23:09:34 -10:00
J. Nick Koston 4d7e06da0a [esp32] Disable PicolibC Newlib compatibility shim on IDF 6.0+
ESP-IDF 6.0 switched from Newlib to PicolibC. The Newlib compatibility
shim (CONFIG_LIBC_PICOLIBC_NEWLIB_COMPATIBILITY) provides thread-local
stdin/stdout/stderr and getreent() for code compiled against Newlib.

ESPHome doesn't link against Newlib-built libraries that use stdio,
so the shim is unnecessary overhead. The cost is small (a few dozen
bytes of TLS per FreeRTOS task) but there's no reason to carry it.

Users linking precompiled Newlib binaries can re-enable via:
  sdkconfig_options:
    CONFIG_LIBC_PICOLIBC_NEWLIB_COMPATIBILITY: "y"
2026-03-19 23:07:17 -10:00
J. Nick Koston fcb779e9e4 Merge remote-tracking branch 'upstream/analyze-memory-extern-c' into integration 2026-03-19 22:42:44 -10:00
J. Nick Koston 8a82a1c7b1 [analyze-memory] Attribute extern C symbols to ESPHome components via source file mapping
Symbols declared with extern "C" linkage (like resetPins in esp8266/core.cpp)
lack C++ namespace prefixes, causing them to fall through to "other" in the
memory analysis. This adds source-file-based attribution by scanning ESPHome
object files with nm to build a symbol-to-component map.

Also removes resetPins from the arduino_core heuristic pattern since it's
an ESPHome function, not an Arduino one.
2026-03-19 22:41:34 -10:00
J. Nick Koston 79a73a7bc9 Merge remote-tracking branch 'upstream/is-ready-bitmask' into integration 2026-03-19 22:16:31 -10:00
J. Nick Koston 453cbbe81c [core] Optimize Component::is_ready() with bitmask check
Replace three separate equality comparisons with a single bitmask
shift-and-test. This compiles to fully branchless code and halves
the function size on Xtensa (38 → 19 bytes, 14 → 7 instructions).
2026-03-19 22:14:13 -10:00
J. Nick Koston 5b94c7d4d6 Merge remote-tracking branch 'upstream/preferences-shorten-tag' into integration 2026-03-19 22:02:19 -10:00
J. Nick Koston 24605b0e30 [preferences] Shorten TAG strings across all platforms
Only one preferences backend is ever compiled per binary, so the
platform prefix is redundant. Shorten all TAG strings from
"<platform>.preferences" to just "preferences".

Saves 4-8 bytes of RAM per platform (tag string stored in .rodata
on ESP8266).
2026-03-19 21:59:59 -10:00
J. Nick Koston 1d3e33d3ce Merge remote-tracking branch 'upstream/logger-progmem-lookup-tables' into integration 2026-03-19 21:52:27 -10:00
J. Nick Koston 0ca44e061e [logger] Move log level lookup tables to PROGMEM
Move LOG_LEVEL_COLOR_DIGIT and LOG_LEVEL_LETTER_CHARS arrays from
.rodata (RAM) to PROGMEM (flash) on ESP8266. These small lookup
tables were consuming 16 bytes of RAM unnecessarily.

Results on a minimal ESP8266 config:
- RAM: -16 bytes (.rodata 948 → 932 bytes)
- Flash: +32 bytes (PROGMEM access code)
2026-03-19 21:51:11 -10:00