* 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>
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>
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
* 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
* 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>
* 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>
- Update EQ3-TRV driver to handle encrypted custom firmware advertisement by using `MIDecryptPayload` from `xsns_62_esp32_mi_ble`
- Enhance and lean WebUI generation
- Rework of the eQ-3 TRV device view to show a compact status row
- Use shared signal-strength indicator styling and remove duplicate CSS from Zigbee and MI BLE pages.
- Extend the MQTT payload with `BattVolt` field
The driver could already enable CH2 (ot_flags CH2, master status bit 4)
but never sent the CH2 control setpoint (data-id 8) nor read the CH2 flow
temperature (data-id 31).
- ot_tboiler2: CH2 setpoint, written only while CH2 is enabled and on
change (same tolerance as ot_tboiler); runtime value, starts with the
saved CH setpoint after a restart (no Settings change)
- ot_ch2: runtime CH2 enable, counterpart of ot_ch (no flash write)
- telemetry BTMP2 and TB2, web lines for CH2
Both commands reuse the tboiler/ch handlers via the command index.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* HLK-LD2402 Fix bitwise operation precedence
* Fixed issue with code not running because of a mistake in
the order of some bitwise operations
* Adjusted logic to better conform with HiLink documentation
* HLK-LD2402 increased resilience to uart issues
* Driver is more relaxed with uart communications this allows it to
continue working where perviously it would become confused.
* Tested on ESP32 and ESP8266 device.