Commit Graph
21743 Commits
Author SHA1 Message Date
Theo Arends dad74600a1 Fix possible OOB 2026-10-16 11:41:14 +02:00
Theo Arends db29ff1f17 Fix buffer overflow 2026-10-16 10:54:42 +02:00
Theo Arends a0ff1cdc57 Bump version v16.0.0.1 2026-10-16 10:10:37 +02:00
Theo Arends 8402d7d477 Update change logs 2026-10-16 09:25:34 +02:00
s-hadinger 47f3dbc09f Berry webclient.connected() was implemented but not exposed (#25145) 2026-10-15 17:30:25 +02:00
Adam Matthews ece53a64f8 AsyncHttpClientLight: end a body read when the server goes silent or closes (#25141)
* AsyncHttpClientLight: time out reading a body when the server goes silent

writeToStreamDataBlock() waited for the rest of a body for as long as
connected() held. A server that stops sending part way through without
closing leaves connected() true, so the worker never finishes and the
caller, waiting in runJob(), never returns. Give up after _tcpTimeout
without data and return HTTPC_ERROR_READ_TIMEOUT, as HttpClientLight
now does (#25139).

* AsyncHttpClientLight: notice when the server closes after the last byte

AsyncTcpAdapter only saw the peer close inside read(), and callers only
read when available() > 0. A body without Content-Length that ends with
the server closing left connected() true for ever, so
writeToStreamDataBlock() never returned. connected() now peeks at the
socket, as WiFiClient::connected() does: data still buffered keeps it
connected, an orderly close after it does not.

* AsyncHttpClientLight: address review of the read timeout

- connected() only reports a peer close and no longer calls stop(): it can
  be called from another task than the worker using the socket.
- writeToStreamDataBlock() closes the connection on a read timeout, as the
  chunked readers do, so a stalled connection is not reused.
- readBodyToStreamString(): the identity branch used by async GET/POST now
  times out after _tcpTimeout without data, and notices a close: with no
  Content-Length it ends the body, with one it is a lost connection.
2026-10-15 15:10:46 +02:00
Theo Arends 0edebb90a6 Fix BTHome binary event handling 2026-10-15 14:55:13 +02:00
Theo Arends 3da77ba044 Update change logs 2026-10-15 10:40:00 +02:00
Theo Arends fbe55333e8 Update change logs 2026-10-15 10:36:25 +02:00
s-hadinger a2f0c87141 LVGL library from v9.5.0 to v9.6.0 (#25144) 2026-10-15 09:41:19 +02:00
Adam Matthews 90754c5b93 AsyncHttpClientLight: finish a chunked body at the empty line after the last chunk (#25142)
After the zero-size chunk the readers read one line unconditionally,
then waited for another empty line. The first read already consumed the
empty line that ends the body, so every chunked body waited for a line
that never came and failed with HTTPC_ERROR_READ_TIMEOUT after
_tcpTimeout. Read trailer lines up to the first empty one instead.
2026-10-15 09:35:15 +02:00
Theo Arends 770960cec8 Add BTHome events to GUI 2026-10-14 17:20:10 +02:00
Theo Arends 31aa390c45 Update change logs 2026-10-14 15:51:20 +02:00
Adam Matthews c95c241fa3 HttpClientLight: time out reading a body when the server goes silent (#25139)
writeToStreamDataBlock() looped for as long as connected() held, waiting
for the rest of the body with no time limit. A server that stops sending
part way through a body without closing the connection - a computer that
sleeps, a cable pulled, a network that drops between the two ends - leaves
connected() true for ever, so the read never returned. Called from the main
loop, as Berry's webclient get_string() is, it left the device answering
nothing, not even its web page, until it was power-cycled.

Give up after _tcpTimeout without data, returning HTTPC_ERROR_READ_TIMEOUT,
as handleHeaderResponse() already does for the headers. A body that keeps
arriving, however slowly, is unaffected: each piece resets the clock.
2026-10-14 15:12:37 +02:00
s-hadinger 1bb26b29c4 Fix Matter MQTT subscription when Matter is disabled (#25140) 2026-10-14 15:08:29 +02:00
Theo Arends ad60406a38 Update change logs 2026-10-14 14:54:44 +02:00
Theo Arends 4336cd06c4 Add define EMAIL_DISABLE_CHUNKING for ESP32 mail 2026-10-13 16:18:16 +02:00
Zhaoqi Xu b8eb9a5788 Shutter: fix ShutterButton MQTT flag parameters on ESP32 (#25116)
The MQTT flags m1, m2, m3 and mh were stored one slot too high
(position[i-6]), so mh set the triple press flag and m1 wrote before
the start of the position array. mi (mqtt_all) could not be set at all.

Store m1..mh in position[0..3], set mqtt_all from mi and include it in
the command response, as the ESP8266 driver already does.

Fixes #25082
2026-10-13 14:36:15 +02:00
Theo Arends bffbbeca17 Fix possible buffer overflow 2026-10-13 14:34:36 +02:00
Theo Arends 5c295fbcf8 Merge commit from fork
Fix /rst issue
2026-10-12 17:36:25 +02:00
SteWers 54a1527f87 Correct and normalize eQ3/MI battery percentage calculation (#25136)
Replace percentage formulas with `changeUIntScale`. This also corrects the calculation in the eQ3 driver.
2026-10-12 16:54:23 +02:00
Theo Arends 19c9d2c9cd Update change logs 2026-10-12 16:36:58 +02:00
Jason2866 71216f04e6 Fix ESP32 model number in README
Corrected ESP32 model number from ESP32-C2 to ESP32-C61.
2026-10-12 13:05:04 +02:00
Jason2866 3dc69ff8cf Enable tasmota32c61 in build workflow 2026-10-12 12:58:45 +02:00
SoWizard df1d8d5aa3 Matter: clean up incomplete initial subscriptions (#25137) 2026-10-12 11:35:49 +02:00
Jason2866 68157a2629 support for ESP32-C61 (#25135)
* support for ESP32-C61

* disable C61 in CI since there is no safeboot on OTA Server yet
2026-10-11 18:33:11 +02:00
SoWizardands-hadinger f1244e5bb4 Matter: report HTTP bridged-device reachability changes (#25115)
* Matter: report HTTP bridged-device reachability changes

* Update Matter_HTTP_remote.be

* Update http_recovery_tests.be

---------

Co-authored-by: s-hadinger <49731213+s-hadinger@users.noreply.github.com>
2026-10-11 18:02:52 +02:00
bcc37a50ab Matter add Wi-Fi Network Diagnostics cluster (0x0036) (#25126)
* Matter add Wi-Fi Network Diagnostics cluster (0x0036)

Expose BSSID, SecurityType, WiFiVersion, ChannelNumber and RSSI on the
Root endpoint so controllers (Apple Home, Home Assistant) can show which
access point and channel a device uses. BSSID and channel changes are
reported to subscribers when the device roams.

tasmota.wifi() now also reports `channel`, `security` and `phy`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Clamp RSSI

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: s-hadinger <49731213+s-hadinger@users.noreply.github.com>
2026-10-11 17:41:47 +02:00
LesNewellandClaude Opus 5.5 bf2afdc7f1 Fix Zigbee cluster specific command decoding with uninitialized values (#25124)
Regression from ab38e799a. A GetGroup response could report a huge group
count and stall the device building the group list.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 16:55:33 +02:00
bovirus 24e00fc33c Update Italian language (#25134) 2026-10-11 13:16:55 +02:00
XJ 87c9724510 BMx280: re-init sensor after it lost its config, skip invalid reads (#25131)
The BME280 can reset itself (e.g. supply glitch) and fall back to sleep
mode; the driver kept computing a constant bogus pressure from the reset
register value until the ESP was restarted.

- check CTRL_MEAS every read, re-run Bmx280Calibrate when not in normal mode
- use I2cValidRead24 and drop 0x800000 (reset/skipped) raw values
- after BMP_FAIL_LIMIT failed reads report null instead of stale values
2026-10-11 11:37:31 +02:00
bovirus 1b13a45ee9 Update it_IT.h (#25133) 2026-10-11 11:36:23 +02:00
s-hadinger ddec734fa1 Berry fix formatting for long strings (#25132) 2026-10-10 19:43:00 +02:00
Theo Arends 6a4077b345 Update change logs 2026-10-10 18:07:39 +02:00
Jason2866 c6b19bb70c Initial ESP32-S31 support (#25130)
* ESP32-S31 support (#588)

* Arduino IDF 6.1 based framework only for S31

* code review changes Thei for tasmota_types.h
2026-10-10 17:50:13 +02:00
Theo Arends d9f4450293 Remove BL0939 temp margin chk (#25117) 2026-10-10 15:08:15 +02:00
SteWers 71f6b9b5bc Add localized eQ3 TRV status labels (#25125)
* Add localized eQ3 TRV status labels

This PR adds missing translation strings for eQ3 TRV status indicators and updates the BLE driver to use localized labels instead of hardcoded text.

* Strikethrough key
2026-10-10 14:50:18 +02:00
db46cbc14d Added Ldo command to simplifyconfiguration of devices with on-board LDO. (#25128)
* copy pins_arduino from tasmota not framework

* move specific P4 settings out of pins_arduino.h

* keep backwards compability

with the option to redefine the specific different P4 board configs

* Keep P4 SD card on SDMMC slot 0 and set hosted MCU pins in default module

Arduino core and libraries do not see my_user_config.h, so without
BOARD_SDMMC_SLOT in pins_arduino.h SD_MMC uses slot 1 which is taken
by ESP-Hosted.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Add command Ldo<x> <mV> to configure ESP32-P4 LDO3 and LDO4

LDOs are set at boot before any GPIO use. LDO settings of DSI display
descriptor, CSI camera and SD card are only used if not set by command
Ldo and are deprecated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Show clear error if pins_arduino.h for a variant is missing

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Jason2866 <obermeier.johann@googlemail.com>
Co-authored-by: Jason2866 <24528715+Jason2866@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 14:48:43 +02:00
Jason2866 78d0254762 Refactor safeboot platform handling in post_esp32.py (#25129)
to use standard safeboot variant for 2M Tasmota build variants for C2 and C3
2026-10-10 12:47:47 +02:00
SoWizardands-hadinger edd93777ae Matter: add virtual Generic Switch button events via MtrUpdate (#25091)
* Matter: add virtual Generic Switch button events via MtrUpdate

* Matter: add repeated virtual-button memory regression

* Update MATTER_CLASS_HIERARCHY.md

---------

Co-authored-by: s-hadinger <49731213+s-hadinger@users.noreply.github.com>
2026-10-10 10:47:34 +02:00
s-hadinger a55cfa251a Matter support for Light RBG+CT (5 channels) and refactoring of lights (#25123) 2026-10-09 19:34:23 +02:00
s-hadinger e2a665dfca Berry format support width for %c format (#25122) 2026-10-09 18:48:23 +02:00
s-hadinger 84b011242c Add uDisplay/uTouch doc for AI 2026-10-09 18:15:49 +02:00
Theo Arends 2a8dca1b85 Update change logs 2026-10-09 17:17:35 +02:00
s-hadinger 6b9855a49d LVGL option to prefer PSRAM for draw buffers using bit 5 (0x20) of :B in display.ini (#25120) 2026-10-09 16:56:45 +02:00
Theo Arends 696fdb4bb2 Merge branch 'development' of https://github.com/arendst/Tasmota into development 2026-10-09 15:23:28 +02:00
Theo Arends 947feea761 Fix BL0939 temp range out-of-sync (#25117) 2026-10-09 15:23:10 +02:00
LesNewellands-hadinger 53dbdb72dc Fix/dsi dma2d psram buffers (#24949)
* Fix silently-dropped LVGL flush chunks on ESP32-P4 DSI panels

esp_lcd_panel_draw_bitmap()'s DMA2D path takes an internal draw
semaphore with a 0 timeout and returns ESP_ERR_INVALID_STATE (without
drawing anything) if the previous async transfer hasn't completed yet.
DSIPanel::pushColors() ignored that return value, and lv_flush_callback()
always calls lv_disp_flush_ready() regardless, so LVGL believed the
flush succeeded even when the chunk was silently dropped - leaving
stale framebuffer content on screen for that region.

Retry instead of dropping the chunk. The transfer typically completes
in well under 1ms, so poll in short bursts rather than 1ms FreeRTOS
ticks; a bounded retry count still catches a genuinely stuck transfer
and logs it instead of looping forever.

* Allow LVGL DSI draw buffers to use PSRAM on ESP32-P4

lv_pixel_buf/lv_pixel_buf2 previously preferred MALLOC_CAP_INTERNAL,
costing ~120KB of scarce internal SRAM on boards where PSRAM is
otherwise nearly idle (e.g. a 1024x600 DSI panel at 60 flushlines).
Prefer MALLOC_CAP_SPIRAM instead, falling back to internal RAM if
PSRAM is unavailable - safe now that the previous commit fixes the
DMA2D transfer race that PSRAM's slower read speed was exposing.

Also switch the flush-timing debug log from millis() to micros() and
drop its DMA-path exclusion: at a ~60KB/transfer chunk size the whole
operation completes in a few hundred microseconds, so millisecond
resolution just read back 0 or 1 and the DMA path - the one we
actually needed data from - was never logged at all.

* Remove defaulting to PSRAM for now

---------

Co-authored-by: s-hadinger <49731213+s-hadinger@users.noreply.github.com>
2026-10-09 15:22:37 +02:00
SoWizard af56a31050 Matter: complete subscription reports on StatusResponse (#25096) 2026-10-09 14:28:33 +02:00
SteWers 3e62436c24 [EQ3-TRV] Fix increasing column width (#25114) 2026-10-09 14:08:59 +02:00