Skip to content

Commit a617a2d

Browse files
authored
Merge pull request #32 from koosoli/Testing
0.7 Release
2 parents 9ddc53c + 552aa7f commit a617a2d

File tree

56 files changed

+7075
-2441
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+7075
-2441
lines changed

README.md

Lines changed: 56 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
# reTerminal Dashboard Designer
1+
# ESPHome Designer
22

3-
4-
**A visual drag-and-drop editor for ESPHome e-paper dashboards, running right inside Home Assistant.**
3+
**A visual drag-and-drop editor for ESPHome displays (E-Ink, OLED, LCD, Touch), running right inside Home Assistant.**
54

65

76

@@ -17,9 +16,11 @@
1716

1817
**No more hand-coding ESPHome display lambdas! 🎉**
1918

20-
Got an E-Ink Display with an ESP chip and frustrated with manually writing display code? Yeah, me too. So I built a drag-and-drop editor that runs right inside Home Assistant.
19+
Building a custom smart display for Home Assistant? Frustrated with manually writing C++ lambdas and guessing coordinates?
20+
21+
Design ESPHome displays right inside Home Assistant. This HACS integration offers a drag-and-drop editor with direct access to your sensor library via an intuitive entity picker.
2122

22-
Design your e-ink dashboard visually, click generate, flash it - done. No YAML wrestling required (unless you're into that).
23+
It enables you to build premium, touch-interactive dashboards for various ESP32-based devices (like the Seeed reTerminal, TRMNL, standard touch screens, and more) without writing a single line of display code.
2324

2425

2526
## What Does It Do?
@@ -37,10 +38,10 @@ Design your e-ink dashboard visually, click generate, flash it - done. No YAML w
3738

3839
### 1. Install via HACS (Recommended)
3940

40-
1. Add this repository to HACS as a custom repository
41-
2. Search for "reTerminal Dashboard Designer" and install
41+
1. Add `https://github.com/koosoli/ESPHomeDesigner` to HACS as a custom repository
42+
2. Search for "ESPHome Designer" and install
4243
3. Restart Home Assistant
43-
4. Go to **Settings****Devices & Services****Add Integration** → Search for "reTerminal Dashboard Designer"
44+
4. Go to **Settings****Devices & Services****Add Integration** → Search for "ESPHome Designer"
4445

4546
### 2. Manual Installation
4647

@@ -81,12 +82,31 @@ Then create a new ESPHome device:
8182

8283
Done! Your custom dashboard is now running on your device.
8384

85+
### 6. Connect & Automate
86+
87+
Once flashed, your device will come online.
88+
89+
1. Go to **Settings****Devices & Services** in Home Assistant.
90+
2. Your device should be discovered (or you can add it via the ESPHome integration).
91+
3. **Configure it** to ensure Home Assistant connects to its API.
92+
93+
### Philosophy: Design here, Automate there.
94+
95+
Think of this tool as the **Frontend Designer** for your physical display.
96+
97+
- **Use this tool** to make it look beautiful (pixel-perfect placement, fonts, icons).
98+
- **Use Home Assistant** for the logic.
99+
100+
We expose everything (buttons, sensors, battery) back to Home Assistant. Does a button press toggle a light? Play a sound? Trigger a scene? **Do that in Home Assistant Automations**, where HA shines best.
101+
84102
## Widget Types
85103

86104
- **Text** - Static labels and headers
87105
- Customizable font size (8-260px) - generates fonts automatically
88-
- Color options: black, white, gray
106+
- Color options: black, white, **gray** (renders as dithered pattern)
89107
- **Sensor Text** - Live values from Home Assistant entities
108+
- **Smart Type Detection**: Automatically detects number vs string functionality
109+
- **Manual Override**: "Is Text Sensor" option for forced text handling
90110
- Separate font sizes for label and value
91111
- Multiple display formats (value only, label + value, stacked)
92112
- **Icon** - Material Design Icons with customizable size and color
@@ -133,6 +153,27 @@ Done! Your custom dashboard is now running on your device.
133153
- Shows upcoming weather conditions with icons
134154
- Integrates with Home Assistant weather entities
135155

156+
## LVGL Support (Experimental)
157+
158+
**⚠️ Highly Experimental - Expect Bugs!**
159+
160+
This tool includes experimental support for **LVGL (Light and Versatile Graphics Library)** widgets on LCD+Touch devices. LVGL enables interactive widgets like buttons, switches, sliders, and checkboxes that can control Home Assistant entities directly from the touchscreen.
161+
162+
### Important Notes
163+
164+
- **LCD+Touch devices only** - LVGL is designed for real-time displays, not e-paper
165+
- **Entire page switches to LVGL mode** if you add any LVGL widget
166+
- **High memory usage** - Requires ESP32-S3 with PSRAM
167+
- **May be unstable** - This feature is under active development
168+
169+
### Available LVGL Widgets
170+
171+
- Buttons, Switches, Checkboxes, Sliders (interactive, can trigger HA actions)
172+
- Arcs, Bars, Charts (display sensor values)
173+
- Labels, Images, QR Codes, and more
174+
175+
For stable results, stick to **Native Mode** (standard widgets without LVGL prefix).
176+
136177
## Features
137178

138179
- **Visual Editor** - Drag-and-drop canvas with snap-to-grid, live entity state updates
@@ -142,14 +183,15 @@ Done! Your custom dashboard is now running on your device.
142183
- **Page Management** - Drag & drop to reorder pages in the sidebar
143184
- **Productivity Tools** - Copy/Paste (Ctrl+C/V), Undo/Redo (Ctrl+Z/Y), and Z-Index layering support
144185
- **Canvas Controls** - Zoom in/out and recenter for precise editing
145-
- **Light/Dark Mode** - Choose your preferred theme
186+
- **Dark Mode Option** - Toggle "Dark Mode" in device settings for black backgrounds
146187
- **Hardware Integration** - Buttons, buzzer, temperature/humidity sensors exposed to HA
147188
- **Smart Generator** - Produces clean, additive YAML that doesn't conflict with your base config
148189
- **Template-Free Workflow** - No more manual template merging, just paste and go
149190
- **Live YAML Preview** - Select any widget to instantly highlight its corresponding code in the generated YAML snippet
150191
- **Round-Trip Editing** - Import existing ESPHome display code back into the editor
151192
- **Battery Management** - Voltage monitoring, battery level percentage, icon indicators
152193
- **Power Saving** - Configurable refresh rates, deep sleep support for night hours
194+
- **Experimental LVGL Support** - (Beta) Support for LVGL widgets like Arc and Button on capable devices
153195

154196
## Technical Details
155197

@@ -180,7 +222,9 @@ The workflow is safe and deterministic - same layout always produces the same YA
180222
**Currently Supported:**
181223
- Seeed Studio reTerminal E1001 (ESP32-S3, 800x480 e-paper, black/white)
182224
- Seeed Studio reTerminal E1002 (ESP32-S3, 800x480 e-paper, color)
225+
- Waveshare PhotoPainter (ESP32-S3, 7-Color e-paper)
183226
- TRMNL (ESP32-C3 e-paper device)
227+
- *More coming soon!* (Experimental devices marked as "untested" in editor)
184228

185229
**Hardware Features Exposed:**
186230
- 3 physical buttons (GPIO 3/4/5)
@@ -212,8 +256,8 @@ All exposed as Home Assistant entities for use in automations.
212256

213257

214258
**Duplicate section errors?**
215-
- Only paste `globals`, `font`, `text_sensor`, `button`, `script`, `display` from generated snippet
216-
- Don't copy `output`, `rtttl`, `sensor`, `time` - these are in the hardware template
259+
- The generator now produces a complete, standalone configuration including `psram`, `i2c`, etc.
260+
- **Do not** use old hardware templates that define these sections. Rely on the generated code.
217261

218262
**Compilation Fails ("Killed signal" / Out of Memory)?**
219263
If your Raspberry Pi crashes with `Killed signal terminated program`, it lacks the RAM for these fonts.
@@ -232,14 +276,6 @@ Add `compile_process_limit: 1` to your `esphome:` section in the YAML. This redu
232276
```
233277
5. **Upload**: Take the generated `.bin` file and upload it via the Home Assistant ESPHome dashboard (Install → Manual Download).
234278

235-
## Contributing
236-
237-
This is a passion project built to solve a real problem. Found a bug? Have an idea? Open an issue or PR!
238-
239-
**Planned features:**
240-
- Color e-ink support
241-
- More device types (other ESP32-based e-paper displays)
242-
243279
## License
244280

245281
Made with love ❤️ - free and Open Source under the GPL 3.0 license. Share the love!

custom_components/reterminal_dashboard/CONTRIBUTING_AGENTS.md

Lines changed: 0 additions & 40 deletions
This file was deleted.

custom_components/reterminal_dashboard/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
182182
frontend.async_register_built_in_panel(
183183
hass,
184184
component_name="iframe", # Use iframe panel type to load our view
185-
sidebar_title="reTerminal",
185+
sidebar_title="ESPHome Designer",
186186
sidebar_icon="mdi:tablet-dashboard",
187187
frontend_url_path="reterminal-dashboard",
188188
config={"url": "/reterminal-dashboard"},

custom_components/reterminal_dashboard/config_flow.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
@dataclass
4242
class FlowContext:
4343
"""Hold temporary flow context."""
44-
entry_title: str = "reTerminal Dashboard Designer"
44+
entry_title: str = "ESPHome Designer"
4545

4646

4747
async def _get_storage(hass: HomeAssistant) -> DashboardStorage:
@@ -129,7 +129,7 @@ async def async_step_init(self, user_input: dict[str, Any] | None = None):
129129
# Provide a textual summary; options dict not used to drive logic yet.
130130
info_text = (
131131
f"🎨 Dashboard Editor: {dashboard_url}\n\n"
132-
"reTerminal Dashboard Designer is configured.\n\n"
132+
"ESPHome Designer is configured.\n\n"
133133
"Use the following pattern in your ESPHome firmware for the reTerminal E1001:\n"
134134
f" online_image URL: {api_base}" + "/{device_id}/page/{page}/image.png?token={api_token}\n\n"
135135
"Devices and layouts are managed via the dashboard editor and HTTP API."

0 commit comments

Comments
 (0)