Most of our ESP8266 or ESP32 devices come with custom firmware.  However, they could also be flashed with some open source firmware packages.  In this comparison we'll look at some of the features of these packages.



ESPHome Tasmota ESPurna  ESPEasy
Captive Portal

WiFi Credentials

OTA Update

WiFi Credentials

Configuration Restore

See below
OTA Upgrade YES YES YES
Integrated Web Server NO YES YES
Home Assistant API YES No, uses MQTT YES
MQTT YES, but server fixed at compile YES YES
CLI (on target) NO YES

YES - Telnet

Build Methodology Defined by YAML

Pre Compiled Binary

Custom via code modification

Pre Compiled Binary

Custom via code modification

ESPHome

https://esphome.io/index.html

ESPHome's easy configuration via YAML makes it one of my favorite firmware choices for ESP8266 devices.  My one major criticism with ESPHome is the inability to redefine the MQTT server after compilation. Thus, even if you deploy a device with the captive portal enabled so that the WiFi credentials can be changed after configuration you are still stuck with a device that can't really be used unless you upload new firmware to it. 

Captive Portal:

Tasmota

https://tasmota.github.io/docs/

Web Configuration:

Tasmota Web Configuration

ESPurna 

https://github.com/xoseperez/espurna

Captive Portal Note: There doesn't seem to be an auto direct to a captive portal, at least not on my iphone.  When the device in in AP mode you need to manually visit a website and login with a user name / password given on the debug terminal.  From here you can configure your device to connect to your internet connected WiFI connection and then finish configuration.

espurna

ESPEasy