mirror of
https://github.com/arendst/Tasmota.git
synced 2026-07-27 20:05:46 +00:00
development
35
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
d3eb7505f2 |
MiElHVAC auto-enable i-See widevane when setting AirDirection (#24860)
* 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 * MiELHVAC fix globals, VLA, duplicate JSON fields and float formatting ## Summary - **Remove file-scope globals** (`temp_type`, `remotetemp_active`, `remotetemp_auto_clear_time`, `remotetemp_last_call_time`, `remotetemp_half`): moved into `miel_hvac_softc` as `sc_temp_type` and `sc_remotetemp_*`. All references updated. Eliminates potential conflict with other drivers sharing the same translation unit. - **Fix VLA in `miel_hvac_send`**: `char hex_d[(len + 1) * 2]` replaced with fixed-size `(MIEL_HVAC_DATABUFLEN + 1) * 2`. Variable-length arrays on the stack are disallowed by `-Wvla` and unreliable on embedded targets. - **Make `temp_type` explicit**: helper functions `miel_hvac_deg2temp`, `miel_hvac_temp2deg`, `miel_hvac_roomtemp2deg` now take `bool temp_type` as a parameter. Detection of the extended encoding moved from render functions to `miel_hvac_input_data()`, removing a hidden side effect inside JSON serialisation code. - **Remove duplicate JSON fields**: `Purifier`, `NightMode`, `EconoCool` were emitted twice (from both the settings block and the options block). Options block now only emits `OptionsHex`. - **Fix `RemoteTemperatureSensorAutoClearTime` JSON type**: was serialised as a string (`"10000"`), now a proper JSON number (`10000`). - **Bool consistency**: assignments `= 1` / `= 0` on `bool` fields replaced with `= true` / `= false`. * MiElHVAC auto-enable i-See widevane when setting AirDirection ### Problem `HVACSetAirDirection` (`indirect` / `direct` / `even`) sets the i-See airflow direction via a `0x41 0x08` runstate packet (flag `0x2000`). The unit only honors that value once i-See airflow control is enabled, which requires `widevane=0x80` sent in a `0x01` settings packet. Until now the user had to manually run `HVACSetWideVane isee` **before** `HVACSetAirDirection`, otherwise the direction change was silently ignored. ### Change `HVACSetAirDirection` now sets the widevane to `MIEL_HVAC_SETTINGS_WIDEVANE_ISEE` (`0x80`) in the same call. The dispatcher always sends the settings (`0x01`) packet before the runstate (`0x41`) packet, so the unit receives the i-See enable first and the direction value on the following tick — no manual ordering required. ### Notes - `off` is unchanged (still expressed as `widevane=0x8c` via `0x01`). - The existing capability guard (`cap_vane_v` + `sc_has_isee`) is unchanged. |
||
|
|
7a37821ecf |
MiElHVAC: sync SENSOR, HVACSettings and discovery on state change (#24813)
* 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 * MiELHVAC fix globals, VLA, duplicate JSON fields and float formatting ## Summary - **Remove file-scope globals** (`temp_type`, `remotetemp_active`, `remotetemp_auto_clear_time`, `remotetemp_last_call_time`, `remotetemp_half`): moved into `miel_hvac_softc` as `sc_temp_type` and `sc_remotetemp_*`. All references updated. Eliminates potential conflict with other drivers sharing the same translation unit. - **Fix VLA in `miel_hvac_send`**: `char hex_d[(len + 1) * 2]` replaced with fixed-size `(MIEL_HVAC_DATABUFLEN + 1) * 2`. Variable-length arrays on the stack are disallowed by `-Wvla` and unreliable on embedded targets. - **Make `temp_type` explicit**: helper functions `miel_hvac_deg2temp`, `miel_hvac_temp2deg`, `miel_hvac_roomtemp2deg` now take `bool temp_type` as a parameter. Detection of the extended encoding moved from render functions to `miel_hvac_input_data()`, removing a hidden side effect inside JSON serialisation code. - **Remove duplicate JSON fields**: `Purifier`, `NightMode`, `EconoCool` were emitted twice (from both the settings block and the options block). Options block now only emits `OptionsHex`. - **Fix `RemoteTemperatureSensorAutoClearTime` JSON type**: was serialised as a string (`"10000"`), now a proper JSON number (`10000`). - **Bool consistency**: assignments `= 1` / `= 0` on `bool` fields replaced with `= true` / `= false`. * MiEl HVAC: sync SENSOR, HVACSettings and discovery on state change When settings (power, mode, temp, fan, vane, etc.) are confirmed by the unit, publish both tele/+/HVACSettings and tele/+/SENSOR so the two topics stay consistent. Also call TasRediscover() to refresh the retained tasmota/discovery/+/sensors snapshot used by HA on reconnect. Apply the same treatment to Options (Purifier, NightMode, EconoCool): when they change, update both tele/+/SENSOR and tele/+/HVACSettings in addition to refreshing the discovery snapshot. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|
|
07154d430a |
MiELHVAC fix globals, VLA, duplicate JSON fields and float formatting (#24784)
* 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 * MiELHVAC fix globals, VLA, duplicate JSON fields and float formatting ## Summary - **Remove file-scope globals** (`temp_type`, `remotetemp_active`, `remotetemp_auto_clear_time`, `remotetemp_last_call_time`, `remotetemp_half`): moved into `miel_hvac_softc` as `sc_temp_type` and `sc_remotetemp_*`. All references updated. Eliminates potential conflict with other drivers sharing the same translation unit. - **Fix VLA in `miel_hvac_send`**: `char hex_d[(len + 1) * 2]` replaced with fixed-size `(MIEL_HVAC_DATABUFLEN + 1) * 2`. Variable-length arrays on the stack are disallowed by `-Wvla` and unreliable on embedded targets. - **Make `temp_type` explicit**: helper functions `miel_hvac_deg2temp`, `miel_hvac_temp2deg`, `miel_hvac_roomtemp2deg` now take `bool temp_type` as a parameter. Detection of the extended encoding moved from render functions to `miel_hvac_input_data()`, removing a hidden side effect inside JSON serialisation code. - **Remove duplicate JSON fields**: `Purifier`, `NightMode`, `EconoCool` were emitted twice (from both the settings block and the options block). Options block now only emits `OptionsHex`. - **Fix `RemoteTemperatureSensorAutoClearTime` JSON type**: was serialised as a string (`"10000"`), now a proper JSON number (`10000`). - **Bool consistency**: assignments `= 1` / `= 0` on `bool` fields replaced with `= true` / `= false`. |
||
|
|
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 |
||
|
|
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. |
||
|
|
6eec482b79 |
MiELHVAC Remote Temp Refactor (#24517)
* 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 |
||
|
|
14a2c0e47b |
MiELHVAC extend support for Home Assistant (#24496)
* 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 |
||
|
|
dcf79d3946 |
MiELHVAC extend support for Home Assistant (#24490)
* 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 |
||
|
|
77f5f63d35 |
MiELHVAC update (#24488)
* 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 |
||
|
|
faf90677bd |
MiElHVAC improvements (#24486)
* Update xdrv_44_miel_hvac.ino * Update xdrv_44_miel_hvac.ino - added energy sensors POWER, ENERGY TOTAL, FREQUENCY - other changes and improvements |
||
|
|
0947860c83 |
Update pl_PL.h (#22491)
* Update pl_PL.h Fix typo and gramma * Update pl_PL.h |
||
|
|
ef7cd80ed8 |
Update pl_PL.h (#22490)
* Update pl_PL.h More PL translations * Update pl_PL.h |
||
|
|
0dcfa74ef3 | Update pl_PL.h (#22483) | ||
|
|
ff0d003a24 |
Fix Standby Stage for MiElHVAC (#22430)
* Add prohibit function for MiElHVAC
Add Prohibit functions:
* Power
* Temperature
* Mode
and all combinations of this functions
Updated VaneV names for better identify
* Fixed Compressor and Operation for MiElHVAC
Changed Widevane position name from ISEE to AUTO sam as in MELCLoud
* Revert "Fixed Compressor and Operation for MiElHVAC"
This reverts commit
|
||
|
|
56243ef720 |
New features for MiElHVAC (#22423)
* Add prohibit function for MiElHVAC
Add Prohibit functions:
* Power
* Temperature
* Mode
and all combinations of this functions
Updated VaneV names for better identify
* Fixed Compressor and Operation for MiElHVAC
Changed Widevane position name from ISEE to AUTO sam as in MELCLoud
* Revert "Fixed Compressor and Operation for MiElHVAC"
This reverts commit
|
||
|
|
5aaeecdbe8 |
New features for MiElHVAC (#22395)
* Add prohibit function for MiElHVAC
Add Prohibit functions:
* Power
* Temperature
* Mode
and all combinations of this functions
Updated VaneV names for better identify
* Fixed Compressor and Operation for MiElHVAC
Changed Widevane position name from ISEE to AUTO sam as in MELCLoud
* Revert "Fixed Compressor and Operation for MiElHVAC"
This reverts commit
|
||
|
|
18bfda50ab |
Improvements to remote temp, auto clear time for MiElHVAC (#22379)
* Add prohibit function for MiElHVAC
Add Prohibit functions:
* Power
* Temperature
* Mode
and all combinations of this functions
Updated VaneV names for better identify
* Fixed Compressor and Operation for MiElHVAC
Changed Widevane position name from ISEE to AUTO sam as in MELCLoud
* Revert "Fixed Compressor and Operation for MiElHVAC"
This reverts commit
|
||
|
|
27db263493 |
New feature Auto Clear Remote Temp for MiElHVAC (#22370)
* Add prohibit function for MiElHVAC
Add Prohibit functions:
* Power
* Temperature
* Mode
and all combinations of this functions
Updated VaneV names for better identify
* Fixed Compressor and Operation for MiElHVAC
Changed Widevane position name from ISEE to AUTO sam as in MELCLoud
* Revert "Fixed Compressor and Operation for MiElHVAC"
This reverts commit
|
||
|
|
e4f431dc7b |
New feature Compressor Frequency for MiElHVAC (#22347)
* Add prohibit function for MiElHVAC
Add Prohibit functions:
* Power
* Temperature
* Mode
and all combinations of this functions
Updated VaneV names for better identify
* Fixed Compressor and Operation for MiElHVAC
Changed Widevane position name from ISEE to AUTO sam as in MELCLoud
* Revert "Fixed Compressor and Operation for MiElHVAC"
This reverts commit
|
||
|
|
5200aca185 |
New feature Outdoor Temperature for MiElHVAC (#22345)
* Add prohibit function for MiElHVAC
Add Prohibit functions:
* Power
* Temperature
* Mode
and all combinations of this functions
Updated VaneV names for better identify
* Fixed Compressor and Operation for MiElHVAC
Changed Widevane position name from ISEE to AUTO sam as in MELCLoud
* Revert "Fixed Compressor and Operation for MiElHVAC"
This reverts commit
|
||
|
|
6b094ede16 |
New feature operation time for MiElHVAC (#22334)
* Add prohibit function for MiElHVAC
Add Prohibit functions:
* Power
* Temperature
* Mode
and all combinations of this functions
Updated VaneV names for better identify
* Fixed Compressor and Operation for MiElHVAC
Changed Widevane position name from ISEE to AUTO sam as in MELCLoud
* Revert "Fixed Compressor and Operation for MiElHVAC"
This reverts commit
|
||
|
|
6a7f8b11ed |
New feature for MiElHVAC (#22290)
* Add prohibit function for MiElHVAC
Add Prohibit functions:
* Power
* Temperature
* Mode
and all combinations of this functions
Updated VaneV names for better identify
* Fixed Compressor and Operation for MiElHVAC
Changed Widevane position name from ISEE to AUTO sam as in MELCLoud
* Revert "Fixed Compressor and Operation for MiElHVAC"
This reverts commit
|
||
|
|
63d44c8b30 |
Add prohibit function for MiElHVAC (#22269)
Add Prohibit functions: * Power * Temperature * Mode and all combinations of this functions Updated VaneV names for better identify |
||
|
|
abc6e46354 |
Add Air Direction control for MiElHVAC (#22241)
* Update xdrv_44_miel_hvac.ino
Code structure cleanup,
Add Power, SetTemperature, Mode, SwingV, SwingH, FanSpeed to JSON StatusSNS MiElHVAC
* Update xdrv_44_miel_hvac.ino
* clesnup
* Revert "Update xdrv_44_miel_hvac.ino"
This reverts commit
|
||
|
|
ba687deaf5 |
Bridge Mitsubishi AC devices to Homebridge/Homekit locally (#22236)
* Update xdrv_44_miel_hvac.ino
Code structure cleanup,
Add Power, SetTemperature, Mode, SwingV, SwingH, FanSpeed to JSON StatusSNS MiElHVAC
* Update xdrv_44_miel_hvac.ino
* clesnup
* Revert "Update xdrv_44_miel_hvac.ino"
This reverts commit
|
||
|
|
6fa38e4b83 |
Add heat/dry/cool isee operation mode to xdrv_44_miel_hvac.ino (#22216)
* Add heat/dry/cool isee operation mode to xdrv_44_miel_hvac.ino This add heat, dry, and cool isle operation mode to support new AC devices. Closes also #10937 * remove duplicated wide vane mode |
||
|
|
16afea9c08 | Update pl_PL.h | ||
|
|
35e306f410 |
Update pl-PL.h
Update PL to last changes. |
||
|
|
5c2f4b741a |
Update pl-PL.h
again some small changes |
||
|
|
9d44cebaab |
Update pl-PL.h
Corrected found bugs.. |
||
|
|
af65f1bd6a |
Update pl-PL.h
Again some fixes |
||
|
|
d99261298e |
Update pl-PL.h
More fixes.. |
||
|
|
7e8ea151c1 |
Update pl-PL.h
allmost done |
||
|
|
9553be93bc |
Update pl-PL.h
additional changes... |
||
|
|
7cf303a729 |
Update pl-PL.h
Some additional translations in Pl and many fixes. |