1
0
mirror of https://github.com/esphome/esphome.git synced 2026-02-08 08:41:59 +00:00
Commit Graph

21852 Commits

Author SHA1 Message Date
J. Nick Koston
8a2c5407d8 Merge branch 'ld2450_batch_read' into integration 2026-02-06 23:40:24 +01:00
J. Nick Koston
52a039585d Merge branch 'ld2410_batch_read' into integration 2026-02-06 23:40:20 +01:00
J. Nick Koston
fd6bd7fb67 Merge branch 'ld2412_batch_read' into integration 2026-02-06 23:40:15 +01:00
J. Nick Koston
b544cf2ffe [ld2410] Batch UART reads to reduce loop overhead 2026-02-06 23:39:31 +01:00
J. Nick Koston
6d1281301f [ld2412] Batch UART reads to reduce loop overhead
Read all available bytes in batches via read_array() instead of
byte-at-a-time read() calls. Each read() internally chains through
read_byte -> read_array(1) -> check_read_timeout_ -> available(),
resulting in 3 UART calls per byte. Batching reduces this
significantly.
2026-02-06 23:36:01 +01:00
J. Nick Koston
901192cca1 [ld2450] Batch UART reads to reduce loop overhead
Read all available bytes in batches via read_array() instead of
byte-at-a-time read() calls. Each read() internally chains through
read_byte -> read_array(1) -> check_read_timeout_ -> available(),
resulting in 3 UART calls per byte. At 256000 baud with ~235 bytes
per loop iteration, this was ~706 UART operations per loop call.
Batching reduces this to ~12.

Measured 33% reduction in loop time (2348ms -> 1577ms per 60s).
2026-02-06 23:33:21 +01:00
J. Nick Koston
3478c68af7 Merge branch 'cse7766_batch_read' into integration 2026-02-06 23:12:14 +01:00
J. Nick Koston
67e7ba4812 handle unlikely 2026-02-06 23:12:00 +01:00
J. Nick Koston
981c132cf4 Merge branch 'cse7766_batch_read' into integration 2026-02-06 23:07:21 +01:00
J. Nick Koston
572376091e loop 2026-02-06 23:07:02 +01:00
J. Nick Koston
803e73fdec Merge branch 'cse7766_batch_read' into integration 2026-02-06 22:59:59 +01:00
J. Nick Koston
e7c9808b87 [cse7766] Batch UART reads to reduce loop overhead 2026-02-06 22:53:31 +01:00
J. Nick Koston
82eb8e3492 Merge branch 'ssd1306-progmem-tables' into integration 2026-02-06 21:39:50 +01:00
J. Nick Koston
21a5c2891e Merge branch 'i2c-arduino-cswtch' into integration 2026-02-06 21:39:46 +01:00
J. Nick Koston
96289775f2 [i2c] Replace switch with if-else to avoid CSWTCH table in RAM
Replace the Wire status-to-ErrorCode switch with if-else to prevent
the compiler from generating a 6-byte lookup table in DRAM on ESP8266.
2026-02-06 21:38:41 +01:00
J. Nick Koston
3e4269d32a Address review: add SSD1306_MODEL_COUNT sentinel and bounds checks
- Add SSD1306_MODEL_COUNT sentinel to enum for compile-time table size validation
- Replace 14 individual static_asserts with table size checks against SSD1306_MODEL_COUNT
- Add bounds checks in get_height_internal()/get_width_internal() to preserve default return 0
2026-02-06 21:37:51 +01:00
J. Nick Koston
bd6d43de52 Merge branch 'ssd1306-progmem-tables' into integration 2026-02-06 21:28:11 +01:00
J. Nick Koston
8da986d41a [ssd1306_base] Move switch tables to PROGMEM with lookup tables
Replace three compiler-generated switch tables (CSWTCH) with PROGMEM
lookup tables, saving 84 bytes of DRAM on ESP8266.

- model_str_(): 56B string pointer table → PROGMEM_STRING_TABLE
- get_height_internal(): 14B byte table → PROGMEM struct array
- get_width_internal(): 14B byte table → PROGMEM struct array

Width and height use a single ModelDimensions struct array for
maintainability. All 14 enum values verified with static_assert.
2026-02-06 21:26:10 +01:00
tronikos
eb7aa3420f Add target_temperature to the template water heater (#13661)
Co-authored-by: J. Nick Koston <nick@koston.org>
2026-02-06 21:23:42 +01:00
J. Nick Koston
4fb851954b Merge branch 'debug_progmem' into integration 2026-02-06 21:10:55 +01:00
J. Nick Koston
d1399d9145 [debug] Move ESP8266 switch tables to flash with PROGMEM_STRING_TABLE 2026-02-06 21:10:23 +01:00
J. Nick Koston
ba40fbc53d Merge remote-tracking branch 'origin/mqtt-custom-topic-no-alloc' into integration 2026-02-06 21:01:53 +01:00
J. Nick Koston
c8d4d870e8 [mqtt] Use .c_str() for StringRef payloads to match non-allocating publish overload 2026-02-06 21:00:53 +01:00
J. Nick Koston
fcb458e449 Merge branch 'mqtt-discovery-topic-no-alloc' into integration 2026-02-06 20:57:47 +01:00
J. Nick Koston
48a8f753f5 Merge branch 'mqtt-custom-topic-no-alloc' into integration 2026-02-06 20:57:40 +01:00
J. Nick Koston
6293f3110c Merge branch 'mqtt-friendly-name-const-ref' into integration 2026-02-06 20:57:35 +01:00
J. Nick Koston
ce34b37e02 Merge branch 'mqtt-on-log-no-heap' into integration 2026-02-06 20:57:29 +01:00
J. Nick Koston
b454cac1dc [mqtt] Use stack buffer for discovery topic to avoid heap allocation 2026-02-06 20:48:18 +01:00
J. Nick Koston
a9a943b858 [mqtt] Add zero-allocation topic getters to MQTT_COMPONENT_CUSTOM_TOPIC macro
Add _to() variants that write into a stack buffer and return StringRef,
avoiding heap allocation on every publish. Update publish_state() in
climate (11 allocations eliminated), fan (3), cover (2), and valve (1)
to use the new stack-based getters.

The allocating getters are retained for setup-time paths (subscribe,
send_discovery, dump_config) where the allocation is one-time.
2026-02-06 20:41:51 +01:00
J. Nick Koston
85c1660edf [mqtt] Return friendly_name_() by const reference to avoid string copies 2026-02-06 20:38:33 +01:00
J. Nick Koston
664baac09e [mqtt] Avoid heap allocation in on_log by using const char* publish overload
The on_log callback was constructing a temporary MQTTMessage struct which
copied the log_message_ topic string and created a new std::string from
the message buffer on every log line. This is called frequently at runtime
and contributes to heap fragmentation.

Use the const char* publish overload directly to avoid both allocations.
2026-02-06 20:32:04 +01:00
J. Nick Koston
b247e4a213 Merge remote-tracking branch 'upstream/dev' into integration 2026-02-06 20:12:59 +01:00
J. Nick Koston
86f91eed2f [mqtt] Move switch string tables to PROGMEM_STRING_TABLE (#13802)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2026-02-06 19:30:05 +01:00
J. Nick Koston
ea7aeb2507 Merge branch 'uart_partity' into integration 2026-02-06 19:25:08 +01:00
J. Nick Koston
61b2416a7c Merge branch 'bmp_progmem' into integration 2026-02-06 19:24:52 +01:00
J. Nick Koston
41cecbfb0f [template] Convert alarm sensor type to PROGMEM_STRING_TABLE and narrow enum to uint8_t (#13804) 2026-02-06 18:22:26 +00:00
J. Nick Koston
e3b547b1b0 [bmp3xx_base/bmp581_base] Convert oversampling and IIR filter strings to PROGMEM_STRING_TABLE 2026-02-06 19:22:11 +01:00
J. Nick Koston
93dd8d0e4f Merge branch 'rtttl_progmem' into integration 2026-02-06 19:19:07 +01:00
J. Nick Koston
12b3e95ed3 [rtttl] Convert state_to_string to PROGMEM_STRING_TABLE 2026-02-06 19:18:27 +01:00
J. Nick Koston
a94c0f745f Merge branch 'sprinkler_progmem' into integration 2026-02-06 19:16:49 +01:00
J. Nick Koston
7fc3b1ddfe [sprinkler] Convert state and request origin strings to PROGMEM_STRING_TABLE 2026-02-06 19:16:13 +01:00
J. Nick Koston
ca33d4111b [uart] Convert parity_to_str to PROGMEM_STRING_TABLE 2026-02-06 19:11:10 +01:00
Jonathan Swoboda
9315da79bc [core] Add missing requests dependency to requirements.txt (#13803)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 13:03:16 -05:00
J. Nick Koston
4325c86b0a Merge branch 'template_alarm_progmem' into integration 2026-02-06 19:01:49 +01:00
J. Nick Koston
e3b9c9362d [template] Convert alarm sensor type to PROGMEM_STRING_TABLE and narrow enum to uint8_t 2026-02-06 18:58:19 +01:00
J. Nick Koston
11882bc6fa Merge branch 'mqtt_progmem_table' into integration 2026-02-06 18:54:52 +01:00
PolarGoose
155447f541 [dsmr] Fix issue with parsing lines like 1-0:0.2.0((ER11)) (#13780) 2026-02-06 12:53:59 -05:00
J. Nick Koston
b908d6ad04 [mqtt] Move switch string tables to PROGMEM_STRING_TABLE 2026-02-06 18:53:33 +01:00
J. Nick Koston
238e40966f [light] Move CSWTCH lookup table to PROGMEM in get_suitable_color_modes_mask_ (#13801) 2026-02-06 17:33:26 +00:00
J. Nick Koston
29e73ef317 Merge remote-tracking branch 'upstream/dev' into integration 2026-02-06 18:25:47 +01:00