Commit Graph

21492 Commits

Author SHA1 Message Date
Theo Arends
3725d6eb47 Fix Can sniffer functionality (#18287) 2026-07-28 10:49:59 +02:00
Heo ye won
2eda5214cf MAX7219 matrix: add positioned text support for multi-row displays (#24917) 2026-07-27 13:34:31 +02:00
s-hadinger
6fbf626977 MQTT more hardening and fixes from pubsub3 (#24920) 2026-07-26 21:54:04 +02:00
Theo Arends
2f136a3290 Bump version v15.5.0.2 2026-07-23 21:57:45 +02:00
s-hadinger
2d340102a3 PubSub lib renamed TasmotaPubSub, hardening fixes and comprehensive non-regression tests (#24916) 2026-07-23 20:49:54 +02:00
sfromis
70fa0c5ad5 Include USE_TCP_BRIDGE with tasmota-zigbee build (#24912)
Since tasmota-zigbee is for use with CC2530, it makes sense to have USE_TCP_BRIDGE included too, for users wanting to use it with Z2M or ZHA.
2026-07-22 17:27:05 +02:00
Theo Arends
23ed46deff Update change logs 2026-07-21 14:04:17 +02:00
s-hadinger
c144ac9639 TLS support for EC P-384 curve in server certificate (#24909) 2026-07-20 21:40:53 +02:00
Theo Arends
453b8ad138 Update change logs 2026-07-20 17:13:35 +02:00
Antonis
4383a8673a MagicSwitch: add configurable masking window (fixing problems with multiple false triggering) (#24888) 2026-07-20 15:53:36 +02:00
gionag
3dd46b0b44 Fix ESP8266 crash-loop on PZEM/Modbus: move stray delay() inside rx-enable guard (#24886) 2026-07-20 15:52:18 +02:00
s-hadinger
5614aaec2a HASPmota and LVGL stripes widget (#24907) 2026-07-18 17:34:55 +02:00
Agent Blu, 006
2bceaa0431 Committing new ST7567 display (#24903) 2026-07-18 11:50:48 +02:00
Christian Baars
61fe447df6 Update default .clangd with new compile flags and includes (#24897)
intended as base configuration for editors other than Visual Studio Code, which do not have such feature rich extension like Pioarduino for Visual Studio Code. Tested with Zed.
2026-07-15 16:00:20 +02:00
Christian Baars
a1639507d1 Udisp SPI fix for mono color display (#24899)
* fix union offset for SPI mono display

* fix debug log to correcty use USE_UNIVERSAL_TOUCH
2026-07-14 19:03:57 +02:00
s-hadinger
a6454b7459 Update Changelog 2026-07-07 20:02:06 +02:00
Jean-Laurent Girod
5acc4a368b Add Matter virtual IR HVAC thermostat support (#24821)
* Add Matter virtual IR HVAC thermostat support

Introduce a generic Matter thermostat plugin and a virtual HVAC plugin that maps thermostat state changes to Tasmota IRHVAC commands.

Add virtual HVAC option switches for IRHVAC boolean options such as Econo, Quiet, Turbo, Light, Filter, Clean, Beep, and iFeel. These option endpoints are attached to the HVAC endpoint PartsList instead of being listed as top-level aggregator parts.

Expose the new virtual device types in the Matter UI and refresh endpoint PartsList attributes when endpoint composition changes.

* Warn on invalid Matter v.HVAC vendor

* Fix regression

* Matter virtual IR HVAC thermostat support

* Revert

---------

Co-authored-by: Jean-Laurent Girod <macjl@users.noreply.github.com>
Co-authored-by: s-hadinger <49731213+s-hadinger@users.noreply.github.com>
2026-07-07 20:00:24 +02:00
hk2k2
ff1548f686 Create SH1107_128x128_display.ini (#24877)
Add Display.ini Support for 
1,5" SH1107 with 128x128 Pixel in I2C Mode.
2026-07-07 14:52:48 +02:00
s-hadinger
0e4f4c7a97 HASPmota new style for demo (#24875) 2026-07-05 17:54:01 +02:00
s-hadinger
aec8e2395a HASPmota ability to set default screen background on p0b0 object (#24874) 2026-07-04 12:47:01 +02:00
Theo Arends
989866fe6d Update change logs 2026-07-03 14:29:13 +02:00
mikep1998
a3ac5bab3d Fix default button/switch actions on builds without rules (#24871)
RulesProcessEvent() in xdrv_10_system_events.ino (which owns the Xdrv10
slot when neither USE_RULES nor USE_SCRIPT is compiled) returned true
unconditionally. SendKey() interprets true as "event serviced", so the
default ButtonN -> ExecuteCommandPower action never executed: the press
was logged (BTN: ButtonN multi-press 1) but the relay never toggled.
Return false instead, mirroring xdrv_10_rules.ino's 'serviced' semantics
where true means a rule actually consumed the event.
2026-07-03 14:23:31 +02:00
Theo Arends
d87c17af21 Update change logs 2026-07-02 15:49:43 +02:00
JensHeilig
a1720a9d72 Fix *float* output in EQ3 mqtt messages (#24869)
Recent core refactoring removed standard support for float variables in printf family functions, resulting in eQ-3 telemetry messages showing '*float' instead of actual float values. Updated the formatting specifier to %1_f and passed the reference to the float parameter to ResponseAppend_P function

Co-authored-by: Jens.Heilig <jens.heilig@esystems-mtg.de>
2026-07-02 09:32:50 +02:00
hk2k2
5b212c1d97 Create ST7789_320x240.ini (#24868)
Add ST7789 Display 2" with 320x240 Resolution
2026-07-02 09:03:54 +02:00
Theo Arends
846490ece4 Add logging for Hosted MCU SDIO connection (#24864) 2026-07-01 16:19:26 +02:00
Pierre Jochem
1495844c32 feat: add qemu emulator for esp32 (#24861)
* feat: add qemu emulator

* chore: use current dir instead of cloning repo

* Add QEMU emulator tooling under tools/qemu

tools/qemu/tasmota-qemu.sh builds the current Tasmota checkout for an ESP32
PlatformIO env and boots it under an Espressif QEMU fork on an amd64 host:
serial console, and a browsable web UI via the WiFi-capable fork.

  NET_WIFI=1 tools/qemu/tasmota-qemu.sh   # build -> image -> wifi QEMU -> web UI

Notes:
- Builds the local working tree (no clone); artifacts and QEMU forks live under
  a gitignored tasmota-qemu/ at the repo root.
- ESP32-only helper; no Tasmota core source is changed.

See tools/qemu/README.md for commands, env vars, and panic-debugging notes.

* chore: cleanup
2026-06-27 17:07:46 +02:00
Theo Arends
796242fdac Update change logs 2026-06-27 10:59:33 +02:00
Grzegorz
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.
2026-06-27 10:12:53 +02:00
s-hadinger
e352266405 Berry fix warnings when running unit tests (#24859) 2026-06-26 15:52:27 +02:00
s-hadinger
39ad0f57a4 Berry bytes methods setbits/getbits transposed to native and support for big endian (#24857) 2026-06-26 09:23:33 +02:00
Theo Arends
8b4828807b Add default BSSID on initial config 2026-06-22 17:31:50 +02:00
Theo Arends
8dc0e1d3fa Bump version v15.5.0.1 2026-06-22 17:07:22 +02:00
Theo Arends
ee435ea968 Fix possible buffer overflow 2026-06-22 15:24:06 +02:00
Theo Arends
5ba66d80c3 Add command BSSid[1|2] [0|1|11:22:33:44:55:66] to select fixed WiFi Access Point disabling SetOption56 and SetOption57 (#24394) 2026-06-21 17:43:52 +02:00
Theo Arends
a27df15739 Fix SML modbus/TCP on ESP32-p4 with only Ethernet shows "SML: could not connect TCP since wifi is down" (#24845) 2026-06-21 15:35:36 +02:00
Theo Arends
c992ddb8ae Fix GUI console background color 2026-06-21 15:20:07 +02:00
Theo Arends
7f874b2a14 Update change logs 2026-06-21 15:00:33 +02:00
Štěpán Dalecký
6c208a6b5f Enhance Matter plugin functionality for On/Off control and add support for Global Scene Control and related commands (#24854) 2026-06-21 10:18:54 +02:00
Theo Arends
afa685472f Update template.md with last years additions 2026-06-17 14:57:28 +02:00
Theo Arends
00bab175a8 Update change logs 2026-06-17 12:36:10 +02:00
s-hadinger
ba6159f78a Berry LVGL mapping refactor (#24844) 2026-06-16 12:32:38 +02:00
s-hadinger
43a5153cab Berry more multiple minor fixes (#24843) 2026-06-16 09:34:55 +02:00
s-hadinger
45a72fa216 Berry multiple minor fixes (#24842) 2026-06-15 23:05:04 +02:00
s-hadinger
88eff2ce51 AsyncHttpClientLifght code analysis (#24841) 2026-06-15 22:11:49 +02:00
s-hadinger
bd466806fe Berry optimized solidified structures for code constants and maps (#24838) 2026-06-14 20:59:19 +02:00
s-hadinger
b29f6926e1 Berry fix rare GC bug in deinit (#24837) 2026-06-14 19:54:35 +02:00
s-hadinger
fc1c2a563f Berry fix rare GC bug in bytecode (#24836) 2026-06-14 19:35:49 +02:00
sfromis
07493b4e69 Update tasmota_globals.h - WebColor consistency (#24833)
Noticed a small inconsistency of the default light WebColor palette not fully matching the light palette example in my_user_config.h and the docs WebUI page. The color for COLOR_BUTTON_OFF was a long time ago changed from dark blue #08405e to the better-working pale blue #a1d9f7 without this being reflected in the defaults used in the absence of another #define value.

Of course, this normally makes no difference as the standard my_user_config.h defines a full dark palette anyway, but still....
2026-06-13 14:10:47 +02:00
Theo Arends
c4b01cc013 Update change logs 2026-06-13 12:38:08 +02:00