Convert Figma logo to code with AI

letscontrolit logoESPEasy

Easy MultiSensor device based on ESP8266/ESP32

3,271
2,212
3,271
395

Top Related Projects

8,412

ESPHome is a system to control your ESP8266/ESP32 by simple yet powerful configuration files and control them remotely through Home Automation systems.

22,081

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

  1. Download the latest release from the ESPEasy GitHub repository.
  2. Flash the firmware to your ESP8266 or ESP32 device using a tool like ESPTool or NodeMCU Flasher.
  3. Connect to the ESP device's Wi-Fi access point (named "ESP_Easy_0").
  4. Open a web browser and navigate to 192.168.4.1 to access the configuration interface.
  5. Configure your device's settings, including Wi-Fi credentials and desired plugins.
  6. Save the configuration and reboot the device.
  7. 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

8,412

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.

22,081

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 Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Latest NightlyBuild StatusDownloadsDocsPatreonKo-FiPayPal
GitHub versionBuild statusDownloadsDocumentation Statusdonatedonatedonate

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 typeDescriptionincluded plugins
climateAll plugins related to climate measurementStable + Climate
customCustom predefined set/Defined in Custom.hSpecific
normalStandard pluginsStable
collection_ANormal + plugin collection AStable + Collection base + set A
collection_BNormal + plugin collection BStable + Collection base + set B
collection_CNormal + plugin collection CStable + Collection base + set C
collection_DNormal + plugin collection DStable + Collection base + set D
collection_ENormal + plugin collection EStable + Collection base + set E
collection_FNormal + plugin collection FStable + Collection base + set F
collection_GNormal + plugin collection GStable + Collection base + set G
maxAll available pluginsAll available
energyAll plugins related to energy measurementStable + Energy measurement
displayAll plugins related to displaysStable + Displays
neopixelAll plugins related to neopixelStable + Neopixel
hardhardware specific buildsMinimal
minimalminimal plugins for specific use-casesSwitch and Controller
spec_*specialized technical buildsNot intended for regular use
IRextInfra-red hardware specificSending and receiving IR cmd
safeboot(Experimental) safeboot build to enable
most/all plugins on 4MB Flash boards
None

[opt-arduino-library] (optional) can be any of:

Arduino libraryDescription
alt_wifiAlternative WiFi configuration
betaArduino Beta release
sdk3Arduino SDK v.3
core_274Arduino Core 2.7.4 release
core_302Arduino Core 3.0.2 release
core_274_sdk3Arduino Core 2.7.4 SDK v.3 release

[hardware-type] can be any of:

Hardware typeDescription
ESP8266Espressif ESP8266/ESP8285 generic boards
WROOM02Espressif ESP8266 WRoom02 boards
ESP32Espressif ESP32 generic boards
ESP32solo1Espressif ESP32-Solo1 generic boards
ESP32s2Espressif ESP32-S2 generic boards
ESP32c3Espressif ESP32-C3 generic boards
ESP32s3Espressif ESP32-S3 generic boards
ESP32c2Espressif ESP32-C2 generic boards
ESP32c6Espressif ESP32-C6 generic boards
ESP32-wrover-kitEspressif ESP32 wrover-kit boards
SONOFFSonoff hardware specific
other_POWSwitch with power measurement
Shelly_1Shelly 1 switch
Shelly_PLUG_SShelly plug S switch with power measurement
VentusVentus W266 weather station
LCtech_relayLC-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 sizeDescription
1M1 MB with 128 kB filesystem
2M2 MB with 128 kB filesystem
2M2562 MB with 256 kB filesystem
2M320k2 MB with 320 kB filesystem
4M1M4 MB with 1 MB filesystem
4M2M4 MB with 2 MB filesystem
16M16 MB with 14 MB filesystem
4M316k4 MB with 316 kB filesystem
8M1M8 MB with 1 MB filesystem
16M1M16 MB with 1 MB filesystem
16M8M16 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 featuresDescription
LittleFSUse LittleFS instead of SPIFFS filesystem (SPIFFS is unstable > 2 MB, and no longer supported in IDF > 5)
VCCAnalog input configured to measure VCC voltage (ESP8266 only)
OTAArduino OTA (Over The Air) update feature enabled
DomoticzOnly Domoticz controllers (HTTP) and plugins included
Domoticz_MQTTOnly Domoticz controllers (MQTT) and plugins included
FHEM_HAOnly FHEM/OpenHAB/Home Assistant (MQTT) controllers and plugins included
ETHEthernet interface enabled (ESP32-classic and IDF 5.x based builds)
OPI_PSRAMSpecific configuration to enable PSRAM detection, ESP32-S3 only
CDCSupport USBCDC/HWCDC-serial console on ESP32-C3, ESP32-S2, ESP32-S3 and ESP32-C6
noOTA/NO_OTADoes not support OTA (Over The Air-updating of the firmware) Use the flash page or ESPTool via USB Serial

Some example firmware names:

Firmware nameHardwareIncluded plugins
ESPEasy_mega-20230822_normal_ESP8266_1M.binESP8266/ESP8285 with 1MB flashStable
ESPEasy_mega-20230822_normal_ESP8266_4M1M.binESP8266 with 4MB flashStable
ESPEasy_mega-20230822_collection_A_ESP8266_4M1M.binESP8266 with 4MB flashStable + Collection base + set A
ESPEasy_mega-20230822_normal_ESP32_4M316k.binESP32 with 4MB flashStable
ESPEasy_mega-20230822_collection_A_ESP32_4M316k.binESP32 with 4MB flashStable + Collection base + set A
ESPEasy_mega-20230822_collection_B_ESP32_4M316k.binESP32 with 4MB flashStable + Collection base + set B
ESPEasy_mega-20230822_max_ESP32s3_8M1M_LittleFS_CDC_ETH.binESP32-S3 with 8MB flash, CDC-serial, EthernetAll available plugins
ESPEasy_mega-20230822_max_ESP32s3_8M1M_LittleFS_OPI_PSRAM_CDC_ETH.binESP32-S3 8MB flash, PSRAM, CDC-serial, EthernetAll available plugins
ESPEasy_mega-20230822_max_ESP32_16M1M.binESP32 with 16MB flashAll available plugins
ESPEasy_mega-20230822_max_ESP32_16M8M_LittleFS_ETH.binESP32 with 16MB flash, EthernetAll 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

Gitpod Ready-to-Code

SAST Tools

PVS-Studio - static analyzer for C, C++, C#, and Java code.

Icons used

Icons on courtesy of ICONS8.