Top Related Projects
ESPHome is a system to control your ESP8266/ESP32 by simple yet powerful configuration files and control them remotely through Home Automation systems.
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
💡 ESP8266 framework for Homie, a lightweight MQTT convention for the IoT
Blynk library for IoT boards. Works with Arduino, ESP32, ESP8266, Raspberry Pi, Particle, ARM Mbed, etc.
Arduino core for the ESP32
ESP8266 WiFi Connection manager with web captive portal
Quick Overview
ESPEasy is an open-source firmware for ESP8266 and ESP32 devices, designed to simplify the process of creating IoT projects. It provides a web-based interface for configuration and management, allowing users to easily set up sensors, actuators, and rules without the need for programming skills.
Pros
- User-friendly web interface for configuration and management
- Supports a wide range of sensors and actuators
- Extensive plugin system for easy expansion of functionality
- Active community and regular updates
Cons
- Limited customization options for advanced users
- Performance may be affected when using multiple plugins simultaneously
- Learning curve for complex rule creation
- Some features may require additional hardware or specific ESP modules
Getting Started
- Download the latest release from the ESPEasy GitHub repository.
- Flash the firmware to your ESP8266 or ESP32 device using a tool like ESPTool or NodeMCU Flasher.
- Connect to the ESP device's Wi-Fi access point (named "ESP_Easy_0").
- Open a web browser and navigate to
192.168.4.1
to access the configuration interface. - Configure your device's settings, including Wi-Fi credentials and desired plugins.
- Save the configuration and reboot the device.
- Your ESPEasy device is now ready to use. Access the web interface through your local network to manage sensors, rules, and other settings.
Competitor Comparisons
ESPHome is a system to control your ESP8266/ESP32 by simple yet powerful configuration files and control them remotely through Home Automation systems.
Pros of ESPHome
- Seamless integration with Home Assistant
- YAML-based configuration for easier setup and management
- Extensive library of supported sensors and components
Cons of ESPHome
- Less flexible for standalone use outside of Home Assistant
- Fewer built-in features for advanced networking and remote management
Code Comparison
ESPHome configuration (YAML):
esphome:
name: my_device
platform: ESP8266
sensor:
- platform: dht
pin: D2
temperature:
name: "Temperature"
humidity:
name: "Humidity"
ESPEasy configuration (INO):
#include <ESPEasy.h>
void setup() {
Plugin_001_setup(); // DHT sensor setup
}
void loop() {
ESPEasy.loop();
}
ESPHome focuses on a declarative YAML configuration, making it easier for users to set up devices without extensive programming knowledge. ESPEasy, on the other hand, uses a more traditional Arduino-style setup with C++ code, offering greater flexibility for advanced users but requiring more programming expertise.
ESPHome's tight integration with Home Assistant simplifies the process of adding and managing devices within a smart home ecosystem. ESPEasy provides more standalone capabilities and a wider range of built-in features, making it suitable for users who prefer a more independent solution or need advanced networking options.
Both projects support a wide range of sensors and components, but ESPHome's library is more extensive and easier to integrate due to its YAML-based configuration system.
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
Pros of Tasmota
- More extensive device support, especially for smart home and IoT devices
- Larger community and more frequent updates
- Built-in web interface for easy configuration and control
Cons of Tasmota
- Steeper learning curve for beginners
- Less flexible for custom sensor implementations
- More complex firmware flashing process
Code Comparison
ESPEasy example (simplified plugin structure):
boolean Plugin_001(byte function, struct EventStruct *event, String& string)
{
switch (function)
{
case PLUGIN_DEVICE_ADD:
Device[++deviceCount].Number = PLUGIN_ID_001;
Device[deviceCount].Type = DEVICE_TYPE_SINGLE;
Device[deviceCount].VType = SENSOR_TYPE_SWITCH;
break;
}
return true;
}
Tasmota example (simplified device support):
void SwitchSetVirtualPinState(uint32_t index, uint32_t state)
{
switch_virtual_state[index] = state;
if (PinUsed(GPIO_SWT1, index)) {
digitalWrite(Pin(GPIO_SWT1, index), state);
}
}
Both projects offer robust solutions for ESP8266/ESP32 devices, with ESPEasy focusing on ease of use and customization, while Tasmota excels in broad device support and community-driven development. The choice between them depends on specific project requirements and user expertise.
💡 ESP8266 framework for Homie, a lightweight MQTT convention for the IoT
Pros of homie-esp8266
- Follows the Homie convention, providing a standardized MQTT structure
- Lightweight and focused on MQTT communication
- Easy integration with other Homie-compatible systems
Cons of homie-esp8266
- Limited built-in sensor support compared to ESPEasy
- Requires more programming knowledge for custom implementations
- Smaller community and fewer ready-to-use examples
Code Comparison
ESPEasy:
#include <ESPEasy.h>
void setup() {
ESPEasy.init(ESPEasy_personality::GENERIC);
LoadSettings();
}
homie-esp8266:
#include <Homie.h>
void setup() {
Homie_setFirmware("device-name", "1.0.0");
Homie.setup();
}
ESPEasy provides a more comprehensive setup with built-in settings management, while homie-esp8266 offers a simpler setup focused on MQTT communication following the Homie convention.
Both projects support ESP8266 devices and aim to simplify IoT development, but they cater to different use cases. ESPEasy is more suitable for users who want a feature-rich, configurable platform with extensive sensor support. homie-esp8266 is ideal for developers who prefer a standardized MQTT approach and are comfortable with more hands-on programming.
Blynk library for IoT boards. Works with Arduino, ESP32, ESP8266, Raspberry Pi, Particle, ARM Mbed, etc.
Pros of Blynk Library
- Simpler setup and configuration for IoT projects
- Extensive documentation and community support
- Cross-platform compatibility (iOS, Android, Web)
Cons of Blynk Library
- Requires Blynk cloud service or self-hosted server
- Limited customization options compared to ESPEasy
- Dependency on Blynk ecosystem for full functionality
Code Comparison
ESPEasy example:
#include <ESPEasy.h>
void setup() {
ESPEasy.init(ESPEasy_LEDPin, ESPEasy_LEDPolarity);
ESPEasy.run();
}
Blynk Library example:
#include <BlynkSimpleEsp8266.h>
void setup() {
Blynk.begin(auth, ssid, pass);
}
void loop() {
Blynk.run();
}
ESPEasy offers more flexibility and control over the ESP device, while Blynk Library provides a streamlined approach for quick IoT prototyping. ESPEasy is better suited for advanced users who require extensive customization, whereas Blynk Library is ideal for beginners or those seeking rapid development with minimal setup. The code comparison shows that Blynk Library requires less initial configuration, but ESPEasy provides more granular control over the device's functionality.
Arduino core for the ESP32
Pros of arduino-esp32
- Official support from Espressif, ensuring compatibility and regular updates
- Broader hardware support, including newer ESP32 variants
- More extensive documentation and community resources
Cons of arduino-esp32
- Steeper learning curve for beginners
- Less focus on plug-and-play IoT functionality
- Requires more custom coding for specific applications
Code Comparison
ESPEasy:
#include <ESPEasy.h>
void setup() {
ESPEasy.init();
}
void loop() {
ESPEasy.loop();
}
arduino-esp32:
#include <Arduino.h>
void setup() {
// Custom initialization code
}
void loop() {
// Custom application logic
}
ESPEasy provides a higher-level abstraction for IoT projects, while arduino-esp32 offers more flexibility but requires more manual configuration. ESPEasy is better suited for quick IoT deployments, whereas arduino-esp32 is ideal for developers who need fine-grained control over their ESP32 projects.
ESP8266 WiFi Connection manager with web captive portal
Pros of WiFiManager
- Lightweight and focused solely on WiFi configuration
- Easy to integrate into existing projects
- Supports custom parameters for additional settings
Cons of WiFiManager
- Limited functionality compared to ESPEasy's comprehensive feature set
- Lacks built-in support for various sensors and actuators
- Requires additional coding for more complex IoT applications
Code Comparison
WiFiManager:
#include <WiFiManager.h>
void setup() {
WiFiManager wifiManager;
wifiManager.autoConnect("AutoConnectAP");
}
ESPEasy:
#include <ESPEasy.h>
void setup() {
ESPEasy.init(ESPEasy_LEDPin, ESPEasy_LEDInverted);
ESPEasy.loop();
}
Summary
WiFiManager is a lightweight library focused on simplifying WiFi configuration for ESP8266 and ESP32 devices. It's easy to integrate into existing projects and supports custom parameters. However, it lacks the comprehensive feature set of ESPEasy, which provides built-in support for various sensors and actuators.
ESPEasy is a more complete solution for IoT projects, offering a wide range of functionalities out of the box. It includes a web interface for configuration and supports numerous plugins for different sensors and devices. While ESPEasy provides more features, it may be overkill for simple projects where only WiFi configuration is needed.
The choice between the two depends on the project requirements. For basic WiFi setup, WiFiManager is sufficient. For more complex IoT applications with multiple sensors and actuators, ESPEasy might be the better option.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Latest Nightly | Build Status | Downloads | Docs | Patreon | Ko-Fi | PayPal |
---|---|---|---|---|---|---|
For ways to support us, see this announcement on the forum, or have a look at the Patreon, Ko-Fi or PayPal links above.
ESPEasy (development branch)
Introduction https://espeasy.readthedocs.io/en/latest/ (and, mostly outdated, wiki: https://www.letscontrolit.com/wiki/index.php/ESPEasy#Introduction)
MEGA This is the development branch of ESPEasy. All new features go into this branch, and it has become the current stable branch. If you want to do a bugfix, do it on this branch.
Check here to learn how to use this branch and help us improving ESPEasy: Starter guide for (local) development on ESPEasy
Web based flasher (experimental)
To make it easier to get started, one may flash a build directly to the ESP from your browser. Currently only Chrome and Edge are supported.
See this flash page to try the new web flash feature.
The web flasher is using ESP Web Tools made by the people behind ESPHome and Home Assistant.
Binary releases
On demand, controlled by the repo owner, our build-bot will build a new binary release: https://github.com/letscontrolit/ESPEasy/releases
The releases are named something like 'mega-20220626' (last number is the build date)
Depending on your needs, we release different types of files:
The name is built up from a few key parts:
ESPEasy_mega_[releasedate]_[build-type]_[opt-arduino-library]_[hardware-type]_[flash-size][filesystem-size]_[opt-build-features].bin
[build-type] can be any of:
Build type | Description | included plugins |
---|---|---|
climate | All plugins related to climate measurement | Stable + Climate |
custom | Custom predefined set/Defined in Custom.h | Specific |
normal | Standard plugins | Stable |
collection_A | Normal + plugin collection A | Stable + Collection base + set A |
collection_B | Normal + plugin collection B | Stable + Collection base + set B |
collection_C | Normal + plugin collection C | Stable + Collection base + set C |
collection_D | Normal + plugin collection D | Stable + Collection base + set D |
collection_E | Normal + plugin collection E | Stable + Collection base + set E |
collection_F | Normal + plugin collection F | Stable + Collection base + set F |
collection_G | Normal + plugin collection G | Stable + Collection base + set G |
max | All available plugins | All available |
energy | All plugins related to energy measurement | Stable + Energy measurement |
display | All plugins related to displays | Stable + Displays |
neopixel | All plugins related to neopixel | Stable + Neopixel |
hard | hardware specific builds | Minimal |
minimal | minimal plugins for specific use-cases | Switch and Controller |
spec_* | specialized technical builds | Not intended for regular use |
IRext | Infra-red hardware specific | Sending and receiving IR cmd |
safeboot | (Experimental) safeboot build to enablemost/all plugins on 4MB Flash boards | None |
[opt-arduino-library] (optional) can be any of:
Arduino library | Description |
---|---|
alt_wifi | Alternative WiFi configuration |
beta | Arduino Beta release |
sdk3 | Arduino SDK v.3 |
core_274 | Arduino Core 2.7.4 release |
core_302 | Arduino Core 3.0.2 release |
core_274_sdk3 | Arduino Core 2.7.4 SDK v.3 release |
[hardware-type] can be any of:
Hardware type | Description |
---|---|
ESP8266 | Espressif ESP8266/ESP8285 generic boards |
WROOM02 | Espressif ESP8266 WRoom02 boards |
ESP32 | Espressif ESP32 generic boards |
ESP32solo1 | Espressif ESP32-Solo1 generic boards |
ESP32s2 | Espressif ESP32-S2 generic boards |
ESP32c3 | Espressif ESP32-C3 generic boards |
ESP32s3 | Espressif ESP32-S3 generic boards |
ESP32c2 | Espressif ESP32-C2 generic boards |
ESP32c6 | Espressif ESP32-C6 generic boards |
ESP32-wrover-kit | Espressif ESP32 wrover-kit boards |
SONOFF | Sonoff hardware specific |
other_POW | Switch with power measurement |
Shelly_1 | Shelly 1 switch |
Shelly_PLUG_S | Shelly plug S switch with power measurement |
Ventus | Ventus W266 weather station |
LCtech_relay | LC-tech serial switch |
N.B. Starting 2022/07/23, 1M ESP8266 builds can also be used on ESP8285 units and thus there is no longer a specific ESP8285 build anymore.
[flash-size] can be any of:
Flash size | Description |
---|---|
1M | 1 MB with 128 kB filesystem |
2M | 2 MB with 128 kB filesystem |
2M256 | 2 MB with 256 kB filesystem |
2M320k | 2 MB with 320 kB filesystem |
4M1M | 4 MB with 1 MB filesystem |
4M2M | 4 MB with 2 MB filesystem |
16M | 16 MB with 14 MB filesystem |
4M316k | 4 MB with 316 kB filesystem |
8M1M | 8 MB with 1 MB filesystem |
16M1M | 16 MB with 1 MB filesystem |
16M8M | 16 MB with 8 MB filesystem |
N.B. Starting with release 2023/12/25, All ESP32 LittleFS builds use IDF 5.1, to support newer ESP32 chips like ESP32-C2 and ESP32-C6 and SPI Ethernet. Other SPIFFS based ESP32 builds will be migrated to LittleFS as SPIFFS is no longer available in IDF 5 and later. A migration plan will be made available in 2024.
[opt-build-features] can be any of:
Build features | Description |
---|---|
LittleFS | Use LittleFS instead of SPIFFS filesystem (SPIFFS is unstable > 2 MB, and no longer supported in IDF > 5) |
VCC | Analog input configured to measure VCC voltage (ESP8266 only) |
OTA | Arduino OTA (Over The Air) update feature enabled |
Domoticz | Only Domoticz controllers (HTTP) and plugins included |
Domoticz_MQTT | Only Domoticz controllers (MQTT) and plugins included |
FHEM_HA | Only FHEM/OpenHAB/Home Assistant (MQTT) controllers and plugins included |
ETH | Ethernet interface enabled (ESP32-classic and IDF 5.x based builds) |
OPI_PSRAM | Specific configuration to enable PSRAM detection, ESP32-S3 only |
CDC | Support USBCDC/HWCDC-serial console on ESP32-C3, ESP32-S2, ESP32-S3 and ESP32-C6 |
noOTA/NO_OTA | Does not support OTA (Over The Air-updating of the firmware) Use the flash page or ESPTool via USB Serial |
Some example firmware names:
Firmware name | Hardware | Included plugins |
---|---|---|
ESPEasy_mega-20230822_normal_ESP8266_1M.bin | ESP8266/ESP8285 with 1MB flash | Stable |
ESPEasy_mega-20230822_normal_ESP8266_4M1M.bin | ESP8266 with 4MB flash | Stable |
ESPEasy_mega-20230822_collection_A_ESP8266_4M1M.bin | ESP8266 with 4MB flash | Stable + Collection base + set A |
ESPEasy_mega-20230822_normal_ESP32_4M316k.bin | ESP32 with 4MB flash | Stable |
ESPEasy_mega-20230822_collection_A_ESP32_4M316k.bin | ESP32 with 4MB flash | Stable + Collection base + set A |
ESPEasy_mega-20230822_collection_B_ESP32_4M316k.bin | ESP32 with 4MB flash | Stable + Collection base + set B |
ESPEasy_mega-20230822_max_ESP32s3_8M1M_LittleFS_CDC_ETH.bin | ESP32-S3 with 8MB flash, CDC-serial, Ethernet | All available plugins |
ESPEasy_mega-20230822_max_ESP32s3_8M1M_LittleFS_OPI_PSRAM_CDC_ETH.bin | ESP32-S3 8MB flash, PSRAM, CDC-serial, Ethernet | All available plugins |
ESPEasy_mega-20230822_max_ESP32_16M1M.bin | ESP32 with 16MB flash | All available plugins |
ESPEasy_mega-20230822_max_ESP32_16M8M_LittleFS_ETH.bin | ESP32 with 16MB flash, Ethernet | All available plugins |
The binary files for the different ESP32 variants (S2, C3, S3, C2, C6, 'Classic') are available in separate archives.
To see what plugins are included in which collection set, you can find that on the ESPEasy Plugin overview page
Documentation & more info
Our new, in-depth documentation can be found at ESPEasy.readthedocs.io. Automatically built, so always up-to-date according to the contributed contents. The old Wiki documentation can be found at letscontrolit.com/wiki.
Additional details and discussion are on the "Experimental" section of the forum: https://www.letscontrolit.com/forum/viewforum.php?f=18
SAST Tools
PVS-Studio - static analyzer for C, C++, C#, and Java code.
Icons used
Icons on courtesy of ICONS8.
Top Related Projects
ESPHome is a system to control your ESP8266/ESP32 by simple yet powerful configuration files and control them remotely through Home Automation systems.
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
💡 ESP8266 framework for Homie, a lightweight MQTT convention for the IoT
Blynk library for IoT boards. Works with Arduino, ESP32, ESP8266, Raspberry Pi, Particle, ARM Mbed, etc.
Arduino core for the ESP32
ESP8266 WiFi Connection manager with web captive portal
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot