* [EQ3-TRV] Update parsing and logging
Here are a lot of optimizations for parsing the command data. They make it smaller and saver.
Some adjustments of the log logic.
Cleaning up code in common.
* Fix MAC in Log
* Adapt `BLEDebug` to common command syntax
Adapt `BLEDebug` to common command syntax:
- `BLEDebug` - show debug logging status
- `BLEDebug 0` - turn off
- `BLEDebug 1` - turn on
A bit code cleanup without functional changes.
* More cleanup
* Implement per-level BLE logging
Replace the single BLEDebugMode flag with a BLELogLevel[] array and route BLE logging through per-level checks. Added a fast path in AddLog to skip loglevel==0. Updated the BLEDebug command to set and show per-level log values, and replaced conditional BLEDebugMode checks across BLE driver and MI/EQ3 modules with AddLog(BLELogLevel[...]) calls. Miscellaneous whitespace/help text tweaks included.
Clear the BLERunningScan flag when starting a new BLE operation to ensure proper state management. This prevents the scanning state from persisting incorrectly across operations.
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.
* 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>
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.
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>
* 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