Commit Graph
21403 Commits
Author SHA1 Message Date
joluxerandGitHub ba88358ed6 ESP8266: fix heap metric functions and add OOM diagnostics (#24777)
* ESP8266: fix ESP_getMaxAllocHeap() and ESP_getHeapFragmentation()

Both functions returned wrong values: ESP_getMaxAllocHeap() returned
ESP.getFreeHeap() (total free, not largest contiguous block);
ESP_getHeapFragmentation() read ummHeapInfo.maxFreeContiguousBlocks,
which is only valid immediately after a umm_info() heap walk.

Fix: cache the result of umm_max_block_size() in ESP_UpdateHeapMetrics().
The cache is refreshed once per second when SetOption130 is active, and
on demand in CmndStatus() before Status 4 is output. Both getter functions
read the cached value; the call site overhead is a single integer read.

umm_max_block_size() is unconditionally available (UMM_INFO is hardcoded
in the Arduino ESP8266 umm_malloc_cfg.h), so no build flags are required.

Status 4 (StatusMEM) gains two ESP8266-specific fields: MaxFreeBlock (KB)
and Frag (%).

* ESP8266: add heap OOM diagnostics, Status 4 fields, Status 44 dump

OOM event monitoring (requires UMM_INLINE_METRICS or UMM_STATS_FULL):
- ESP_HeapOomCheck(): called once per second; logs the OOM counter delta
  when the counter changes ("OOM: count N (+M)")
- ESP_HeapOomTest(): logs current OOM count on demand

Status 4 (StatusMEM) gains additional ESP8266-specific fields when the
corresponding build flags are active:
- OomCount: cumulative out-of-memory events (UMM_INLINE_METRICS or
  UMM_STATS_FULL)
- HeapLwm (KB): heap low-watermark since boot (UMM_STATS_FULL)
- MaxAllocSz (bytes): peak single allocation size (UMM_STATS_FULL)

Status 44 (ESP8266-only diagnostic command):
- Triggers umm_info(nullptr, true) to print a full heap block map to
  the serial console
- Calls ESP_HeapOomTest() to log the current OOM count
- Returns {"Status44":{"HeapDump":"serial"}}
- Status 44 is accepted regardless of MAX_STATUS

Build flags UMM_STATS_FULL and UMM_INLINE_METRICS can be enabled via
platformio_override.ini build_flags; documented in
platformio_override_sample.ini.
2026-05-25 17:25:04 +02:00
Jason2866andGitHub 166bb946bd fix pioarduino build (#24789) 2026-05-25 17:09:36 +02:00
Christian BaarsandGitHub ef35d7b6c6 Cleaner solidify (#24788) 2026-05-25 17:04:03 +02:00
Christian BaarsandGitHub 99fc7f87e7 use Tasmota Berry defines in coc (#24787) 2026-05-25 10:02:45 +02:00
s-hadingerandGitHub 3030d20ff0 Fix hallucinations in doc_for_ai (#24775) 2026-05-20 21:08:50 +02:00
Theo Arends ee0748a656 Update change logs 2026-05-20 14:00:18 +02:00
a027be81f6 Fix I80 pushColors swap logic for parallel displays (#24770)
Co-authored-by: Christian Baars <christianbaars@MacStudio-von-Christian.local>
2026-05-20 13:52:46 +02:00
Christian BaarsandGitHub 68635b9668 MI32: unify connection task (#24769) 2026-05-20 12:27:50 +02:00
Theo Arends fb424dca50 Add support for hosted MCU different from esp32c6 2026-05-19 15:35:34 +02:00
Theo Arends a90c539899 Update change logs 2026-05-19 12:28:34 +02:00
Frederick BlaisandGitHub e6d471f25f Add descriptor-driven ST7305 uDisplay packing (#24738) 2026-05-19 12:24:18 +02:00
Theo Arends 01d408ae6d Update change logs 2026-05-19 11:44:58 +02:00
Theo Arends bbd10227af Fix setting DISABLE_REFERER_CHK 2026-05-19 11:38:16 +02:00
Petr GolovachevandGitHub 0a5311c3ee VID6608: add hardware RMT support for Automotive gauge driver (#24759)
* Replace old software-defined library arduino-vid6608 with hw-defined esp-32-vid6608

* VID6608: Rework integration to allow select RMT/SW method by using the `VID6608_RMT` option

* VID6608: Tune library inclusion for RMT version

* The RMT version is not supported on ESP32-C2, library excluded
* Add more clear error message, if RMT is requested, but not supported
2026-05-18 17:40:13 +02:00
Petr GolovachevandGitHub dd1468b47e Fix for TasmotaLEDPusher configutation (#24760)
Library does not have user-defines include and ignores actual confiuration via `user_config_*.h` files
2026-05-18 11:08:02 +02:00
s-hadingerandGitHub 3734308857 Matter Device non nullable attributes (#24764) 2026-05-18 10:01:12 +02:00
Theo Arends f4aa8ed67f Increase security by inverting state of define DISABLE_REFERER_CHK, command SetOption128 controlling HTTP access which is now default off 2026-05-17 15:46:32 +02:00
Theo Arends a098a48242 Update change logs 2026-05-17 13:35:18 +02:00
Christian BaarsandGitHub 2666434b90 BearSSL: update SHA functions for breaking change of IDF 5.5 (#24757) 2026-05-17 13:21:37 +02:00
Theo Arends 2c2a28cae1 Fix HTTP invalid file type upload 2026-05-17 11:59:20 +02:00
s-hadingerandGitHub cfe25959cd Berry Matter improve async HTTP error handling (#24756) 2026-05-16 23:40:37 +02:00
Theo Arends 5009bea30b Fix scripter buffer overflow 2026-05-16 22:54:45 +02:00
Theo Arends 007e7b940c Update change logs 2026-05-16 21:32:01 +02:00
s-hadingerandGitHub 1ef3723300 Manual tool to compare and verify Berry solidification between C and Python (#24754) 2026-05-16 21:09:02 +02:00
Jason2866andGitHub 5bfdcca07f Clarify dns_save4 handling in IPv6 only case (#24752)
Added comments to clarify the handling of dns_save4 during IPv6 only scenarios.
2026-05-16 21:00:54 +02:00
Theo Arends eecf1ad142 Update change logs 2026-05-16 15:14:30 +02:00
Jason2866andGitHub e97673aab5 Disable USE_SHA_ROM in platformio_tasmota32.ini
Comment out USE_SHA_ROM to avoid issues with TLS.
2026-05-16 14:57:41 +02:00
91a33aa39f Add support for multi-byte chars like emojis (💡) in light device toggle buttons (#24482)
* Add support for multi-byte characters like emojis (💡) in WebButton labels for light device toggle buttons

- Remove the 3-character buffer truncation of light device toggle button labels allowing multi-byte characters like emojis
- Rely on CSS to handle truncation and add `max-width:0` to the td so it respects the provided percentage width instead of expanding to fit content
- Wrap button content in a span with overflow handling to prevent layout breakage

* Use localized `D_BUTTON_TOGGLE` for light device button default text

* Improve UTF-8 support in light device WebButton text

- Add `Utf8Truncate` function in `support.ino` to truncate UTF-8 strings to a max chars limit or max visual width limit
- Truncate light device button text to max 4 chars or max width of 4 before passing to button HTML template
- cache calls to GetWebButton so only called once and update bool var from `set_button` to `has_web_button`.

* Small tweaks to improve clarity in Utf8Truncate on codepoint limits and visual width handling

* Correctness fixes

---------

Co-authored-by: s-hadinger <49731213+s-hadinger@users.noreply.github.com>
2026-05-16 14:28:22 +02:00
Allen SchoberandGitHub 90ed4a1b94 Fix URL detection and path handling in esp32_build_filesystem (#24748)
- Replace broken "http" and "://" in file condition with file.startswith(("http://", "https://")) — the original always evaluated "http" as truthy and only tested for "://".
- Strip whitespace and skip blank lines from custom_files_upload entries, matching the pattern in solidify-from-url.py.
- Resolve relative local paths against $PROJECT_DIR rather than the build-time CWD.
2026-05-16 14:25:28 +02:00
Allen SchoberandGitHub 47d53f1761 Add RGBW white blend and 10-bit gamma support to Berry LED pixel rendering so Berry animations render with the same color output as the standard Tasmota NeoPixel light driver. (#24750)
- Replace 8-bit per-channel math with 10-bit intermediates to preserve color ratios at low brightness.
- When SetOption105 (white blend mode) is enabled on a 4-byte RGBW strip, extract the minimum RGB component as a white channel (scaled by rgbwwTable[3]) rather than zeroing it, mirroring the logic in xdrv_04_light.ino.
- Gamma correction is applied via ledGamma10_10 throughout, including the extracted white channel.
2026-05-16 12:31:36 +02:00
Allen SchoberandGitHub 68d21ac2d7 Create tasmota_defines_for_berry.be stub before solidification if absent (#24749)
- solidify_all_python.be imports tasmota_defines during solidification, but the actual file is generated post-compilation by gen-berry-defines.py. If it doesn't exist yet, solidification fails. Create an empty stub before calling prepareBerryFiles so the import succeeds regardless of build order.
2026-05-16 12:28:22 +02:00
s-hadingerandGitHub e18035a6de Support for M5Stack Atom S3R drivers (#24747) 2026-05-15 22:37:48 +02:00
Jason2866andGitHub 6e3ee37842 Remove -DUSE_SHA_ROM flag for esp32s3 due to issues (#24744) 2026-05-15 22:17:50 +02:00
s-hadingerandGitHub 5c550752c6 Move autoconf repository to ota.tasmota.com (#24745) 2026-05-15 18:42:28 +02:00
s-hadingerandGitHub 87107b7950 USE_UNIVERSAL_TOUCH no more forced when USE_UNIVERSAL_DISPLAY is enabled (#24743) 2026-05-13 23:28:39 +02:00
s-hadingerandGitHub 7a21f72f70 rename GPIO_DISPLAY_RESET and update GPIOs (#24742) 2026-05-13 22:42:25 +02:00
s-hadingerandGitHub 4bd1e22b2e Berry apply security fixes (#24739) 2026-05-13 17:14:54 +02:00
Allen SchoberandGitHub 2333988b91 Add local file support to solidify-from-url (#24732)
* Add local file support to solidify-from-url.py and fix URL rename alias bug

- Add support for local .be file paths (absolute or PROJECT_DIR-relative) in prepareBerryFiles used by custom_berry_solidify project option in solidify-from-url.py
- Fix URL path to use "/" as separator instead of os.path.sep, and pass the rename alias to addHeaderFile so the solidified header name matches the actual target filename

* solidify-from-url: replace compiled berry binary with berry_port Python interpreter

- Remove ensureBerry() and the shell invocation of the compiled `berry` binary.
- Instead run solidify_all_python.be via `python3 -m berry_port`, matching how gen-berry-structures.py drives solidification for all other berry modules.
- Use Popen to filter routine per-file output and call env.Exit on failure.
2026-05-13 10:43:46 +02:00
bovirusandGitHub 5e8019dc8c Italian language update (#24736) 2026-05-12 12:53:46 +02:00
Theo Arends 57de0b641e Update change logs 2026-05-12 09:45:44 +02:00
s-hadingerandGitHub 4f37c1da4a LVGL splash screen uses default Montserrat-14 instead of Montserrat-20 on small screens (#24735) 2026-05-11 22:37:05 +02:00
s-hadingerandGitHub 47b80b961d uDisplay logs polished (#24734) 2026-05-11 22:04:55 +02:00
Theo Arends a94539f058 Update change logs 2026-05-11 13:40:11 +02:00
Jason2866andGitHub ad671a557c esp8266: Wrap printf and replace with stubs. Saves around 6 kb flash (#24714)
* wrap printf with stubs

* Remove flash savings message from wrap_printf

Removed print statement indicating flash savings for ESP8266.

* safe more by using rom function
2026-05-11 13:21:20 +02:00
Allen SchoberandGitHub b05c3004dd Fix default hostname generation to support single-specifier Format() patterns (#24731)
- Route single-specifier hostnames through Format() so patterns like %NX (last N MAC hex chars) work correctly, while preserving the existing two-specifier %s-%04d behavior via snprintf
- Update comment in my_user_config.h to accurately describe chip ID rather than MAC
2026-05-11 11:03:27 +02:00
Allen SchoberandGitHub c7042c767c Fix seesaw encoder position tracking in light control mode and add relative position (#24730)
- Position tracking (abs_position, rel_position) was previously skipped when SEESAW_ENCODER_LIKE_ROTARY light control mode was active due to an early return. Moved position updates before the light control block so Show() and Telemetry always reflect current position.
- Also adds Pos (global relative position) alongside Pos1/Pos2 in JSON telemetry responses, rule triggers, and the web UI display.
2026-05-11 10:55:48 +02:00
Norbert RichterandGitHub 528a306c0f Neopool fix hydrolysis module detection and potential rare crash issues (#24724)
* NeoPool fix possible overflow/div-zero errors

* NeoPool fix Hydrolysis module detection
2026-05-11 10:53:55 +02:00
Jacek ZiółkowskiandGitHub 0c85dbc039 Add RX Enable GPIO support for Modbus (#24726)
* Add RX Enable GPIO support for Modbus

* fix typo

* fix typo in language files
2026-05-11 10:53:07 +02:00
Theo Arends fd68ef7daa Add webcam assert wrt framesize change 2026-05-09 16:01:23 +02:00
Jason2866andGitHub 32d444edca Add esp-decoder.disconnect command to settings 2026-05-09 13:34:04 +02:00