ESPHomeDesigner  by koosoli

Visual designer for embedded Home Assistant displays

Created 2 months ago
442 stars

Top 67.6% on SourcePulse

GitHubView on GitHub
Project Summary

Summary

ESPHomeDesigner provides a visual, drag-and-drop interface for designing ESPHome display configurations, targeting Home Assistant users who want to create custom smart displays without manual C++ coding. It simplifies the creation of interactive dashboards for ESP32 devices by auto-generating YAML and integrating directly with Home Assistant entities.

How It Works

This project offers a visual editor, accessible as a Home Assistant integration or a standalone web app, that eliminates the need for manual ESPHome display lambda coding. Users design layouts by dragging widgets onto a canvas, with live previews of Home Assistant entities. The tool automatically generates clean, pasteable ESPHome YAML. Its philosophy is "Design here, Automate there," leveraging Home Assistant for logic and the designer for aesthetics, while exposing device controls back to HA. An AI-powered assistant can generate entire layouts from text prompts.

Quick Start & Requirements

  • Install/Run:
    • Live Web Version: Access koosoli.github.io/ESPHomeDesigner/. Requires Home Assistant URL, Long-Lived Access Token, and CORS configuration in HA's configuration.yaml.
    • HACS: Add https://github.com/koosoli/ESPHomeDesigner to HACS, install, restart HA, add integration.
    • Manual: Copy custom_components/reterminal_dashboard to HA config, restart HA, add integration.
  • Prerequisites: Home Assistant instance, Long-Lived Access Token, materialdesignicons-webfont.ttf font file placed in /config/esphome/fonts/ on the ESPHome device, and compatible ESP32 hardware.
  • Links: Live Demo: koosoli.github.io/ESPHomeDesigner/

Highlighted Details

  • AI-Powered Dashboard Assistant: Generates layouts and widgets from text prompts using Gemini, OpenAI, or OpenRouter.
  • Round-Trip Editing: Imports existing ESPHome configurations for modification.
  • Live YAML Generation: Generates ESPHome YAML configuration on-the-fly as the design is created.
  • Experimental LVGL Support: Enables interactive LVGL widgets on LCD+Touch devices, though it's noted as highly experimental and memory-intensive.
  • Hardware Integration: Exposes physical buttons, buzzer, temperature/humidity sensors, and battery voltage as Home Assistant entities.

Maintenance & Community

No specific community channels (Discord, Slack) or detailed contributor information are provided in the README beyond developer support links.

Licensing & Compatibility

Licensed under GPL 3.0. This copyleft license requires derivative works to be shared under the same license, which may impose restrictions on integration with proprietary software or commercial use.

Limitations & Caveats

The experimental LVGL support is noted as potentially unstable and memory-intensive, requiring specific hardware (ESP32-S3 with PSRAM). Compilation can fail on memory-constrained systems (e.g., Raspberry Pi) due to font processing, necessitating workarounds like compile_process_limit or cross-compilation on a PC. Only explicitly listed hardware is tested; other devices may require troubleshooting.

Health Check
Last Commit

1 day ago

Responsiveness

Inactive

Pull Requests (30d)
8
Issues (30d)
96
Star History
366 stars in the last 30 days

Explore Similar Projects

Feedback? Help us improve.