unsubbed.co

Tasmota

Open-source firmware for ESP8266/ESP32 devices providing total local control via MQTT, web UI, and HTTP.

Open-source firmware for ESP devices, honestly reviewed. No marketing fluff, just what you get when you flash it.

TL;DR

  • What it is: Open-source (GPL-3.0) alternative firmware for ESP8266 and ESP32 based smart home devices — plugs, switches, relays, bulbs — replacing the stock cloud-dependent firmware with one that runs entirely on your local network [README][1].
  • Who it’s for: Smart home hobbyists and privacy-minded homeowners who want their Sonoff switches, cheap AliExpress plugs, and Shelly relays to work without a vendor cloud connection. Also anyone building DIY sensors and automations on bare ESP boards [2][4].
  • Cost savings: Pre-flashed Tasmota smart plugs run ~€9–20 on AliExpress or from vendors like LocalBytes and Athom. Stock Tuya devices work until the vendor decides to shut down or paywall their app. The firmware itself is free [1].
  • Key strength: Complete local control. No cloud. No subscription. No app store. A browser, a local IP address, and you’re in [README].
  • Key weakness: It’s firmware, not software — you need hardware that runs it, and flashing it yourself requires some technical confidence. ESPHome has eaten significant market share among Home Assistant users who want deeper customization [3].

What is Tasmota

Tasmota is open-source firmware you flash onto ESP8266 and ESP32 based smart home hardware instead of the factory software it shipped with. The project was started by Theo Arends and is now maintained by an active community with 24,211 GitHub stars. The pitch is straightforward: most cheap WiFi smart plugs, switches, and relays are built around Espressif’s ESP chips. The stock firmware phones home to a vendor cloud. Tasmota replaces that firmware entirely with something that speaks MQTT, HTTP, and KNX — entirely on your own network, with no vendor server in the loop [README].

The scope has expanded well beyond the original Sonoff switch use case. The current release (v15.3.0 “Susan”) adds support for air quality sensors, I2C expanders, real-time clock modules, ESP32 SPI buses for Ethernet and SD cards, and Berry scripting language enhancements [website]. The documentation site lists support for displays, IR control, Bluetooth, Matter, LoRa, Modbus, audio, and dozens of peripheral types. What started as a firmware for basic relay switches is now a fairly complete embedded platform.

The project is community-funded (PayPal donations, no VC money), MIT-adjacent in spirit but GPL-3.0 in license. That means you can use it freely and redistribute it, but modifications must stay open source [README].


Why people choose it

The Reddit thread [2] captures the real motivation plainly: users want a single, well-understood firmware across heterogeneous hardware. One commenter describes having Wemos boards, Sonoff basics, FIBARO Z-Wave devices, Lidl smart bulbs, Xiaomi sensors, and Shelly relays — all of which could run Tasmota. The argument for standardizing is fewer integrations to maintain and a consistent behavior model. The counter-argument is also real: if your Shelly devices already do MQTT natively, what do you gain?

The answer depends on what you value:

Against stock cloud firmware. This is where Tasmota’s case is strongest. A stock Tuya or SmartLife plug requires an account, phone home on every command, and can become a brick if the vendor sunsets the service or decides to start charging. Tasmota removes that dependency entirely [1][4]. Scargill’s Tech Blog [1] describes the initial setup as straightforward: power up the plug, join the Tasmota access point at 192.168.4.1, enter your WiFi credentials, done. No account creation. No app required.

Against ESPHome. This is the interesting fight, and the long Home Assistant community thread [3] documents the tension honestly. ESPHome has taken a lot of Tasmota’s users over the past two to three years. The thread title is “Goodbye Tasmota” — a user migrated 40-odd devices to ESPHome and describes it as “such a satisfying event.” The main pull factors: tighter native integration with Home Assistant, HTTPS/encryption, and the flexibility to program almost any behavior via YAML configuration files [3].

But the same thread contains the counterargument. One user who switched back to Tasmota for Bluetooth thermometer support reports ESPHome had frequent daily dropouts requiring power cycles on ESP32, while Tasmota would drop out “once a week at most” and auto-reconnect without intervention [3]. The diagnosis was that ESPHome uses Arduino Bluetooth drivers while Tasmota doesn’t — a technical difference with practical consequences if you’re running BLE devices. Another commenter’s summary holds up: “there are things Tasmota does better than ESPHome” even if ESPHome wins overall on flexibility [3].

Against Zigbee. Scargill’s Tech Blog [1] frames this choice clearly: Zigbee devices are harder to open and reprogram, require a hub or Zigbee2MQTT running on dedicated hardware, and have their own operational overhead. WiFi Tasmota devices have no hub dependency — they connect directly to your router. The trade-off is that WiFi chips consume more power than Zigbee radios, which matters for battery-powered sensors but not for mains-powered plugs and switches [1].


Features

Based on the README, documentation site, and third-party integration guides:

Core communication protocols:

  • MQTT (the primary integration path for serious home automation)
  • HTTP REST API — control devices directly with a browser or curl
  • WebSocket and plain serial
  • KNX building automation protocol
  • Matter support (listed in the documentation navigation) [website]

Web interface:

  • Built-in WebUI accessible at the device IP — no external app required
  • Initial setup via captive portal at 192.168.4.1 [1][4]
  • Configuration UI for WiFi, MQTT, timers, rules, and all device settings

OTA updates:

  • Over-the-air firmware updates from the official OTA server (http://ota.tasmota.com/) or your own server
  • Development builds compile on every commit, stable releases are tested [README]

Automation without a hub:

  • Timer-based automation (schedules, sunrise/sunset)
  • Rules engine — IF/THEN logic that runs entirely on the device
  • Berry scripting language (ESP32 only) for more complex on-device logic [website]

Hardware support:

  • Hundreds of supported device templates — plug in the template JSON for your device and peripherals are auto-configured
  • I2C, SPI, serial peripheral support
  • Displays, IR blasters, Bluetooth, LoRa, Modbus, audio [website docs navigation]
  • Power monitoring calibration for smart plugs with energy metering [website]

ESP32 vs ESP8266:

  • Core features work on both; Berry scripting, Matter, some advanced peripherals, and ESP32-specific buses are ESP32-only [website][README]

What it doesn’t do:

  • It won’t write custom sensor logic the way ESPHome’s YAML configuration does. You’re working within the built-in feature set or the rules engine [3].
  • No dashboard or visualization — for that you need Home Assistant, Grafana, or another layer.
  • No native app. Control is WebUI or MQTT or HTTP.

Pricing: SaaS vs self-hosted math

Tasmota is free firmware. There’s no paid tier, no commercial license, no subscription. The cost calculus is about hardware, not software.

Option 1: Flash it yourself Buy any ESP8266 or ESP32 based smart plug or switch, verify it’s on the supported devices list, and flash Tasmota using the WebInstaller (https://tasmota.github.io/install/) via a Chrome browser — no command line required for supported devices. AliExpress smart plugs compatible with Tasmota can be found for €5–9 shipped, though quality varies and some newer devices have moved to chips that resist flashing [1].

Option 2: Buy pre-flashed LocalBytes and Athom (now rebranded IoTorero) sell smart plugs that arrive pre-loaded with Tasmota. Scargill’s Tech Blog [1] prices LocalBytes at over €20 including shipping to Europe. That’s 2–4x the AliExpress price but you get a device that works immediately with no flashing risk.

The cloud-firmware alternative for comparison: A Tuya-based smart plug at €8–12 works until it doesn’t. If the vendor kills the cloud integration — which Tuya has done to various regional apps — the plug becomes a manual switch. The value of Tasmota isn’t a recurring cost saving against a subscription; it’s a one-time decision to own the device’s behavior permanently [1][4].

Third-party integration costs: If you want the full MQTT home automation stack, you need a broker (Mosquitto, free) running on something — a Raspberry Pi, a home server, or a NAS. That infrastructure cost exists regardless of whether you use Tasmota or not, if you’re serious about home automation.

For a non-technical founder who just wants local smart plugs without a cloud: buy pre-flashed LocalBytes or Athom plugs. €20/plug, works immediately, no cloud account needed. Compare to Philips Hue ecosystem pricing and the difference is substantial. Data on Philips Hue pricing per plug vs pre-flashed Tasmota options not included in the source material, but the order-of-magnitude difference is consistent across the review space.


Deployment reality check

Setting up a pre-flashed Tasmota device is genuinely straightforward, as described in [1] and [4]:

  1. Power up the device
  2. Join the Tasmota WiFi access point (named Tasmota-XXXXXX)
  3. Navigate to 192.168.4.1 in a browser
  4. Enter your home WiFi credentials
  5. The device switches to your network

From there you can rename it, configure MQTT, set up timers, and integrate with Home Assistant. That’s the non-technical path and it works.

Where complexity enters:

  • MQTT setup. Entering a broker address, port, credentials, and topic prefix is manual configuration. The ThingsLog guide [4] walks through it step by step, but it requires knowing what an MQTT broker is and having one running. For users without that infrastructure, the WebUI direct control is the fallback.
  • Flashing non-pre-flashed devices. If you’re buying random AliExpress plugs and hoping to flash them: check the supported devices database first. Some devices have switched from flashable ESP chips to less accessible alternatives. The WebInstaller works over USB for initial flash; OTA updates work thereafter. Older devices sometimes require serial flashing which means opening the case and attaching wires [1][README].
  • The hard reset. If you enter wrong WiFi credentials and can’t reach the device, a 30-second button hold resets it to factory state and you start over [4]. Not catastrophic, but worth knowing before you mount the switch in a wall.
  • Electrocution warning. The README includes a prominent disclaimer: devices connected to mains electricity carry real danger if installed improperly. Never flash a device via serial while it’s connected to AC power. The project is explicit about this and it’s worth taking seriously [README].

Realistic time estimate:

  • Pre-flashed plug: 5–10 minutes to first working control
  • Self-flashing a supported device via WebInstaller: 20–40 minutes
  • Full MQTT integration with Home Assistant: 1–2 hours if you’ve never done it before
  • Serial flashing an awkward device: half a day including research and troubleshooting

Pros and cons

Pros

  • No cloud, ever. Device control lives entirely on your local network. If your internet goes down, your lights still work. If the vendor goes out of business, your firmware doesn’t notice [1][4].
  • Free firmware, forever. GPL-3.0 means no licensing fees, no paid tiers, no features gated behind a subscription [README].
  • WebUI on every device. Any device running Tasmota is immediately controllable from a browser without installing anything [1][4].
  • OTA updates. Once flashed, firmware stays current over WiFi — no physical access needed for upgrades [README].
  • Massive hardware compatibility. The template system means hundreds of ESP-based devices from dozens of manufacturers work with the same firmware [4][website].
  • Good Bluetooth reliability on ESP32. Specific use cases, particularly BLE thermometers, are reportedly more stable on Tasmota than ESPHome due to different Bluetooth driver stacks [3].
  • Active community. Telegram, Matrix, Discord, Reddit — the project has populated support channels and an active issue tracker [website][README].
  • Rules engine runs on-device. Basic IF/THEN automation doesn’t require an external hub. A plug can auto-turn off after 30 minutes with no Home Assistant in the loop [README].

Cons

  • Less flexible than ESPHome for custom hardware. ESPHome lets you define almost any sensor behavior in YAML. Tasmota gives you a rule engine and Berry scripting, which is powerful but more constrained. If you want to read a weird I2C sensor that isn’t in the supported list, ESPHome is easier [3].
  • Tighter Home Assistant integration exists elsewhere. ESPHome integrates natively with Home Assistant at a level Tasmota doesn’t match — device discovery, entity configuration, and updates happen with less friction [3].
  • No encryption on MQTT by default. The Home Assistant community thread [3] specifically cites HTTPS and encryption as ESPHome advantages. Tasmota supports TLS MQTT but it’s not the default configuration.
  • Flashing risk. Not all devices can be flashed, some require serial access, and newer devices increasingly use chips that are harder or impossible to reflash [1].
  • No visualization layer. Tasmota shows you device state and lets you control it. Charts, dashboards, and history require a separate tool.
  • Community-funded, one maintainer as primary author. The project has real community momentum but depends on Theo Arends and volunteer contributors. There’s no company backing it.

Who should use this / who shouldn’t

Use Tasmota if:

  • You have cloud-dependent Sonoff, Tuya, or compatible WiFi devices and want to cut the vendor out permanently.
  • You’re setting up a basic smart home and want plug-and-play devices (buy pre-flashed LocalBytes or Athom plugs) with no account creation or app required.
  • You’re running MQTT in your home automation stack and want every device to speak the same protocol.
  • You have ESP32 devices with Bluetooth sensors and are having stability problems with ESPHome’s BLE stack [3].
  • You want a rules engine that runs on the device itself, without depending on an always-on hub.

Switch to ESPHome if:

  • You’re building custom sensor hardware and need to define behavior at the YAML level — reading non-standard sensors, custom display drivers, complex state machines [3].
  • You’re deep in the Home Assistant ecosystem and want native auto-discovery and one-click OTA updates from the HA UI [3].
  • Encryption and HTTPS matter to your threat model and you don’t want to configure TLS manually [3].

Skip it entirely if:

  • You need battery-powered sensors — ESP chips are power-hungry for battery applications. Use Zigbee, Z-Wave, or dedicated BLE sensors instead [1].
  • You’re not willing to touch any configuration files or browser-based device setup. Pre-flashed devices lower the bar significantly, but this is still not a consumer product.
  • You’re building anything that needs to scale beyond a home — this is residential IoT firmware, not industrial infrastructure.

Alternatives worth considering

  • ESPHome — the most direct alternative for ESP-based hardware. Code-defined sensor behavior, native Home Assistant integration, active development. Better for custom hardware and HA-centric setups; Tasmota beats it on BLE stability in some cases [3].
  • Stock Shelly firmware — Shelly devices ship with native MQTT support, meaning you sometimes get local control without flashing anything [5]. Worth checking before you go the Tasmota route if you’re buying Shelly hardware specifically.
  • Zigbee2MQTT + Zigbee devices — fundamentally different radio protocol. Requires a Zigbee coordinator (USB stick or dedicated hub), but Zigbee devices are lower power and don’t need WiFi. Better for battery-powered sensors, more complex to set up [1].
  • Home Assistant’s native integrations — many smart home devices now support local API control without any reflashing. Check whether your hardware supports this before committing to Tasmota.
  • Tuya Local / LocalTuya — a Home Assistant integration that bypasses the Tuya cloud for devices you don’t want to reflash. Less work than flashing but requires the device’s local key, which is increasingly hard to extract from newer Tuya firmware.
  • OpenWRT for network gear — different category but the same philosophical bet: replace vendor firmware with community-maintained open source. If Tasmota’s approach appeals, OpenWRT is the same logic for routers.

Bottom line

Tasmota is the right answer to a specific problem: you have ESP-based smart home hardware that phones home to a vendor cloud, and you want it to stop. The firmware is mature, the community is active, and the setup path for pre-flashed devices is genuinely accessible even for non-technical users. The broader smart home hobbyist community has partially moved on to ESPHome for its flexibility and Home Assistant integration, but Tasmota retains real advantages — Bluetooth device reliability, on-device rules without a hub dependency, and a simpler model for users who just want local MQTT control without YAML files. If your goal is owned, private, cloud-free home automation without getting a computer science degree first, Tasmota and a batch of pre-flashed plugs is still one of the cleaner paths to get there.


Sources

  1. Pete Scargill, Scargill’s Tech Blog“Tasmota Smartplugs”. https://tech.scargill.net/tasmota-smartplugs/
  2. r/homeassistant“Should I be using Tasmota, even though my devices already support MQTT?” (2021). https://www.reddit.com/r/homeassistant/comments/kptwl0/should_i_be_using_tasmota_even_though_my_devices/
  3. Home Assistant Community Forum“Goodbye Tasmota” thread (2022–2023). https://community.home-assistant.io/t/goodbye-tasmota/436293
  4. ThingsLog“Getting started with Tasmota devices on ThingsLog platform” (December 22, 2024). https://thingslog.com/blog/2024/12/22/getting-start-tasmota-devices-to-work-with-thingslog-platform/
  5. The Smart Home Hookup“Shelly native MQTT support, Tasmota on the Shelly2, & Setting Up a 3-Way switch” (October 24, 2018). https://www.thesmarthomehookup.com/shelly-native-mqtt-support-tasmota-on-the-shelly2-setting-up-a-3-way-switch/

Primary sources:

Features

Integrations & APIs

  • Plugin / Extension System