21630 Commits

Author SHA1 Message Date
Theo Arends
3d5a6260af Merge branch 'development' into prerelease-15.4.0 v15.4.0 2026-04-22 13:33:00 +02:00
Theo Arends
02be451f31 Fix ILI9488 parallel color display description (#24582) 2026-04-22 13:32:02 +02:00
Theo Arends
0e55ca8846 Prep v15.4.0 2026-04-22 12:15:45 +02:00
Theo Arends
8a1ac051c5 Merge branch 'development' into prerelease-15.4.0 2026-04-22 12:11:20 +02:00
Theo Arends
69883ce1f3 Update TEMPLATES.md 2026-04-22 11:58:57 +02:00
Theo Arends
ad402c3be7 Update change logs 2026-04-21 18:17:00 +02:00
Theo Arends
39b34c6e0c Fix ESP32 USE_WEBCLIENT_HTTPS WebQuery HTTPS redirect response (#24662) 2026-04-21 18:09:57 +02:00
Hans Joachim Kliemeck
3cf42ba8d8 scripter: add udp send of multiple strings (#24637) 2026-04-21 17:58:13 +02:00
Grzegorz
a9b1715a6d MIELHVAC New features and bug fixes (#24660)
* MIELHVAC New features and bug fixes

## Changelog

### Bug Fixes

**Memory leak in `miel_hvac_pre_init()`** — `goto del` jumped past the `free(sc)` label, leaking the allocated struct on serial init failure. Replaced with explicit `delete`/`free`/`return`.

**`remotetemp_clear` semantics inverted** — variable was `true` on boot causing a CLR frame to be sent before any sensor registered. Renamed to `remotetemp_active`, initialised `false`.

**`HVACSetPurify` used wrong map** — `airdirection_map` was passed instead of `purifier_map`.

**`0x08` Set Run State flags wrong byte order** — flags are little-endian on the wire (ref: muart-group/muart-group.github.io#17). Removed `htons()` from all `0x08` flag assignments.

**`widevane_isee` false positives** — values like `0x84`/`0x85`/`0x8c` (ISEE bit + position nibble) incorrectly reported `AirDirection:"even"`. Reverted to exact-match for `0x80`, `0x28`, `0xaa`.

---

### New Features

**`0x42` HVAC Options polling** — added `miel_hvac_data_hvac_options` struct and `MIEL_HVAC_REQUEST_HVAC_OPTIONS` request. The unit is polled for Purifier, NightMode and EconoCool state. Requires short request form (len=1). Results stored in `sc_hvac_options` and published in SENSOR and HVACSETTINGS when `cap_run_state=true`.

**Run State commands (`0x41 0x08`)** — new commands `HVACSetPurify`, `HVACSetNightMode`, `HVACSetEconoCool` and `HVACSetAirDirection` sent via `0x08` on units that report `cap_run_state=true`. Optimistic update to `sc_hvac_options` applied before confirmation.

**EconoCool** — `0x08` byte 14, flag `0x10`, COOL mode only. Command `HVACSetEconoCool on|off`.

**Base Capabilities (`0x5B 0xC9`)** — queried once after connecting. Parsed into `miel_hvac_capabilities`. Results published flat inside `MiElHVAC` as `*Supported` fields. Temperature ranges published as °C. Raw packet in `CapabilitiesHex`.

**Capabilities-aware command validation** — commands blocked when unit reports feature unavailable: modes (heat/dry/fan), temperature range from capabilities, fan speeds, run state commands return `NotSupported` or `ControlNotSupported`.

**`0x42` polling skip** — skipped on units with `cap_run_state=false`, eliminating recurring timeouts.

**`miel_hvac_append_settings_json()`** — shared helper replacing ~80 lines of duplicated JSON code between SENSOR and HVACSETTINGS topics.

---

### JSON Changes

- `Power` (W) and `Energy` (kWh) published inside `MiElHVAC` and also in a separate `ENERGY{}` object outside `MiElHVAC` for Home Assistant auto-discovery
- `Purifier`, `NightMode`, `EconoCool` shown in SENSOR and HVACSETTINGS when `cap_run_state=true`; otherwise omitted
- `AirDirection` always shows current state from `0x62 0x02` regardless of control support
- `*Supported` capability fields published flat inside `MiElHVAC`: `HeatSupported`, `DrySupported`, `FanSupported`, `VaneVSupported`, `SwingSupported`, `AutoFanSupported`, `OutdoorTempSupported`, `AirDirectionSupported`, `PurifierSupported`, `NightModeSupported`, `EconoCoolSupported`

---

### Tested on
MSZ-LN25VG2W — `cap_run_state=false`, temp ranges 16–31 °C cool/auto, 10–31 °C heat, 5 fan speeds.

* Extend AirDirection capability, added web ui energy sensor, cleanup

### AirDirection — respect i-See sensor presence

`AirDirection` now requires three conditions instead of just the vertical vane capability:
- `cap_vane_v` — unit has a vertical vane
- `sc_has_isee` — i-See sensor observed at runtime (widevane ever seen with bit `0x80`, or value `0x28`/`0xaa`)
- `cap_run_state` — unit supports `0x08` for control

Resulting behaviour:

| `cap_vane_v` | `sc_has_isee` | `cap_run_state` | `AirDirection` visible | `AirDirectionSupported` |
|:-:|:-:|:-:|:-:|:-:|
|  | — | — | hidden | `not_supported` |
|  |  | — | hidden | `not_supported` |
|  |  |  | shown | `control_not_supported` |
|  |  |  | shown | `on` |

Units with vertical + horizontal vanes but no i-See sensor now correctly report `AirDirectionSupported:"not_supported"` and omit `AirDirection` from both `MiElHVAC` and `HVACSettings` JSON.

### Capability field renames

For naming consistency across the `*Supported` fields:
- `cap_heat` → `cap_mode_heat`, `HeatSupported` → `ModeHeatSupported`
- `cap_dry` → `cap_mode_dry`, `DrySupported` → `ModeDrySupported`
- `cap_fan_mode` → `cap_mode_fan`, `FanSupported` → `ModeFanSupported`
- `cap_auto_fan` → `cap_fan_auto`, `AutoFanSupported` → `FanAutoSupported`
- `OutdoorTempSupported` → `OutdoorTemperatureSupported`
- `TempCool` / `TempHeat` / `TempAuto` → `SetTemperatureCoolMinMax` / `SetTemperatureHeatMinMax` / `SetTemperatureAutoMinMax`

### Energy values

- `Power` (W) and `Energy` (kWh) published both inside `MiElHVAC` and in a standard Tasmota `ENERGY{}` sub-object (`Power`/`Total`) for Home Assistant auto-discovery.
- Added Web UI rows via `FUNC_WEB_SENSOR` showing instantaneous power (W) and cumulative total (kWh) on the Tasmota main page.

### Runtime i-See detection

New `sc_has_isee` flag in `miel_hvac_softc`, set in `miel_hvac_input_settings` on the first widevane value indicating i-See state. Once set, stays set for the session.

**Practical note:** after boot, the flag starts `false`. Units with i-See that has never been activated since Tasmota started will show `AirDirection` as hidden until i-See is first used (via IR remote or `HVACSetAirDirection`). Safe default — prevents showing misleading values on units without i-See.
2026-04-21 17:57:40 +02:00
Christian Baars
274d8f0895 I2S: fix mkv muxing for files (#24666)
Co-authored-by: Christian Baars <christianbaars@Mac-mini-von-Christian.local>
2026-04-21 17:57:09 +02:00
Jason2866
d1ff7cfa27 CI: no wait for safeboot build for tasmota language variant builds (#24668) 2026-04-21 17:51:38 +02:00
Jason2866
62cbd00891 CI: remove solidify / update actions version (#24667) 2026-04-21 17:28:16 +02:00
Theo Arends
abf49db263 Update change logs 2026-04-21 16:55:25 +02:00
s-hadinger
802b7c7aee Berry solidification is now part of the build system (#24664)
* Berry solidification if now part of the build system

* Force Python in UTF-8 on Windows
2026-04-21 16:08:28 +02:00
s-hadinger
7c622cf5ca Berry Python port fixes (#24659) 2026-04-19 23:15:14 +02:00
s-hadinger
79a955f46b Berry faster compilation (#24656) 2026-04-18 10:09:46 +02:00
s-hadinger
820cd8466a Berry minor fixes to compilation and doc (#24655) 2026-04-17 22:58:15 +02:00
s-hadinger
fa6d1183a1 Berry force type to 8 bit enum (#24654) 2026-04-17 21:44:44 +02:00
s-hadinger
ec4c78629b Berry fix invalid format in string.format (#24653) 2026-04-17 18:54:17 +02:00
Jason2866
ccc8eb0ef8 Do not use script port-vsc.py for pioarduino >= 1.3.6 (#24642) 2026-04-17 11:49:02 +02:00
s-hadinger
046a7a2c79 Berry fix internal naming in lexer (#24647) 2026-04-17 10:53:02 +02:00
s-hadinger
72067336b3 Update and simplify Berry doc for ai 2026-04-15 23:07:51 +02:00
s-hadinger
743bca4205 Remove redundant logs when TLS error 296 (#24641) 2026-04-14 23:14:22 +02:00
Jason2866
ae6f350b29 full picolib compability (#24598) 2026-04-14 21:20:33 +02:00
Jason2866
e93b5c42fd Github Actions: Install pioarduino core from PyPi (#24638) 2026-04-13 18:20:32 +02:00
Theo Arends
97c12b17ac Bump version v15.3.0.4 2026-04-12 17:05:17 +02:00
Jason2866
5bc33d3fdd Update Platforms to 2026.04.xx (#24635)
* Update Tasmota ESP32 version in PR template

* Update platform URL to version 2026.04.00

* Update platform URLs in platformio_tasmota32.ini
2026-04-12 15:41:10 +02:00
Jason2866
6db42be41f fix zopfli import error (#24631) 2026-04-11 23:55:01 +02:00
Theo Arends
3ed46799be Add dragino SN50v3 mode0 safeguard 2026-04-11 12:15:49 +02:00
s-hadinger
816c9b3b1c Add README for Berry python_port 2026-04-10 21:45:57 +02:00
Benjamin
25bd61489d Update SH1106_display.ini (#24627)
Added correct DC-DC initialisation for SH1106. Seee datasheet page 22.

Command 0x8D is unknown to SH1106 resulting in unstable DC-DC operation and no display operation.
2026-04-10 17:48:42 +02:00
Theo Arends
dceae31457 Add Dragino SN50v3 mode 0 decoding 2026-04-10 16:53:28 +02:00
Theo Arends
d3ef7adb2d Fix removal offlines from list 2026-04-09 13:39:38 +02:00
Theo Arends
a6089173ce Add HAss discovery to DDS75L and LHT52 2026-04-06 15:16:58 +02:00
Theo Arends
0cb2de76d1 Fix LoRaWan millis overflow (#24373)
- Fix lock/unlock icons
2026-04-06 12:54:13 +02:00
Theo Arends
62637ad16a Fix LoRaWan millis overflow (#24373)
- Fix lock/unlock icons
2026-04-06 12:47:08 +02:00
Theo Arends
d588821f26 Update changelogs 2026-04-04 11:23:17 +02:00
s-hadinger
e4c286dac3 Berry crash when comparing for equality float literals on ESP32 (#24610) 2026-04-04 09:47:12 +02:00
Theo Arends
fcef1b63b0 Add support for Shelly Pro EM-50 (#24604) 2026-04-03 11:46:31 +02:00
Theo Arends
7db333010b Prep Shelly Pro EM support 2026-03-31 14:25:09 +02:00
Theo Arends
74099b54e3 Fix Shelly Dimmer 2 serial timeout regression from v15.2.0.1 (#24560) 2026-03-30 14:38:20 +02:00
Theo Arends
f56d12b1bf Add Drivers PCA9685 and PCF8574 multi I2C bus support 2026-03-30 12:07:22 +02:00
s-hadinger
5cc4ddb5f0 Berry solidification with Python fix gc (#24601) 2026-03-29 22:00:05 +02:00
Theo Arends
c207cc27ae Add PWM driver PCA9685 multi I2C bus support 2026-03-28 17:28:35 +01:00
s-hadinger
26d9d6e14c Berry solidification made possible with Python runtime (#24599) 2026-03-28 09:43:06 +01:00
Jason2866
ee93c18e2e Prepare switch to IDF 5.5.3 based Tasmota Arduino (#24597)
* C2 Hybrid Compile safeboot
* Refactor firmware size check to use size tool output and regex.
2026-03-27 17:35:54 +01:00
Theo Arends
1f0e3f768d Update RELEASENOTES.md 2026-03-27 16:17:46 +01:00
Theo Arends
59c4d772c5 ESP8266 Remove unused I2C slave support 2026-03-26 18:00:21 +01:00
Jason2866
dd79556b29 fix: C++26 warning (#24586) 2026-03-26 14:29:42 +01:00
Jason2866
be7ab64492 Remove debug leftovers (#24595)
* Comment out check-wrapped-lwip-sntp-calls.py script

Comment out the check-wrapped-lwip-sntp-calls.py script in platformio.ini.

* Delete pio-tools/check-wrapped-lwip-sntp-calls.py
2026-03-26 14:21:10 +01:00