# Home Assistant ESP Screens
Thank you! I work on this project with a lot of love, and every bit of support helps. I truly love the Home Assistant community.
Tap a tile to switch it, hold it for the full card. Keys and sliders right on the tile, pastel colors, a clock, the weather and history you can read with a finger. The media card shows what plays with its album cover, fetched by ESP Screens like a camera picture (how). Rendered from the firmware's own LVGL code with a demo home.
The same cards on the 2.8-inch CYD, 320 × 240. The CYD has no memory for pictures: its media card shows the player's icon in the cover's place.
Dark mode, for a screen beside the bed: the same pages, darker. It is a switch on the screen, in ESP Screens and in Home Assistant, so an automation can turn it on at bedtime.
Settings on the screen itself: hold the top bar. The same brightness, Dark mode, standby, night hours, clock and rotation as in ESP Screens, and every one of them is an entity in Home Assistant.
## Managed from Home Assistant
ESP Screens, a page in Home Assistant: your screens on the left, the pages of the chosen screen in the middle with the values Home Assistant reports right now, the library on the right.
Search your home, drop a tile on the preview, tap it for its name, width, control and color, and for what a tap does: open its card, switch it, or run any action Home Assistant has for it, such as the curtains to 50 %. Save, and the screen has it. ⌘K searches screens, entities and actions; Identify blinks a screen so you know which one it is.
A top bar built from your own home, firmware updates over Wi-Fi (every night if you like), and a skill so Claude can rearrange your screens.
Screen settings apply at once, and a change made on the screen or by an automation shows up here too.
Other hardware, such as a different display controller? Every screen has an Override YAML of its own, checked by ESPHome before a build and kept through every update.
## Alerts
Someone at the door? One event in an automation wakes every screen and shows it. Add the doorbell camera and a Guition shows who is there; tap the picture, or a camera tile, for the camera full screen, refreshed every few seconds. Camera images.
Any alert, on one screen or all of them, in a pastel color of your choice. How alerts work.
## Installing from Home Assistant ### Which screen | Screen | Resolution | Display / touch | | --- | --- | --- | | CYD ESP32-2432S028 | 320 × 240 | ILI9341 / resistive XPT2046 | | Guition ESP32-S3-4848S040, 4 inch | 480 × 480 | ST7701S RGB / capacitive GT911 | Use these exact board variants: similar-looking product names can have different controllers or connectors. Wallbox relays are not controlled. The firmware and built-in CLI are tested with **ESPHome 2026.6.2**. ### Do I need ESPHome? **You don't need to install the separate ESPHome Device Builder app.** ESP Screen Manager already includes the ESPHome CLI and can build firmware itself, install it via USB or give you the file to put on the screen from your own computer, and later update it wirelessly over OTA. **You do need to pair the flashed screen via the ESPHome integration in HA.** That pairing lives under **Settings → Devices & services**, not in the App store. Add the discovered device there. If it doesn't appear automatically, choose **Add integration → ESPHome** and enter the screen's IP address. If asked for a key, use the `api.encryption.key` from your own device YAML, and grant the device permission to perform Home Assistant actions. | Component | Needed? | What for? | | --- | --- | --- | | ESP Screen Manager app | Yes, for this installation route | Installing firmware, managing tiles, and sending current data to the screen | | ESPHome Device Builder app | No, optional | Alternative editor and firmware installer; the same CLI is already in ESP Screens | | ESPHome integration in HA | Yes, pair every screen | The connection between Home Assistant and the physical screen | So a fresh installation without ESPHome Device Builder also works. If there's no ESPHome `secrets.yaml` yet, our wizard asks for Wi-Fi once and stores it locally. Existing Wi-Fi secrets are reused. API and OTA keys are generated per new screen and stay in that device's own profile. ### Step by step For Home Assistant Container (Docker) without the App store, follow [ESP Screens with Docker](docs/DOCKER.md). For Home Assistant OS with Apps/Add-ons on **aarch64 or amd64**: 1. Open the App store and add this repository: `https://github.com/MaxGramser/homeassistant_espscreen`. 2. Install **ESP Screen Manager**, start the app, and open **ESP Screens**. ESPHome Device Builder is optional: the ESPHome CLI is already in this app. 3. Connect the screen with a USB data cable to the **Home Assistant machine** and choose **New screen** in the sidebar: CYD or Guition, a name, the USB port, and **Install**. If Wi-Fi is missing from the ESPHome `secrets.yaml`, the window asks for it once and ESP Screens only adds the missing lines. The profile with unique API and OTA keys goes into the ESPHome folder; the build and flash run in the same window (a first build takes a few minutes on a Raspberry Pi). Each screen gets its own profile. Is Home Assistant on a server or in a virtual machine, out of reach of the screen? Choose **Download** under **Install via**: ESP Screens builds the firmware, and you put it on the screen from your own computer with [ESPHome Web](https://web.esphome.io) in Chrome or Edge. After that, updates go over Wi-Fi as usual. 4. **CYD:** go through the calibration on the screen. **Guition:** uses GT911 without resistive calibration. Then pair the discovered ESPHome device in **Settings → Devices & services** using the API key the window shows after installation (copy button). Grant the device permission to perform Home Assistant actions. 5. Select the screen in ESP Screens, choose your tiles, and click **Save & send**. Then test the physical controls.
New screen (step 3) and choosing your tiles (step 5).
You can install new firmware later from **Firmware & USB → Wi-Fi / OTA** in the sidebar. For an existing screen, always use the existing profile; creating a new installation profile generates new keys. The [complete installation guide](docs/EASY_SETUP.md) walks through every step in more detail. ## More - **[Full reference](README_EXTENDED.md):** every card and setting, alerts and wake/sleep from an automation, the top bar, the settings page on the screen, and how updates keep your settings. - [Guition hardware, mounting, and rotation](docs/GUITION.md) · [CYD calibration and USB diagnostics](docs/CALIBRATING.md) · [Troubleshooting](docs/TROUBLESHOOTING.md) · [Release history](screen_manager/CHANGELOG.md) ## Credits and license The very first version started from Adrian Kuehlewind's [ESPHome-touch-display-mount](https://github.com/akuehlewind/ESPHome-touch-display-mount). Little of that code is left, but his repository has 3D-printable desk, under-desk, wall and flush mounts for the CYD. ESP Screens is MIT licensed, see [LICENSE](LICENSE).