Commit Graph

21338 Commits

Author SHA1 Message Date
SteWers
e8a7a209b5 Fix PulseTime Remaining (#24690)
`PulseTime` `Remaining` sometimes returns a non zero value, when no pulsetime remains. It is caused by a rollover of `millis()`.
2026-04-30 16:21:49 +02:00
s-hadinger
487d4a7165 Berry first try for preprocessor to implement conditional logging (#24692)
* Berry first try for preprocessor to implement conditional logging

* Update solidified
2026-04-29 22:40:57 +02:00
s-hadinger
955d36cb1f Add explicit error message when compiling for WebSockets (#24691) 2026-04-29 22:31:49 +02:00
Jason2866
534efe0859 Remove legacy esp32 exception decoder from monitor_filters 2026-04-29 18:24:03 +02:00
Theo Arends
aa4037051d Add command SetOption [0..2] to display SetOption values 2026-04-29 12:27:51 +02:00
Theo Arends
dd58b80d53 Add Commands SetOption, SetOption 1 and SetOption 2 for display all SetOption values
Finally!
2026-04-28 15:31:17 +02:00
Theo Arends
518f839694 Revert "Add Commands SetOption, SetOption 1 and SetOption 2 for display all SetOption values"
This reverts commit 06b5042e17.
2026-04-28 15:10:30 +02:00
Theo Arends
06b5042e17 Add Commands SetOption, SetOption 1 and SetOption 2 for display all SetOption values
Better late than never.
2026-04-28 15:04:33 +02:00
Jason2866
7090fad51a add p4r3 safeboot to build flow (#24687) 2026-04-27 12:55:40 +02:00
Theo Arends
e5ad69c10d Update change logs 2026-04-27 11:17:12 +02:00
Grzegorz
13b7c7d26e MiElHVAC extend support of AirDirection control (#24675)
* 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.

* MiElHVAC Full support of AirDirection control
2026-04-27 11:13:16 +02:00
Theo Arends
7aab5fcdd7 Update change logs 2026-04-27 10:38:58 +02:00
s-hadinger
d718039a52 Berry fix compilation of webfiles (#24685) 2026-04-26 21:29:26 +02:00
Jason2866
358c15f7a8 use build env folder for dummy sdkconfig.h (#24684) 2026-04-26 13:48:42 +02:00
Jason2866
a0e6bf79e1 Force copy files to firmware directory 2026-04-26 12:43:29 +02:00
s-hadinger
f6bcc0e16a Berry transpose C defines to Berry in tasmota_defines_for_berry.be (#24680) 2026-04-25 23:28:49 +02:00
s-hadinger
2c61b34d78 Berry add support for pre-processor (#24679) 2026-04-25 22:39:59 +02:00
Jason2866
b901e186d3 disable IPv6 for C2 safeboot (#24678) 2026-04-25 19:16:12 +02:00
Jason2866
a14e4a951e Build ESP32-P4-rev3 variant (#24677) 2026-04-25 16:42:00 +02:00
Theo Arends
9cea93d958 Update change logs 2026-04-25 16:19:19 +02:00
Jason2866
1754557741 Switch to Tasmota Arduino 3.3.8 for all builds (#24676) 2026-04-25 15:17:25 +02:00
Theo Arends
1904f5a89e Oops. Forgot the version change 2026-04-22 22:03:50 +02:00
Theo Arends
802fbee8a8 Update release notes 2026-04-22 14:43:48 +02:00
Theo Arends
0982d53376 Bump version v15.4.0.1 2026-04-22 14:41:45 +02:00
Theo Arends
02be451f31 Fix ILI9488 parallel color display description (#24582) 2026-04-22 13:32:02 +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