If this project helped you, you can support the development via PayPal donation!
π Full changelog available here
π Description
ESPHomeGUIeasy is a standalone desktop application written in Python with a modern PyQt6 interface, designed to simplify how you create, configure, and deploy firmware for ESPHome-compatible devices (ESP32, ESP8266, etc.).
It provides a full visual workflow β from device configuration to firmware flashing β with no need to write YAML manually (but you can if you want to).
Whether you're a beginner in home automation or a power user managing multiple devices, ESPHomeGUIeasy makes the process easier, faster, and more organized.
-
π§± Visual βblock-styleβ editor
Drag & drop preconfigured sensor/action blocks β no YAML syntax needed -
βοΈ Live YAML preview & editing
The interface updates YAML as you go β and you can still tweak it manually -
π₯οΈ Cross-platform UI
Clean and responsive PyQt6-based GUI, available in multiple languages (EN, IT, ES, DE) -
π Project Manager (since v1.4.0)
Organize projects by category with metadata, changelogs, and quick actions -
π Integrated Flashing
Supports USB and OTA uploads with built-in log viewer -
π§° Console with build logs
Real-time output while building and flashing firmware -
π Local project folder & YAML structure
Compatible with ESPHome CLI structure -
πΎ Works out of the box
No Python installation or venv required β ships with Python embedded
- \ref boards "π¦ Supported Boards"
- \ref modules_schema "π§± Modules Schema"
- \ref sensors "π‘ Sensor Definitions"
- Download the
.exefile from the Releases - Run the installer
- Follow the wizard to complete installation
- On first launch:
- You will be prompted to select a language
- A config database will be created at:
%LOCALAPPDATA%\ESPHomeGUIeasy\user_config.db - Logs will be saved to:
%LOCALAPPDATA%\ESPHomeGUIeasy\esphomeguieasy_log.txt
β οΈ Note: SmartScreen or antivirus may falsely flag the installer. Click "More info" > "Run anyway".
- Download the
.tar.gzfile from the Releases - Open the downloaded
.tar.gzfile and drag ESPHomeGUIeasy into/Applications. - On first launch:
- If you see "App is from unidentified developer", right-click the app and select "Open".
- Accept language selection prompt.
π If serial ports do not appear: Grant Terminal and App full disk and USB access via System Settings > Privacy & Security
- Download the
.tar.gzfrom Releases - Extract the archive and run the application:
tar -xzf ESPHomeGUIeasy.tar.gz ./ESPHomeGUIeasy/ESPHomeGUIeasy.sh
π Grant serial port permissions:
sudo usermod -aG dialout $(whoami) reboot
π Dependencies like Python are bundled. You donβt need to install them separately.
- Python 3.10 or higher
- ESPHome installed globally:
pip install esphome
git clone https://github.com/TheWhiteWolf1985/ESPHomeGuiEasy.git
cd ESPHomeGuiEasypython -m venv venv
# Activate:
venv\Scripts\activate # On Windows
source venv/bin/activate # On macOS/Linux
pip install -r requirements.txtpython main.py- PyQt6 β GUI interface
- ruamel.yaml β YAML support
- pyserial β serial communication
-
The program doesn't start
- Extract all files before running
- Check antivirus or run from terminal:
./ESPHomeGUIeasy > log.txt 2>&1
-
ESPHome not found
- Make sure it's in your
PATH, or install it:pip install esphome
- Make sure it's in your
-
Serial port errors on Linux/macOS
sudo usermod -aG dialout $(whoami) reboot
core/ # YAML handling, flashing, logging
config/ # JSON definitions: boards, sensors, modules
docs/ # Doxygen documentation
gui/ # GUI interface (PyQt6)
assets/ # Icons and UI graphics
main.py # Entry point for the app
All user data is stored in:
- Windows:
%LOCALAPPDATA%\ESPHomeGUIeasy - macOS/Linux:
~/.config/ESPHomeGUIeasyor$XDG_CONFIG_HOME/ESPHomeGUIeasy
Files:
user_config.dbβ language and startup preferencesesphomeguieasy_log.txtβ crash and debug log
You can safely delete this folder to reset the app.
AGPL v3 with additional terms β see LICENSE.txt
β οΈ This project is released for personal, educational, and non-commercial use only.
Commercial use is strictly prohibited without prior written permission from the author.
Contributions are welcome via pull request or issue.
Please report bugs in the Issues section with:
- OS and version
- Python version
- Steps to reproduce the problem



