{"id":51172301,"url":"https://github.com/flavio-fernandes/crowpanel-esphome","last_synced_at":"2026-06-27T01:30:34.162Z","repository":{"id":360321333,"uuid":"1243841312","full_name":"flavio-fernandes/crowpanel-esphome","owner":"flavio-fernandes","description":"ESPHome + LVGL firmware for the Elecrow CrowPanel ESP32-S3 rotary display, with a Home Assistant EGO charger timer UI.","archived":false,"fork":false,"pushed_at":"2026-05-25T22:48:45.000Z","size":5784,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-26T00:33:48.844Z","etag":null,"topics":["crowpanel","devcontainer","elecrow","embedded-workbench","esp-idf","esp32-s3","esphome","firmware","home-assistant","iot","lvgl"],"latest_commit_sha":null,"homepage":"https://flaviof.com","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flavio-fernandes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-19T18:05:22.000Z","updated_at":"2026-05-25T23:31:23.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/flavio-fernandes/crowpanel-esphome","commit_stats":null,"previous_names":["flavio-fernandes/crowpanel-esphome"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/flavio-fernandes/crowpanel-esphome","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flavio-fernandes%2Fcrowpanel-esphome","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flavio-fernandes%2Fcrowpanel-esphome/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flavio-fernandes%2Fcrowpanel-esphome/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flavio-fernandes%2Fcrowpanel-esphome/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flavio-fernandes","download_url":"https://codeload.github.com/flavio-fernandes/crowpanel-esphome/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flavio-fernandes%2Fcrowpanel-esphome/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34839004,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-26T02:00:06.560Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["crowpanel","devcontainer","elecrow","embedded-workbench","esp-idf","esp32-s3","esphome","firmware","home-assistant","iot","lvgl"],"created_at":"2026-06-27T01:30:32.087Z","updated_at":"2026-06-27T01:30:34.147Z","avatar_url":"https://github.com/flavio-fernandes.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CrowPanel ESPHome Workspace\n\nESPHome + LVGL firmware for the Elecrow CrowPanel 1.28-inch ESP32-S3 rotary\ntouch display.\n\nThe main firmware, [`esphome/crowpanel.yaml`](esphome/crowpanel.yaml), turns the\nround touch display and rotary encoder into a Home Assistant EGO charger timer:\nrotate to set the timer, tap or press to start/stop, and watch the arc, power,\nstate, and status messages update from Home Assistant.\n\n| Stopped | Charging |\n| --- | --- |\n| ![CrowPanel stopped state](docs/images/crowpanel-ego-charger-stopped.jpg) | ![CrowPanel charging state](docs/images/crowpanel-ego-charger-in-use.jpg) |\n\n## Why This Repo Exists\n\nThis project is both a working firmware and a reproducible bring-up notebook.\nIt captures the small details that make CrowPanel development much smoother:\nESPHome/LVGL structure, Home Assistant helper entities, workbench-safe flashing,\nserial-monitor caveats, physical camera verification, and known-good diagnostic\nexamples.\n\nThe development path is:\n\n```text\nMac -\u003e VS Code SSH -\u003e Linux host -\u003e Docker/devcontainer -\u003e ESP workbench -\u003e SLOT1 CrowPanel\n```\n\n## Hardware\n\nTarget device:\n[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)\n\nUseful hardware references:\n\n- [Elecrow CrowPanel wiki](https://www.elecrow.com/wiki/CrowPanel_1.28inch-HMI_ESP32_Rotary_Display.html)\n- [Local CrowPanel hardware facts](docs/reference/crowpanel/hardware-facts.md)\n- [Project sources and references](docs/project-sources.md)\n\n## What Is Included\n\n- [`esphome/crowpanel.yaml`](esphome/crowpanel.yaml) - main EGO charger timer\n  firmware for the CrowPanel.\n- [`config/home-assistant/ego-charger-helpers.yaml`](config/home-assistant/ego-charger-helpers.yaml)\n  - Home Assistant helper entities used by the firmware.\n- [`examples/`](examples/) - small ESPHome examples and CrowPanel diagnostics.\n- [`tools/`](tools/) - workbench helpers for validation, serial logs, flashing,\n  and camera capture.\n- [`docs/`](docs/) - bring-up notes, safety notes, test plans, source links, and\n  repeatable workflows.\n\n## Quick Start\n\nClone the repo on the Linux host connected to the ESP workbench:\n\n```bash\nmkdir -p ~/src\ncd ~/src\ngit clone https://github.com/flavio-fernandes/crowpanel-esphome.git\ncd crowpanel-esphome\n```\n\nCreate local-only config files:\n\n```bash\ncp config/workbench.env.example config/workbench.env\ncp esphome/secrets.yaml.example esphome/secrets.yaml\n```\n\nEdit both files for your network. The template is\n[`esphome/secrets.yaml.example`](esphome/secrets.yaml.example), but the real\n`esphome/secrets.yaml` stays local and ignored by git.\n\nInstall or include the Home Assistant package from\n[`config/home-assistant/ego-charger-helpers.yaml`](config/home-assistant/ego-charger-helpers.yaml),\nthen make sure your charger switch and power sensor match the substitutions at\nthe top of [`esphome/crowpanel.yaml`](esphome/crowpanel.yaml).\n\nBuild or open the devcontainer and compile the firmware:\n\n```bash\ndevcontainer up --workspace-folder .\ndevcontainer exec --workspace-folder . esphome config esphome/crowpanel.yaml\ndevcontainer exec --workspace-folder . esphome compile esphome/crowpanel.yaml\n```\n\nFlash only after a successful compile of that same YAML:\n\n```bash\ndevcontainer exec --workspace-folder . tools/espwb-esptool flash-id\ndevcontainer exec --workspace-folder . tools/espwb-esptool write-flash 0x0 esphome/.esphome/build/crowpanel/.pioenvs/crowpanel/firmware.factory.bin\n```\n\nFor the full fresh-clone workflow, including secrets, Home Assistant helpers,\ncompile paths, flashing, monitoring, and camera verification, start here:\n[`docs/esphome-fresh-clone-flash-cheatsheet.md`](docs/esphome-fresh-clone-flash-cheatsheet.md).\n\n## Documentation Map\n\nStart with the guide that matches what you are doing:\n\n- New checkout to flashed firmware:\n  [`docs/esphome-fresh-clone-flash-cheatsheet.md`](docs/esphome-fresh-clone-flash-cheatsheet.md)\n- Short workbench command reference:\n  [`docs/esphome-workbench-cheatsheet.md`](docs/esphome-workbench-cheatsheet.md)\n- CrowPanel hardware and LVGL notes:\n  [`docs/reference/crowpanel/README.md`](docs/reference/crowpanel/README.md)\n- CrowPanel ESPHome/LVGL implementation notes:\n  [`docs/reference/crowpanel/esphome-lvgl-notes.md`](docs/reference/crowpanel/esphome-lvgl-notes.md)\n- EGO charger UI behavior notes:\n  [`docs/ego-charger-timer-ui.md`](docs/ego-charger-timer-ui.md)\n- Production test matrix:\n  [`docs/ego-charger-production-test-matrix.md`](docs/ego-charger-production-test-matrix.md)\n- Examples overview:\n  [`examples/README.md`](examples/README.md)\n- ESPHome config notes:\n  [`esphome/README.md`](esphome/README.md)\n- Local config rules:\n  [`config/README.md`](config/README.md)\n- Source links and external references:\n  [`docs/project-sources.md`](docs/project-sources.md)\n- Public hygiene:\n  [`docs/public-release-checklist.md`](docs/public-release-checklist.md)\n\n## Safety Rules\n\n- Flash only `SLOT1` unless you explicitly decide otherwise.\n- Use [`tools/espwb-esptool`](tools/espwb-esptool) for `chip-id`, `flash-id`,\n  `read-flash`, and `write-flash`.\n- Use RFC2217 only for serial monitoring through\n  [`tools/espwb-monitor`](tools/espwb-monitor).\n- Do not use RFC2217 reset control for flashing.\n- Keep `config/workbench.env`, `esphome/secrets.yaml`, firmware binaries, and\n  local captures out of commits unless a file is intentionally documented.\n\n## Thanks\n\nSpecial thanks to [Andreas Spiess](https://www.sensorsiot.org/) for the\nUniversal Embedded Workbench/devcontainer inspiration and to\n[Vaclav Chaloupka](https://github.com/bruxy70) for the CrowPanel and Home\nAssistant/ESPHome development trail. Their videos and repositories are\ncollected in [`docs/project-sources.md`](docs/project-sources.md), along with\nElecrow's official product, wiki, course, and example links.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflavio-fernandes%2Fcrowpanel-esphome","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflavio-fernandes%2Fcrowpanel-esphome","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflavio-fernandes%2Fcrowpanel-esphome/lists"}