The ESP8266 SDK automatically invokes sntp_init() via
netif_sta_status_callback on every WiFi reconnect. This results in repeated
allocations of UDP PCBs (udp_new()), leading to heap exhaustion and
potential lwIP timeout list corruption due to unmatched sntp_stop() calls.
Tasmota does not use the lwIP SNTP client and relies solely on WifiGetNtp()
for time synchronization. To avoid unnecessary resource usage, wrap and
neutralize sntp_init() and sntp_stop() with no-op implementations.
This prevents UDP PCB allocations and avoids issues caused by repeated
initialization during reconnect cycles.
Additionally, a PlatformIO post-build script has been added to validate
that the linker wraps are correctly applied. The script runs after ELF
generation and uses xtensa-lx106-elf-nm to inspect symbols, ensuring that
the __wrap_sntp_init and __wrap_sntp_stop functions are present in the
final firmware. If the wrappers are missing, the build fails.
Confirmed via firmware disassembly:
- Single call site in netif_sta_status_callback
- Requires linker wraps: --wrap=sntp_init,--wrap=sntp_stop
Fixes: #24566
Use existing dvalid[] array to gate JSON and immediate MQTT output,
preventing initial zero values from corrupting HA statistics on restart.
Signed-off-by: Christian Andersen <public@milindur.de>
- Skip :TI (touch I2C) and :TS (touch SPI) lines in case 'T' of the uDisplay
descriptor parser. These touch config lines are handled separately by
xdsp_17_universal.ino via strstr(), but case 'T' was matching on the first
character and unconditionally writing the subsequent values into
panel_config->epd.lut_full_time/lut_partial_time/update_time. In the
PanelConfigUnion, these EPD fields overlap with I80 panel bus pin config
(cs_pin, dc_pin, wr_pin, rd_pin, data_pins), causing parallel displays to
silently receive corrupted GPIO pin assignments and fail to render.
The fix checks if the character after 'T' is 'I' or 'S' and skips EPD timing
parsing for those lines. EPD descriptors using :T,<timing> continue to work
as before.
- Remove dead reference to berry.lvgl_panel_loaded in xdrv_54_lvgl.ino.
The member was removed from BerrySupport in commit e4c2cf591 (Berry Extension
Manager) but the reference in start_lvgl() was left behind, causing a compile
error when USE_BERRY_LVGL_PANEL is defined.
- Add verified display descriptor for WT32-SC01 Plus (ESP32-S3, ST7796U 480x320,
8-bit parallel I80, FT5206 capacitive touch). Tested on Tasmota v15.3.0.1 with
LVGL 9.5.0.
Co-authored-by: Ari Friedman <afriedman@millsupplyco.com>
* set no wait on connect
* removed incremental draw; reduced data moving; reduced touch events
* added set_nowait method to set TCP_NODELAY socket option
* added last chunk indicator for the stream callback
* writebytes optimizations
* Update xdrv_44_miel_hvac.ino
* Update xdrv_44_miel_hvac.ino
- added energy sensors POWER, ENERGY TOTAL, FREQUENCY
- other changes and improvements
* Update xdrv_44_miel_hvac.ino
- added all available mode mapping to Home Assistant
* MiELHVAC extend support for Home Assistant
- Description of Changes
Temperature fields as numbers: Updated all temperature outputs (SetTemperature, RoomTemperature, OutdoorTemperature) to be serialized as numeric values (float) in JSON instead of strings. This ensures proper numeric handling in clients and Home Automation platforms.
- Energy, power, and operation time as numbers: Converted PowerUsage, Energy, OperationTime, and timer fields (TimerOn, TimerOff, TimerOnRemaining, TimerOffRemaining) to numeric values in JSON. Previously these were serialized as strings.
- JSON output consistency: All numeric fields now correctly appear as numbers or floats, while mapped fields (modes, fan speed, swing, air direction, prohibit) remain strings.
- Renamed 'Temp' to 'SetTemperture' in 'HVACSettings'
- Renamed 'Power" to 'PowerState' for SENSOR because of use 'Power' for ENERGY
* MiELHVAC extend support for Home Assistant
Changed Commands:
- 'HVACRemoteTemp' to 'HVACSetRemoteTemp'
- 'HVACRemoteTempClearTime' to 'HVACSetRemoteTempClearTime'
Value of ModeStage:
- changed 'manual' to 'direct'
- available values are: 'direct', 'auto_heat', 'auto_dry', 'auto_fan', 'auto_leader'
Other small improvements for Home Assistant Climate Control
* fix check
* fix check
* fix check
* fix
* MiELHVAC Remote Temp Refactor
- fix remote temperature update
- refactor remote temperature code
- added remote temperature to sensor output
* Update xdrv_44_miel_hvac.ino
* Update xdrv_44_miel_hvac.ino
- added energy sensors POWER, ENERGY TOTAL, FREQUENCY
- other changes and improvements
* Update xdrv_44_miel_hvac.ino
- added all available mode mapping to Home Assistant
* MiELHVAC extend support for Home Assistant
- Description of Changes
Temperature fields as numbers: Updated all temperature outputs (SetTemperature, RoomTemperature, OutdoorTemperature) to be serialized as numeric values (float) in JSON instead of strings. This ensures proper numeric handling in clients and Home Automation platforms.
- Energy, power, and operation time as numbers: Converted PowerUsage, Energy, OperationTime, and timer fields (TimerOn, TimerOff, TimerOnRemaining, TimerOffRemaining) to numeric values in JSON. Previously these were serialized as strings.
- JSON output consistency: All numeric fields now correctly appear as numbers or floats, while mapped fields (modes, fan speed, swing, air direction, prohibit) remain strings.
- Renamed 'Temp' to 'SetTemperture' in 'HVACSettings'
- Renamed 'Power" to 'PowerState' for SENSOR because of use 'Power' for ENERGY
* MiELHVAC extend support for Home Assistant
Changed Commands:
- 'HVACRemoteTemp' to 'HVACSetRemoteTemp'
- 'HVACRemoteTempClearTime' to 'HVACSetRemoteTempClearTime'
Value of ModeStage:
- changed 'manual' to 'direct'
- available values are: 'direct', 'auto_heat', 'auto_dry', 'auto_fan', 'auto_leader'
Other small improvements for Home Assistant Climate Control
* fix check
* fix check
* fix check
* fix
* Fix ESP32 reset during WiFi reconnect when mDNS is active
Explicitly call MDNS.end() before WiFi.disconnect() in support_wifi.ino.
This prevents a race condition or crash where the mDNS service attempts
to query or use the network interface while it is being torn down.
* Fix: removed lines added again.