* Matter: add Electrical Power Measurement cluster to On/Off Plug-in Unit Adds a new "relay_power" plugin type (Matter_Plugin_OnOff_Power) that extends the existing relay/OnOff Plug-in Unit (0x010A) with the Electrical Power Measurement cluster (0x0090), reporting Voltage, Current, ActivePower, ApparentPower, ReactivePower, Frequency and PowerFactor from Tasmota's ENERGY sensor JSON, so Matter controllers can display live power usage for smart plugs with energy monitoring. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * Matter: add v_relay_power virtual variant for Electrical Power Measurement Adds Matter_Plugin_Virt_OnOff_Power ("v_relay_power") so the new ElectricalPowerMeasurement-enabled plug can be exercised without physical hardware, driven entirely via `MtrUpdate` (e.g. Voltage/Current/ActivePower/ ApparentPower/ReactivePower/Factor/Frequency). Also guards Matter_Plugin_OnOff_Power.parse_sensors() against VIRTUAL instances (it must not read the local ENERGY sensor) and declares UPDATE_COMMANDS so MtrUpdate accepts the new measurement keys. The wattage key is named `ActivePower` rather than `Power` since `Power` is already the inherited On/Off boolean command. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * Matter: register new plugin headers in be_matter_module.c be_matter_module.c maintains an explicit, hand-written list of solidified Berry header includes (no auto-discovery). The new OnOff_Power and Virt_OnOff_Power plugin files were missing from that list, so their classes were never defined, causing the "undeclared" build failures reported by CI (be_class_Matter_Plugin_OnOff_Power / be_class_Matter_Plugin_Virt_OnOff_Power) even though matter.plugins_classes referenced them by name. * Matter: add http_relay_power bridge variant for Electrical Power Measurement Adds Matter_Plugin_Bridge_OnOff_Power ("http_relay_power") so the ElectricalPowerMeasurement-enabled plug can also be bridged from a remote Tasmota device over HTTP (polling `Status 10`), completing the local/virtual/ bridge trio already used by other plugins (relay, relay_power now included). Refactors the ENERGY-object parsing in Matter_Plugin_OnOff_Power into a shared `_parse_energy()` helper used by both `parse_sensors()` (local device) and the new `parse_status()` override (bridge, index 10 / Status 10), and guards `parse_sensors()` against BRIDGE instances so a bridge endpoint never reads the local gateway's own ENERGY sensor by mistake. Registers the new solidified header in be_matter_module.c (missed this for the previous two plugin files, which broke CI) and adds http_relay_power to the bridge type dropdown in Matter_UI.be. Verified with a full PlatformIO build for tasmota32s3 (SUCCESS). * Matter: auto-detect relay_power on remote bridge devices with an ENERGY sensor The "Add Remote sensor or device" auto-detection always suggested plain light0/relay for every detected relay channel, even when the remote device reports an ENERGY sensor (e.g. a NOUS A5T 4-outlet power strip with a single shared CSE7766 meter) - so relay+power devices showed up as plain "Light 0 OnOff" with no way to pick relay_power from that screen (the type column is static text for already-detected rows, only editable for a brand new blank row). generate_config_from_status() now tags the first detected relay as relay_power when ENERGY is present, leaving the rest as plain relays: most Tasmota energy-monitoring boards have a single meter for the whole device, not one per relay, so duplicating the cluster across every channel would misleadingly show the same aggregate reading on each endpoint. * Matter: compose Electrical Sensor device type onto the power-monitoring plug Adds device type 0x0510 (Electrical Sensor) alongside 0x010A (On/Off Plug-in Unit) on the same endpoint for relay_power/v_relay_power/ http_relay_power, plus the mandatory Power Topology cluster (0x009C) with the NODE feature (this single ENERGY sensor meters the whole device, not a subset of endpoints - matches Tasmota's non-indexed ENERGY object). Matches the Matter 1.4.1 Device Library requirement that Electrical Power Measurement lives on an Electrical Sensor device type, while keeping the cluster on the plug's own endpoint (composed DeviceTypeList) rather than a separate endpoint, since controllers only recognize the measurement capability when the Electrical Sensor device type is actually declared. Verified on real ESP32-S3 hardware via chip-tool: endpoint 2 now reports DeviceTypeList = [266 (On/Off Plug-in Unit), 1296/0x0510 (Electrical Sensor), 19 (Bridged Node)], and Power Topology FeatureMap = 1 (NODE). --------- Co-authored-by: Ludovic BOUÉ <938089+lboue@users.noreply.github.com> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Alternative firmware for ESP8266 and ESP32 based devices with easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP, Serial or KNX. Written for PlatformIO.
In light of current events we like to support the people behind PlatformIO Project, especially Ivan Kravets, and wish them the strength to help stop the war. See platformio-is-ukrainian-project-please-help-us-stop-the-war for what you can do.
Why Tasmota?
Tasmota is open-source firmware born for the ESP8266/ESP8285, now covering the whole ESP32 family: ESP32, ESP32-S2, ESP32-S3, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-P4, with PSRAM and USB/CDC support where available.
It talks MQTT (v3.1.1 or v5) to your own broker or a cloud one over TLS (AWS IoT Core and Azure IoT Hub), or runs entirely standalone with no server at all — your choice.
Here's a tour of what it can do:
| Area | What you get |
|---|---|
| Smart home integrations | Plugs into Home Assistant, Domoticz, openHAB, Node-RED, KNX and more via MQTT, local or cloud (AWS IoT Core and Azure IoT Hub). See Smart Home Integrations. |
| Matter protocol | Runs natively on ESP32, no MQTT, hub or companion app required. Pairs directly with Apple Home, Google Home, Amazon Alexa and Home Assistant. An ESP32 can also bridge your existing ESP8266 devices into Matter. See Matter. |
| Sensors & peripherals | 150+ supported sensors and peripherals over I²C, SPI, 1-Wire and analog, most auto-detected once wired: temperature/humidity (DHT11/DHT22, DS18x20, BME280, SHT30), CO2 (MH-Z19, SCD4x), air quality/dust (PMS5003, SPS30), energy monitoring (INA219, Eastron SDM), motion (PIR, mmWave radar), light (BH1750), and many more. See Peripherals and the device database. |
| Home appliances | Drives shutters and blinds (pulse, stepper or servo motors), thermostat control for heating/cooling, and reads smart meter interfaces (SML, OBIS, Modbus meters) for energy and utility data. |
| Lights | Dims, color-temperature-tunes or full-color controls light bulbs and strips: single-channel dimmers, CT, RGB, RGBW and RGBCW, plus addressable LED strips (WS2812, SK6812...). |
| Protocol bridging | Speaks Infrared (send & receive), RF, DALI, Modbus, RS-485, OpenTherm, TWAI/CAN, LoRa/LoRaWan, HDMI-CEC, Telegram and SMTP email, plus a generic Arduino MCU bridge. |
| Zigbee & Bluetooth | Turns an ESP32 into a Zigbee coordinator or a BLE gateway (including BTHome), bridging devices without a separate hub. |
| Displays & touch UI | Drives character, graphic and e-paper displays, and on ESP32 renders rich, animated touchscreen UIs with LVGL — resistive or capacitive touch, SPI panels. HASPmota builds full UIs from simple JSON templates, no LVGL or Berry code needed. |
| Automation & scripting | Rules and Timers handle on-device automation; the Berry scripting language gives full programmatic control — it's also what powers LVGL, HASPmota and the animation engine. |
| Networking | Wired Ethernet, IPv6, Wi-Fi range extender mode, a built-in WireGuard VPN client for secure remote access, and TasMesh for encrypted ESP-NOW mesh links to battery-powered nodes. |
| LED animation | A dedicated DSL-based engine animates addressable LED strips (WS2812, SK6812...) with effects like pulse, breathe, comet and twinkle. Design and preview animations in the online browser emulator before flashing. |
| Audio | I2S audio support adds microphone input and speaker/DAC output, including MP3/AAC/OPUS streaming. |
| And more | TuyaMCU support for Tuya Wi-Fi/MCU devices, Shelly Gen2 emulation, deep/dynamic sleep for battery devices, Device Groups for keeping devices in sync, ArtNet DMX, TensorFlow Lite and ULP coprocessor scripting on ESP32, a file system with optional SD card storage. |
Not every feature fits in the precompiled release binaries due to flash size limits — some require compiling your own build. See the full documentation for details.
Easy install
Easy initial installation of Tasmota can be performed using the Tasmota WebInstaller.
If you like Tasmota, give it a star, or fork it and contribute!
See RELEASENOTES.md for release information.
Firmware binaries can be downloaded from http://ota.tasmota.com/tasmota/release/ or http://ota.tasmota.com/tasmota32/release/ for ESP32 binaries.
Development
See CHANGELOG.md for detailed change information.
Unless your Tasmota powered device exhibits a problem or lacks a feature that you need, leave your device alone - it works so don’t make unnecessary changes! If the release version (i.e., the master branch) exhibits unexpected behaviour for your device and configuration, you should upgrade to the latest development version instead to see if your problem is resolved as some bugs in previous releases or development builds may already have been resolved.
Every commit made to the development branch, which is compiling successfully, will post new binary files at http://ota.tasmota.com/tasmota/ (this web address can be used for OTA updates too). It is important to note that these binaries are based on the current development codebase. These commits are tested as much as is possible and are typically quite stable. However, it is infeasible to test on the hundreds of different types of devices with all the available configuration options permitted.
Note that there is a chance, as with any upgrade, that the device may not function as expected. You must always account for the possibility that you may need to flash the device via the serial programming interface if the OTA upgrade fails. Even with the master release, you should always attempt to test the device or a similar prototype before upgrading a device which is in production or is hard to reach. And, as always, make a backup of the device configuration before beginning any firmware update.
Disclaimer
⚠️ DANGER OF ELECTROCUTION ⚠️
If your device connects to mains electricity (AC power) there is danger of electrocution if not installed properly. If you don't know how to install it, please call an electrician (Beware: certain countries prohibit installation without a licensed electrician present). Remember: SAFETY FIRST. It is not worth the risk to yourself, your family and your home if you don't know exactly what you are doing. Never tinker or try to flash a device using the serial programming interface while it is connected to MAINS ELECTRICITY (AC power).
We don't take any responsibility nor liability for using this software nor for the installation or any tips, advice, videos, etc. given by any member of this site or any related site.
Note
Please do not ask to add new devices unless it requires additional code for new features. If the device is not listed as a module, try using Templates first. If it is not listed in the Tasmota Device Templates Repository create your own Template.
Quick Install
Download one of the released binaries from http://ota.tasmota.com/tasmota/release/ or http://ota.tasmota.com/tasmota32/release/ and flash it to your hardware using our installation guide.
Important User Compilation Information
If you want to compile Tasmota yourself keep in mind the following:
- For ESP8285 based devices only Flash Mode DOUT is supported. Do not use Flash Mode DIO / QIO / QOUT as it might seem to brick your device.
- For ESP8285 based devices Tasmota uses a 1M linker script WITHOUT spiffs 1M (no SPIFFS) for optimal code space.
- To make compile time changes to Tasmota use the
user_config_override.hfile. It assures keeping your custom settings when you download and compile a new version. You have to make a copy from the provideduser_config_override_sample.hfile and add your setting overrides.
Configuration Information
Please refer to the installation and configuration articles in our documentation.
Migration Information
See migration path for instructions how to migrate to a major version.
Do not upgrade from minimal to minimal version. It will most likely fail at some point and will require flashing via serial. If you do have to use minimal versions, always OTA to a full version of the same release before applying next minimal version.
Pay attention to the following version breaks due to dynamic settings updates:
- Migrate to Sonoff-Tasmota 3.9.x
- Migrate to Sonoff-Tasmota 4.x
- Migrate to Sonoff-Tasmota 5.14
- Migrate to Sonoff-Tasmota 6.7.1 (http://ota.tasmota.com/tasmota/release_6.7.1/sonoff.bin) - NOTICE underscore as a dash is not supported in older versions
- Migrate to Tasmota 7.2.0 (http://ota.tasmota.com/tasmota/release-7.2.0/tasmota.bin)
--- Major change in parameter storage layout ---
- Migrate to Tasmota 8.5.1 (http://ota.tasmota.com/tasmota/release-8.5.1/tasmota.bin)
--- Major change in internal GPIO function representation ---
- Migrate to Tasmota 9.1 (http://ota.tasmota.com/tasmota/release-9.1.0/tasmota.bin.gz)
- Upgrade to latest release (http://ota.tasmota.com/tasmota/release/tasmota.bin.gz)
While fallback or downgrading is common practice it was never supported due to Settings additions or changes in newer releases. Starting with release v9.1.0 Imogen the internal GPIO function representation has changed in such a way that fallback is only possible to the latest GPIO configuration before installing v9.1.0.
Support Information
For a database of supported devices see Tasmota Device Templates Repository
If you're looking for support on Tasmota there are some options available:
Documentation
- Documentation Site: For information on how to flash Tasmota, configure, use and expand it
- FAQ and Troubleshooting: For information on common problems and solutions.
- Commands Information: For information on all the commands supported by Tasmota.
Support's Community
- Tasmota Discussions: For Tasmota usage questions, Feature Requests and Projects.
- Tasmota Users Chat: For support, troubleshooting and general questions. You have better chances to get fast answers from members of the Tasmota Community.
- Search in Issues: You might find an answer to your question by searching current or closed issues.
- Software Problem Report: For reporting problems of Tasmota Software.
Unofficial Community Resources
- Tasmota-DE: A German-language Telegram group related to Tasmota.
Contribute
You can contribute to Tasmota by
- Providing Pull Requests (Features, Proof of Concepts, Language files or Fixes)
- Testing new released features and report issues
- Donating to acquire hardware for testing and implementing or out of gratitude
- Contributing missing documentation for features and devices
Credits
People helping to keep the show on the road:
- Sfromis providing extensive user support
- Barbudor providing user support and code fixes and additions
- David Lang providing initial issue resolution and code optimizations
- Heiko Krupp for his IRSend, HTU21, SI70xx and Wemo/Hue emulation drivers
- Wiktor Schmidt for Travis CI implementation
- Thom Dietrich for PlatformIO optimizations
- Marinus van den Broek for his EspEasy groundwork
- Pete Ba for more user friendly energy monitor calibration
- Lobradov providing compile optimization tips
- Flexiti for his initial timer implementation
- reloxx13 for his TasmoAdmin management tool
- Joachim Banzhaf for his TSL2561 library and driver
- Andre Thomas for providing many drivers
- Gijs Noorlander for his MHZ19, SenseAir and updated PubSubClient drivers
- Erik Montnemery for his HomeAssistant Discovery concept and many code tuning tips
- Federico Leoni for continued HomeAssistant Discovery support
- Aidan Mountford for his HSB support
- Daniel Ztolnai for his Serial Bridge implementation
- Gerhard Mutz for multiple sensor & display drivers, Sunrise/Sunset, and scripting
- Nuno Ferreira for his HC-SR04 driver
- Adrian Scillato for his (security)fixes and implementing and maintaining KNX
- Gennaro Tortone for implementing and maintaining Eastron drivers
- Raymond Mouthaan for managing Wemos Wiki information
- Norbert Richter for his decode-config.py tool
- Joel Stein, digiblur and Shantur Rathore for their Tuya research and driver
- Frogmore42 for providing many issue answers
- Jason2866 for platformio support and providing many issue answers
- Blakadder for managing the document site and providing template management
- Stephan Hadinger for refactoring light driver, enhancing HueEmulation, LVGL, Zigbee and Berry support
- tmo for designing the official Tasmota logo
- Stefan Bode for his Shutter and Deep sleep drivers
- Jacek Ziółkowski for his TDM management tool and Tasmotizer flashing tool
- Christian Staars for NRF24L01 and HM-10 Bluetooth sensor support
- Paul Diem for UDP Group communication support
- Jörg Schüler-Maroldt for his initial ESP32 port
- Javier Arigita for his thermostat driver
- Simon Hailes for ESP32 Bluetooth extensions
- Many more providing Tips, Wips, Pocs, PRs and Donations
License
This program is licensed under GPL-3.0-only