Convert Figma logo to code with AI

arendst logoTasmota

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. Full documentation at

22,081
4,781
22,081
14

Top Related Projects

8,412

ESPHome is a system to control your ESP8266/ESP32 by simple yet powerful configuration files and control them remotely through Home Automation systems.

Arduino core for the ESP32

Latest ESP8266 SDK based on FreeRTOS, esp-idf style.

💡 ESP8266 framework for Homie, a lightweight MQTT convention for the IoT

3,271

Easy MultiSensor device based on ESP8266/ESP32

Quick Overview

Tasmota is an open-source firmware for ESP8266-based devices, primarily used for home automation and Internet of Things (IoT) projects. It provides a powerful and flexible alternative to stock firmware for various smart devices, including switches, lights, and sensors.

Pros

  • Extensive device support with over 100 different supported devices
  • Rich feature set including MQTT, web server, timers, and rules engine
  • Regular updates and active community support
  • OTA (Over-The-Air) update capability

Cons

  • Steep learning curve for beginners
  • Limited support for non-ESP8266 devices
  • Some advanced features require custom compilation
  • Potential warranty void when flashing third-party firmware

Getting Started

To get started with Tasmota:

  1. Download the appropriate binary for your device from the Tasmota releases page.
  2. Flash the binary to your device using a tool like Tasmotizer.
  3. Connect to the Tasmota AP (Wi-Fi access point) that appears after flashing.
  4. Configure your Wi-Fi settings through the web interface.
  5. (Optional) Configure MQTT settings for integration with home automation systems.

Example configuration in the Tasmota console:

Backlog SSID1 YourWiFiSSID; Password1 YourWiFiPassword; MqttHost 192.168.1.100; MqttUser YourMqttUsername; MqttPassword YourMqttPassword; Topic tasmota_%06X; SetOption19 1

This command sets up Wi-Fi and MQTT connections, and enables Home Assistant auto-discovery.

For more detailed instructions, refer to the Tasmota documentation.

Competitor Comparisons

8,412

ESPHome is a system to control your ESP8266/ESP32 by simple yet powerful configuration files and control them remotely through Home Automation systems.

Pros of ESPHome

  • More intuitive YAML-based configuration, easier for beginners
  • Tighter integration with Home Assistant
  • Supports a wider range of sensors and components out-of-the-box

Cons of ESPHome

  • Less flexible for advanced users who prefer direct code modifications
  • Smaller community and fewer third-party integrations compared to Tasmota
  • Requires recompilation and flashing for configuration changes

Code Comparison

ESPHome configuration (YAML):

esphome:
  name: my_device
  platform: ESP8266

sensor:
  - platform: dht
    pin: D2
    temperature:
      name: "Room Temperature"
    humidity:
      name: "Room Humidity"

Tasmota configuration (INI-style):

# Tasmota uses a web interface or console commands for configuration
# Example DHT sensor setup:
DHT11 1

ESPHome offers a more readable configuration format, while Tasmota provides a more compact approach. ESPHome's YAML structure allows for easier organization of complex setups, whereas Tasmota's configuration is typically done through a web interface or console commands, which can be quicker for simple devices but may become cumbersome for more complex setups.

Arduino core for the ESP32

Pros of arduino-esp32

  • Broader platform support for ESP32 development
  • More extensive hardware-specific features and APIs
  • Larger community and ecosystem for general ESP32 projects

Cons of arduino-esp32

  • Less focused on IoT and smart home applications
  • Requires more setup and configuration for specific use cases
  • Steeper learning curve for beginners in IoT projects

Code Comparison

Tasmota (simplified MQTT publish):

void MqttPublishSensor(void) {
  char topic[TOPSZ];
  char payload[MESSZ];
  snprintf_P(topic, sizeof(topic), PSTR(MQTT_TOPIC "/%s/SENSOR"), mqtt_topic);
  GetSensorJson(payload, sizeof(payload));
  MqttPublish(topic, payload);
}

arduino-esp32 (basic MQTT publish):

void publishMessage(const char* topic, const char* payload) {
  if (client.connected()) {
    client.publish(topic, payload);
  }
}

Tasmota is more specialized for IoT devices and smart home applications, with built-in features for easy configuration and management. arduino-esp32 provides a broader foundation for ESP32 development but requires more custom implementation for specific IoT use cases.

Latest ESP8266 SDK based on FreeRTOS, esp-idf style.

Pros of ESP8266_RTOS_SDK

  • Official SDK from Espressif, ensuring compatibility and support
  • Provides a real-time operating system (RTOS) for more complex applications
  • Offers low-level control and flexibility for custom firmware development

Cons of ESP8266_RTOS_SDK

  • Steeper learning curve compared to Tasmota's user-friendly approach
  • Requires more programming expertise and time investment
  • Less out-of-the-box functionality for common IoT devices

Code Comparison

ESP8266_RTOS_SDK (FreeRTOS task creation):

void app_main()
{
    xTaskCreate(led_task, "LED Task", 2048, NULL, 5, NULL);
}

Tasmota (Rule-based automation):

Rule1 ON Time#Minute|5 DO Power1 TOGGLE ENDON

ESP8266_RTOS_SDK focuses on low-level programming and RTOS capabilities, while Tasmota provides a higher-level, configuration-based approach for IoT devices. ESP8266_RTOS_SDK offers more flexibility but requires more expertise, whereas Tasmota is more accessible for quick IoT projects with less customization.

💡 ESP8266 framework for Homie, a lightweight MQTT convention for the IoT

Pros of homie-esp8266

  • Follows a standardized MQTT convention (Homie), making it easier to integrate with other Homie-compatible systems
  • Provides a more structured approach to device configuration and management
  • Offers a modular architecture, allowing for easier customization and extension

Cons of homie-esp8266

  • Smaller community and fewer supported devices compared to Tasmota
  • Less frequent updates and potentially slower bug fixes
  • May require more setup and configuration for basic functionality

Code Comparison

Tasmota (example of setting up a switch):

void setup() {
  Settings.flag.button_restrict = 0;
  Settings.flag.button_swap = 0;
  Settings.flag.button_single = 0;
}

homie-esp8266 (example of setting up a switch):

void setup() {
  HomieNode switchNode("switch", "switch");
  switchNode.advertise("on").settable(onSwitchCommand);
  Homie.setup();
}

Both projects aim to provide firmware for ESP8266-based IoT devices, but they differ in their approach and feature set. Tasmota offers a wider range of supported devices and a larger community, while homie-esp8266 provides a more structured and standardized approach to device management using the Homie convention.

3,271

Easy MultiSensor device based on ESP8266/ESP32

Pros of ESPEasy

  • More flexible and customizable for complex sensor setups
  • Better support for a wider range of sensors and actuators
  • Easier to set up and configure for beginners through web interface

Cons of ESPEasy

  • Generally consumes more resources (memory and processing power)
  • Less frequent updates and potentially slower bug fixes
  • May have fewer built-in features for specific smart home integrations

Code Comparison

ESPEasy:

#include <ESPEasy.h>

void setup() {
  Serial.begin(115200);
  ESPEasy.init();
}

Tasmota:

#include <tasmota.h>

void setup() {
  SetupSerial();
  TasmotaGlobal.init_setup();
}

Both projects aim to provide firmware for ESP8266/ESP32 devices, but they have different approaches. ESPEasy focuses on flexibility and ease of use for various sensor configurations, while Tasmota is more streamlined and optimized for smart home devices. ESPEasy's setup process is generally more user-friendly, but Tasmota often provides better performance and more frequent updates. The code comparison shows that both projects have different initialization processes, reflecting their distinct architectures and design philosophies.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Tasmota logoTasmota logo

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.

GitHub version GitHub download License Discord Gitpod Ready-to-Code


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.


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!

GitHub stars GitHub forks donate

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

Dev Version Download Dev Tasmota CI Build_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

:warning: DANGER OF ELECTROCUTION :warning:

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.h file. It assures keeping your custom settings when you download and compile a new version. You have to make a copy from the provided user_config_override_sample.h file 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:

  1. Migrate to Sonoff-Tasmota 3.9.x
  2. Migrate to Sonoff-Tasmota 4.x
  3. Migrate to Sonoff-Tasmota 5.14
  4. 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
  5. Migrate to Tasmota 7.2.0 (http://ota.tasmota.com/tasmota/release-7.2.0/tasmota.bin)

--- Major change in parameter storage layout ---

  1. Migrate to Tasmota 8.5.1 (http://ota.tasmota.com/tasmota/release-8.5.1/tasmota.bin)

--- Major change in internal GPIO function representation ---

  1. Migrate to Tasmota 9.1 (http://ota.tasmota.com/tasmota/release-9.1.0/tasmota.bin.gz)
  2. 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

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.

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

donate

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