Tooling

ESPHome, Tasmota & Config-Driven ESP Firmware

YAML- and config-driven firmware for ESP boards — ESPHome, Tasmota, ESPurna, OpenMQTTGateway.

A whole category of ESP firmware where you don't write C/C++ — you write a YAML / template / web-UI config and the firmware compiles or interprets your sensor / switch / display setup. The fastest path from "I have an ESP32 and a sensor" to "it shows up in Home Assistant." Pairs with Self-Hosted Automation; for MCU-side dev see Arduino & PlatformIO and ESP-IDF.

ESPHome

  • ESPHome — open source (MIT/GPLv3 mix); now part of Nabu Casa / the Home Assistant umbrella. Define your device in a YAML file (sensors, GPIOs, displays, automations), compile, flash. Generates Arduino-on-ESP-IDF firmware under the hood. Targets ESP32 / S2 / S3 / C3 / C6 / H2 / ESP8266 / RP2040. Native Home Assistant integration over the ESPHome native API (encrypted, low-latency, no MQTT needed). The default smart-home ESP firmware in 2026.
  • ESPHome Builder / Web flasher — browser UI (formerly "ESPHome Dashboard") for editing YAML and OTA-flashing devices.
  • ESPHome Web — flash existing ESPHome-compatible firmware from a browser via WebSerial.
  • esphome CLIesphome compile / upload / logs / clean. Pairs with VS Code.
  • External components ecosystem — community-published custom components (LoRa, niche sensors, vendor displays); drop in from a GitHub URL.
  • Secrets / packages / substitutions — YAML composition primitives so you can share config across many devices.
  • HA "Take Control" flashing — Home Assistant offers a one-click "convert this Tuya / Sonoff / etc. device to ESPHome" flow for many supported boards.

ESPHome is the right pick when:

  • The device is going into Home Assistant.
  • You want OTA updates as a default (not a feature you have to remember to add).
  • You're comfortable describing devices declaratively.

ESPHome can be limiting when:

  • You need behavior the YAML schema doesn't expose (write a custom component, or drop to Arduino-as-component).
  • You want multi-master MQTT or a non-HA cloud backend (Tasmota does this better).

Tasmota

  • Tasmota — open source (GPLv3); the original ESP firmware for "I bought a smart switch / plug / bulb on AliExpress and want to liberate it from the vendor cloud." Web UI, MQTT, HTTP, KNX, Zigbee bridge, Tuya MCU bridge. Targets ESP8266 + ESP32 family. Configuration is via the web UI, console, or Tasmota's templating system — not YAML. Hugely popular for retrofitting commodity smart devices.
  • Tasmota templates database — community-curated templates (tasmota.github.io/docs/devices/) for thousands of off-the-shelf devices.
  • Tasmotizer — open-source GUI flasher for getting Tasmota onto a virgin device.
  • Tasmota OTA — over-the-air update via the web UI; built-in.
  • Tasmota-AFL / Tasmota32 — AFL fuzzed / ESP32 builds.
  • Berry scripting — Tasmota's embedded scripting language; Lua-shaped, lets you write more complex automations on-device.

Tasmota vs. ESPHome — the practical split:

  • Tasmota — best for off-the-shelf commercial devices (Sonoff, Shelly, plugs, bulbs); web-UI and MQTT-first.
  • ESPHome — best for DIY / custom-PCB devices and tight Home Assistant integration; YAML-first; better OTA story.

Many people run both: Tasmota on the cheap retrofitted plug, ESPHome on the DIY sensor.

ESPurna

  • ESPurna — open source (GPLv3); long-running Tasmota alternative, originally focused on Sonoff / generic ESP8266 relays. Web UI, MQTT, OTA. Less mainstream than Tasmota but well-loved by some; Tasmota has wider device coverage in 2026.

OpenBeken / OpenBK

  • OpenBeken / OpenBK7231T — Tasmota-shaped firmware for non-ESP Wi-Fi chips: Beken BK7231T/N, Realtek RTL8710, XR809. Important if you crack open a Tuya device and find a non-ESP module — there's now an open firmware for it. GPLv3.
  • LibreTiny / LibreTuya — PlatformIO platform that lets you build "Arduino-style" firmware (including Tasmota / ESPHome) for those non-ESP Tuya modules.

OpenMQTTGateway

  • OpenMQTTGateway — open source (MIT); ESP32 / ESP8266 firmware that bridges multiple radios (BLE, RF 433 MHz, IR, LoRa, Pilight) to MQTT. The "I want my old RF remotes / BLE thermometers in HA" firmware. Pairs with ESPHome / Tasmota for full coverage.

Theengs

  • Theengs Gateway (Linux/Pi) and Theengs Decoder (library) — companion projects from the OpenMQTTGateway team; decode hundreds of BLE sensors (Xiaomi, Govee, Inkbird, etc.) into MQTT.

Sonoff DIY / SonoffLAN family

  • Sonoff DIY mode — eWeLink's official "let users own their devices" mode; flips a Sonoff into local-LAN mode without re-flashing. Limited but free.
  • SonoffLAN (HA integration) — talk to Sonoff devices over local LAN without the cloud.

WLED — covered separately

  • See WLED & Special-Purpose ESP Firmware for the LED-strip-controller firmware ecosystem (WLED, QuinLED, Cololight, etc.). It's config-driven in spirit, but its audience and tooling are different enough to deserve its own page.

Pixie / Athom / Shelly preflashed devices

  • Athom — sells ESP devices preflashed with Tasmota or ESPHome. Genuinely useful: "smart plug that doesn't talk to a cloud out of the box."
  • Shelly Plus / Pro — original firmware is open-friendly and supports MQTT + local HTTP RPC; many people don't reflash. ESPHome / Tasmota ports also exist for older Shelly models.
  • Sonoff / Shelly / Athom devices — all popular targets for these firmwares. Many devices are listed in both ESPHome's and Tasmota's device database.

Flashing / provisioning UX

  • ESP Web Tools — used by ESPHome's "Web Installer" pages; flashes from a browser, no driver install.
  • Tasmotizer — Python GUI for first-flash from USB.
  • Improv Wi-Fi — open standard for Wi-Fi onboarding; supported by ESPHome, Tasmota, and many DIY firmwares.

Pick this if…

  • Default for DIY ESP devices in Home Assistant: ESPHome.
  • Default for retrofitting off-the-shelf Wi-Fi gear: Tasmota.
  • Tuya device with a non-ESP chip: LibreTiny + Tasmota / ESPHome, or OpenBeken.
  • You want BLE / 433 MHz / IR → MQTT bridge: OpenMQTTGateway.
  • You don't want to flash anything: buy preflashed Athom or compatible Shelly devices.
  • You want code, not config: drop to Arduino & PlatformIO or ESP-IDF.

On this page