Trying to decide whether Tasmota or ESPHome is the right firmware for your smart home application? Or perhaps you are using one and want to try the other? In which case this article is just for you!
Both Tasmota and ESPHome are valuable tools for the smart home enthusiast with the same end result. However depending on the application on or the other may be a better choice. In this article we will discuss the pros and cons as well as learn how to easily switch between them.
I quickly became aware of other offerings and wanted to try ESPHome to see how it compared. Now I use both of these awesome tools, depending on what I want to achieve. So which is right for you?
- The difference between Tasmota and ESPHome
- User interface
- How to migrate between Tasmota and ESPHome?
- Further resources
The difference between Tasmota and ESPHome
For those of you seeking a quick answer, we can first summarize some of the main differences between the two firmware options. This table may rule out one of the other for your application, but if either are suitable then the rest of this article will aim to help you decide.
|Flashing Method||Serial / OTA||Serial / OTA|
|GUI Flashing Software||ESPHome Flasher||Tasmotizer|
|Device Compatibility||ESP8266||ESP8266 / ESP32|
|Setup Method||GUI Menu / Terminal||YAML Configuration|
|Interface||Web Browser / Serial Terminal||Text Editor / Home Assistant Add-on|
|Communication Method||MQTT||MQTT / Native Home Assistant API|
|Requires a Broker||Yes||No|
My personal opinion based upon the information in the table plus some additional experience is that ESPHome is a better option for some key reasons, however it has one main drawback that would make Tasmota attractive to many users. Bear in mind that at the time of writing I currently run many more Tasmota devices so I am not yet biased either way.
The main benefits of ESPHome (and the reason I am looking to change all of my devices in the near future) are firstly that it does not require an MQTT broker if you are using Home Assistant. Communication is done directly over the native API, which in my opinion is faster and more robust.
It is also possible to create automations within the devices themselves, which is a very powerful feature. If you are developing a custom device then there it is a no-brainer, ESPHome is the right choice. Also if you are using an ESP32 based device, ESPHome is the sensible choice as there is no official support for ESP32 devices in Tasmota.
With that said Tasmota has been around for along time, its tried and tested and the newest releases are proven and stable. There are a large number of devices supported and plenty of information in the community.
Setting up Tasmota is as easy as entering your WiFi credentials, MQTT credentials and choosing a supported device. There is no need to write a configuration. There are many people who would benefit from this ease of use.
Use ESPHome if…
- You are comfortable with YAML
- You are using Home Assistant and prefer YAML based configuration
- You want to develop a custom ESP-based device
- You are using an ESP32 device
- You don’t mind some trial and error to build a configuration for a commercially available device
- You want to avoid a “middle man” MQTT broker
- You want the best performance (albeit hardly noticeable)
- You need a device that can function standalone
Use Tasmota if…
- You want a quick configuration through menu options
- You are using Home Assistant and MQTT
- You are not using Home Assistant but are using MQTT
- You don’t like using YAML and prefer GUIs
- You want an easy solution for commercially available devices
- You prefer a platform with community support
- You are using a device not yet supported by ESPHome
Tasmota and ESPHome have a different approach for their method of configuration. Tasmota uses a traditional GUI menu system accessed by any web browser. ESPHome can either be configured with the Home Assistant add-on or by using the terminal.
The Tasmota GUI is accessed simply by typing the device address into the web browser. It consists of a series of menu options where WiFi and MQTT credentials can be entered.
There is also a web-based terminal that allows commands to be directly entered, which is also useful for debugging. The average user will very rarely need to visit the terminal other than to perhaps enable auto discovery.
ESPHome is designed to be configured with YAML in the same way that Home Assistant is configured. This can be either a strong advantage or disadvantage depending on whether or not you are familiar with YAML configuration already.
For mostly everyone choosing ESPHome, the best way to configure a device is by using the Home Assistant add-on. This gives a seamless experience as it integrates directly into Home Assistant.
Although ESPHome is heavily geared towards Home Assistant users, it is possible to use it to create a standalone device or communicate with it via MQTT, making it compatible with other platforms.
Therefore it is also possible to build configurations and flash them using the terminal and without the need for the Home Assistant add-on.
Flashing with serial
There is also a GUI-based flashing tool for each platform that is cross-compatible with Mac / Linux / Windows. This makes it super-simple to flash new firmware with a wired connection.
Both firmware options offer the option to flash over the air once the initial wired flashing has been completed. Both devices are also compatible with Tuya-convert, a program that allows the firmware on Tuya devices to be replaced over the air without the need for wired flashing.
ESPHome can either be flashed OTA using the Home Assistant add-on, terminal or via the web server if it is enabled.
Tasmota has a menu option accessible by the browser that allows the firmware to be flashed either from a URL or local file.
How to migrate between Tasmota and ESPHome?
It is very simple to switch between Tasmota and ESPHome making it easy to try both firmware options to see which one is right for you! You can of course just flash each one using a wired connection and the applicable flashing tool.
However once you have either of the two firmwares flashed to a device, you can switch the firmware OTA.
Tasmota to ESPHome
First you should follow my tutorial explaining how to setup an ESPHome device in Home Assistant. Alternatively you can use this tutorial if you are not using Home Assistant and wish to use the terminal.
If you are using the Home Assistant add-on, go ahead and compile the binary for your device.
Once the compilation has finished you will have the option to download the binary. Go ahead and download it and move it somewhere that you can easily find it.
In order to switch your device, open the Tasmota configuration in your browser and navigate to firmware upgrade.
In the section where you can choose a file, select the ESPHome .bin file that you just created and click start upgrade. Once the flashing has completed, your device will restart with ESPHome running!
ESPHome to Tasmota
In order to flash an ESPHome device OTA without using the ESPHome tools, we can use the web interface. First you need to add the web interface to your device configuration.
esphome: name: little_wemos2 platform: ESP8266 board: d1_mini_lite wifi: ssid: "******" password: "***********" # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "Little Wemos2 Fallback Hotspot" password: "a1MevJene8mT" captive_portal: # Enable logging logger: # Enable Home Assistant API api: ota: web_server: port: 80
Once you have added the web server to your YAML configuration, go ahead and flash the device. While the configuration is compiling and the device is flashing, go ahead and grab the latest Tasmota firmware .bin file and save it somewhere easy to find.
Once the flashing process has completed, you should be able to access the web interface by navigating to the device address in your browser. Go ahead and select the tasmota.bin file and click update to migrate to Tasmota!
- How To Add ESPHome To Home Assistant – the complete guide to installing ESPHome and setting it up in Home Assistant
- Home Assistant and ESPHome Servo Example – A good example of how to configure a device in ESPHome and Home Assistant
- Super-Simple Touch Switch For Home Assistant – A great example of a more advanced configuration in ESPHome using lambda
- Easier ESP8266 Web Server LED Control Using ESPHome – An application of ESPHome that doesn’t need Home Assistant
- Flashing Tasmota: 6 Great Methods – All the information you will ever need for flashing Tasmota devices
- Easy Home Assistant WiFi Temperature Sensor – An easy to follow guide for a DIY Tasmota device
- How To Create A Template In Tasmota – Advanced device configuration explained, useful for when your device is not listed in Tasmota
- How To Setup Tasmota Auto Discovery In Home Assistant – The complete guide to configuring MQTT and getting Tasmota to auto detect in Home Assistant
You should now hopefully have an insight into what is the most suitable firmware for your smart home devices. In my opinion both options are awesome and bring great value to the smart home community.
In the case that one option does not support your device then the decision is an easy one. However in many cases either option will be suitable and it depends on other factors.
If you want a quick setup with a GUI menu for configuration and you don’t mind using an MQTT broker, go for Tasmota. If you want more flexibility, localised automation and you like working with YAML, go for ESPHome.