Repo of the Day
arendst/tasmota
Published: Jan 16, 2024
Open repository ↗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
Summary
Tasmota is an open-source firmware written in C for ESP8266/ESP8285 and the ESP32 family (ESP32, ESP32-S2, ESP32-S3, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-P4). It provides a web UI, OTA updates, on-device automation through rules and timers, and entirely local control over MQTT (v3.1.1 or v5), HTTP, Serial, or KNX. The project is licensed GPL-3.0-only and is built with PlatformIO.
What it is useful for
Tasmota is useful when you want to replace vendor firmware on inexpensive ESP8266/ESP32-based smart-home devices (Sonoff, Tuya modules, and similar boards) and run them locally without a vendor cloud. According to the README, it supports 150+ sensors and peripherals over I²C, SPI, 1-Wire, and analog — examples include DHT11/22, DS18x20, BME280, SHT30, MH-Z19, PMS5003, INA219, PIR, and BH1750, with many auto-detected once wired.
It also covers lights (single-channel dimmers, CT, RGB, RGBW, RGBCW, plus addressable WS2812/SK6812 strips with a dedicated animation engine), shutters/blinds (pulse, stepper, or servo), thermostat control, and smart-meter reading over SML, OBIS, and Modbus. Protocol bridging includes IR, RF, DALI, Modbus, RS-485, OpenTherm, TWAI/CAN, LoRa/LoRaWan, and HDMI-CEC. On ESP32 specifically, an ESP32 can run as a Zigbee coordinator or BLE gateway, run Matter directly (pairing with Apple Home, Google Home, Alexa, Home Assistant), or render animated touchscreen UIs via LVGL or JSON-driven HASPmota templates. Networking features include wired Ethernet, IPv6, a Wi-Fi range extender mode, a WireGuard VPN client, and an encrypted ESP-NOW mesh (TasMesh) for battery-powered nodes.
Documented limitations: not every feature fits in precompiled binaries due to flash size, so some require compiling your own build; ESP8285 only supports Flash Mode DOUT (DIO/QIO/QOUT can brick the device); and fallback or downgrade across major versions is not supported, with a documented migration path required at several version boundaries (3.9.x, 4.x, 5.14, 6.7.1, 7.2.0, 8.5.1, 9.1).
How engineers can use it
The README documents three starting points. The simplest is the Tasmota WebInstaller at tasmota.github.io/install. Alternatively, download a release binary from http://ota.tasmota.com/tasmota/release/ (ESP8266) or http://ota.tasmota.com/tasmota32/release/ (ESP32) and flash it following the Getting-Started guide. For custom builds, clone the repo and build with PlatformIO; copy user_config_override_sample.h to user_config_override.h so custom settings survive version upgrades.
After flashing, configure the device through the web UI or drive it over MQTT, HTTP, Serial, or KNX. For hardware that is not yet listed, the README directs engineers to the Templates system and the device template database at templates.blakadder.com rather than requesting new device drivers. Automation can be expressed with built-in Timers and Rules, or with the embedded Berry scripting language that also powers LVGL, HASPmota, and the LED animation engine. The command reference, peripheral list, and migration instructions live in the documentation at tasmota.github.io/docs, which also contains the safety disclaimer for mains-powered hardware.