https://github.com/flavio-fernandes/crowpanel-esphome
ESPHome + LVGL firmware for the Elecrow CrowPanel ESP32-S3 rotary display, with a Home Assistant EGO charger timer UI.
https://github.com/flavio-fernandes/crowpanel-esphome
crowpanel devcontainer elecrow embedded-workbench esp-idf esp32-s3 esphome firmware home-assistant iot lvgl
Last synced: 5 days ago
JSON representation
ESPHome + LVGL firmware for the Elecrow CrowPanel ESP32-S3 rotary display, with a Home Assistant EGO charger timer UI.
- Host: GitHub
- URL: https://github.com/flavio-fernandes/crowpanel-esphome
- Owner: flavio-fernandes
- Created: 2026-05-19T18:05:22.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-05-25T22:48:45.000Z (about 1 month ago)
- Last Synced: 2026-05-26T00:33:48.844Z (about 1 month ago)
- Topics: crowpanel, devcontainer, elecrow, embedded-workbench, esp-idf, esp32-s3, esphome, firmware, home-assistant, iot, lvgl
- Language: Shell
- Homepage: https://flaviof.com
- Size: 5.52 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Roadmap: docs/roadmap.md
- Agents: AGENTS.md
Awesome Lists containing this project
README
# CrowPanel ESPHome Workspace
ESPHome + LVGL firmware for the Elecrow CrowPanel 1.28-inch ESP32-S3 rotary
touch display.
The main firmware, [`esphome/crowpanel.yaml`](esphome/crowpanel.yaml), turns the
round touch display and rotary encoder into a Home Assistant EGO charger timer:
rotate to set the timer, tap or press to start/stop, and watch the arc, power,
state, and status messages update from Home Assistant.
| Stopped | Charging |
| --- | --- |
|  |  |
## Why This Repo Exists
This project is both a working firmware and a reproducible bring-up notebook.
It captures the small details that make CrowPanel development much smoother:
ESPHome/LVGL structure, Home Assistant helper entities, workbench-safe flashing,
serial-monitor caveats, physical camera verification, and known-good diagnostic
examples.
The development path is:
```text
Mac -> VS Code SSH -> Linux host -> Docker/devcontainer -> ESP workbench -> SLOT1 CrowPanel
```
## Hardware
Target device:
[Elecrow CrowPanel 1.28inch-HMI ESP32 Rotary Display](https://www.elecrow.com/crowpanel-1-28inch-hmi-esp32-rotary-display-240-240-ips-round-touch-knob-screen.html)
Useful hardware references:
- [Elecrow CrowPanel wiki](https://www.elecrow.com/wiki/CrowPanel_1.28inch-HMI_ESP32_Rotary_Display.html)
- [Local CrowPanel hardware facts](docs/reference/crowpanel/hardware-facts.md)
- [Project sources and references](docs/project-sources.md)
## What Is Included
- [`esphome/crowpanel.yaml`](esphome/crowpanel.yaml) - main EGO charger timer
firmware for the CrowPanel.
- [`config/home-assistant/ego-charger-helpers.yaml`](config/home-assistant/ego-charger-helpers.yaml)
- Home Assistant helper entities used by the firmware.
- [`examples/`](examples/) - small ESPHome examples and CrowPanel diagnostics.
- [`tools/`](tools/) - workbench helpers for validation, serial logs, flashing,
and camera capture.
- [`docs/`](docs/) - bring-up notes, safety notes, test plans, source links, and
repeatable workflows.
## Quick Start
Clone the repo on the Linux host connected to the ESP workbench:
```bash
mkdir -p ~/src
cd ~/src
git clone https://github.com/flavio-fernandes/crowpanel-esphome.git
cd crowpanel-esphome
```
Create local-only config files:
```bash
cp config/workbench.env.example config/workbench.env
cp esphome/secrets.yaml.example esphome/secrets.yaml
```
Edit both files for your network. The template is
[`esphome/secrets.yaml.example`](esphome/secrets.yaml.example), but the real
`esphome/secrets.yaml` stays local and ignored by git.
Install or include the Home Assistant package from
[`config/home-assistant/ego-charger-helpers.yaml`](config/home-assistant/ego-charger-helpers.yaml),
then make sure your charger switch and power sensor match the substitutions at
the top of [`esphome/crowpanel.yaml`](esphome/crowpanel.yaml).
Build or open the devcontainer and compile the firmware:
```bash
devcontainer up --workspace-folder .
devcontainer exec --workspace-folder . esphome config esphome/crowpanel.yaml
devcontainer exec --workspace-folder . esphome compile esphome/crowpanel.yaml
```
Flash only after a successful compile of that same YAML:
```bash
devcontainer exec --workspace-folder . tools/espwb-esptool flash-id
devcontainer exec --workspace-folder . tools/espwb-esptool write-flash 0x0 esphome/.esphome/build/crowpanel/.pioenvs/crowpanel/firmware.factory.bin
```
For the full fresh-clone workflow, including secrets, Home Assistant helpers,
compile paths, flashing, monitoring, and camera verification, start here:
[`docs/esphome-fresh-clone-flash-cheatsheet.md`](docs/esphome-fresh-clone-flash-cheatsheet.md).
## Documentation Map
Start with the guide that matches what you are doing:
- New checkout to flashed firmware:
[`docs/esphome-fresh-clone-flash-cheatsheet.md`](docs/esphome-fresh-clone-flash-cheatsheet.md)
- Short workbench command reference:
[`docs/esphome-workbench-cheatsheet.md`](docs/esphome-workbench-cheatsheet.md)
- CrowPanel hardware and LVGL notes:
[`docs/reference/crowpanel/README.md`](docs/reference/crowpanel/README.md)
- CrowPanel ESPHome/LVGL implementation notes:
[`docs/reference/crowpanel/esphome-lvgl-notes.md`](docs/reference/crowpanel/esphome-lvgl-notes.md)
- EGO charger UI behavior notes:
[`docs/ego-charger-timer-ui.md`](docs/ego-charger-timer-ui.md)
- Production test matrix:
[`docs/ego-charger-production-test-matrix.md`](docs/ego-charger-production-test-matrix.md)
- Examples overview:
[`examples/README.md`](examples/README.md)
- ESPHome config notes:
[`esphome/README.md`](esphome/README.md)
- Local config rules:
[`config/README.md`](config/README.md)
- Source links and external references:
[`docs/project-sources.md`](docs/project-sources.md)
- Public hygiene:
[`docs/public-release-checklist.md`](docs/public-release-checklist.md)
## Safety Rules
- Flash only `SLOT1` unless you explicitly decide otherwise.
- Use [`tools/espwb-esptool`](tools/espwb-esptool) for `chip-id`, `flash-id`,
`read-flash`, and `write-flash`.
- Use RFC2217 only for serial monitoring through
[`tools/espwb-monitor`](tools/espwb-monitor).
- Do not use RFC2217 reset control for flashing.
- Keep `config/workbench.env`, `esphome/secrets.yaml`, firmware binaries, and
local captures out of commits unless a file is intentionally documented.
## Thanks
Special thanks to [Andreas Spiess](https://www.sensorsiot.org/) for the
Universal Embedded Workbench/devcontainer inspiration and to
[Vaclav Chaloupka](https://github.com/bruxy70) for the CrowPanel and Home
Assistant/ESPHome development trail. Their videos and repositories are
collected in [`docs/project-sources.md`](docs/project-sources.md), along with
Elecrow's official product, wiki, course, and example links.