Python MIT

homeassistant_espscreen

Tessera (formerly ESP Screens): beautiful, easy touch screens for Home Assistant on affordable ESP32 panels, 2.8 to 10.1 inch (CYD, Guition, Waveshare). Drag-and-drop editor, no YAML, no MQTT.

M

MaxGramser

Dernière activité 29 sept. 2026
MaxGramser/homeassistant_espscreen

353

étoiles

34

forks

32

issues ouvertes

cydesp32esp32-2432s028resp32-p4esp32-s3esphomeguitionhass-addonhome-assistanthome-automationiotlvglsmart-hometouchscreenwaveshare

Ce README est souvent en anglais.

A mosaic of real Tessera screens in every size, from the 2.8-inch CYD to the 10.1-inch Guition: lights, music, the thermostat, the weather, locks, blinds and the vacuum, in light and dark mode

The Tessera logo: four rounded tiles in yellow, blue, purple and green, like a small mosaic

Tessera

Touch screens for Home Assistant. A screen for every room, one simple editor.

Website · Quick start · Supported screens · Community · My screen works

Add the Tessera repository to your Home Assistant

Tessera is not in the standard App store. This button adds its repository to your Home Assistant. After that, Tessera Screen Manager is in the store like any other app.

Tessera is the new name for ESP Screens. In Home Assistant the app is called Tessera Screen Manager and its panel Tessera (app 0.3.18); the repository, the add-on and your screens stay exactly as they are.

Looking for e-ink? Tessera is for colour LCD touch screens. For calm dashboards on e-ink panels, have a look at Tesserae (tesserae.ink), a separate open-source project for Home Assistant with a similar name.

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.

I lead Tessera's development and maintenance, with contributions from the community. Your support gives me more time to build, review and test improvements. A small monthly contribution or a one-time coffee is welcome.

Join our brand-new Discord and help build the Tessera community.

Join our brand-new Discord

Support monthly   or buy me a coffee once

The Guition 4-inch screen on a table: the Evening page with Movie night and Good night in pastel lilac and blue, and the ceiling light and the bedroom fan as tall tiles with their sliders The vacuum card on the Guition: docked at 100 %, Start cleaning and Dock, and the suction from Quiet to Max

A touch screen for every room that you lay out yourself, and manage from Home Assistant. Incredibly easy to set up and to use.

Why. Your phone is in the other room and a tablet on the wall is expensive. A small ESP32 touch panel costs a fraction of that, sits on a table or in a wall box, and is always at hand for the lights, the heating or the vacuum.

What. Firmware for affordable panels, five of them today, from the 2.8-inch CYD to the 10.1-inch Guition, with tiles over up to eight pages, or more on the boards with the memory for them, as many per page as the glass holds: lights, climate, humidifiers, blinds and curtains, the vacuum, media, the weather, history graphs, the energy of your house live, clocks and timers, your alarm with its keypad, and your cameras and a map of where everyone is on every screen with room for pictures. A tile can take the whole page, one big switch you push without looking, and a tile can go to another page. An automation can put an alert on every screen when someone rings the bell, and a screen with room for pictures shows who is there with the doorbell camera's picture. A tap can run any action Home Assistant has for a tile, and Dark mode suits a screen beside the bed.

How. Tessera Screen Manager is an app inside Home Assistant. It flashes a new screen over USB, updates it over Wi-Fi and sends it your tiles. Changing a screen is pick, drag and Save & send: no reflash, no YAML to write, no blueprint, MQTT or token. Brightness, night hours and Dark mode can also be changed on the screen or by an automation, and your own YAML for one screen survives every update.

Install it · The manual · Pages · Screen settings · Troubleshooting · What's new

The manual is on the Tessera website: from the quick start to every tile, every screen setting, every supported screen and troubleshooting, with search. Anyone with a GitHub account can improve a page with Edit this page. This README is the overview; the files under docs/ are the reference for contributors.

Requests, questions and bugs

GitHub Issues are for bugs only. Feature requests, improvements and new board requests posted on GitHub will not be reviewed. Submit and discuss them on the Tessera wishlist. Questions and general discussions are handled in Community, not GitHub Discussions.

  • Features and improvements: search the wishlist. Upvote an existing wish or add your own.
  • New ESP boards and displays: use the New boards category. Include the exact model, a product link and whether you can test it. Votes show how many people would use it and help set priorities. They do not guarantee support or a release date.
  • Questions and examples: post in Community, where the earlier GitHub conversations and replies have moved.
  • Bugs: use GitHub Issues for something that is broken in existing functionality. Include reproducible steps and version information.
  • Code changes: open a pull request and link the bug or website wish it implements.

Sign in on the website with GitHub to vote, post or reply. Search before posting so the conversation and votes stay together.

In real life

A Guition in the living room, 37 seconds in one take: tapping tiles, swiping through the pages, opening cards and a history graph, while the lamp behind it goes from purple to orange.

esp-screens-in-use.mp4

The Guition on a wooden sideboard beside a glowing purple lamp: the living room page with the airco, an analog clock with the date, two scenes and a dimmer at 36 percent The same screen showing a temperature history over 24 hours, with its highest and lowest point marked and the 1 hour, 24 hours and 1 week keys The light card of the purple lamp: the colour slider at 304 degrees, the brightness slider at 20 percent and the effects key at the top right

Real photos, not renders: the 4-inch Guition next to the lamp it controls.

Five screens supported, 2.8 to 10.1 inch

One home, five panels. A screen is built for the glass it runs on: it measures its own canvas at boot and gives a page the cells that board has, six tiles on the 2.8-inch CYD and twenty-five on the 10.1-inch Guition, while a tile stays about the same size in millimetres. The same tiles, the same cards, the same editor; the bigger the glass, the more of your home fits on one page. Each board starts on the grid that suits its glass, and the editor changes the columns and rows beside the pages, without a new build: the 10.1-inch Guition holds up to forty tiles on a page with eight rows.

The five supported screens side by side on one scale, each showing a page of the same home: the small 2.8-inch CYD, the square 4-inch Guition, the wide 4.3-inch Waveshare, the 7-inch Waveshare and the large 10.1-inch Guition

To scale, each with the page it fills: the same home on the 2.8-inch CYD, the 4-inch Guition, the 4.3-inch and 7-inch Waveshare, and the 10.1-inch Guition. Rendered from the firmware's own code, one board at a time.

The kitchen page on the 2.8-inch CYD: the weather with five days, a pasta timer, the coffee machine, the kitchen lamp and the power usage The Good morning page on the 4-inch Guition: an analog clock with the time and the date, the weather for four days, the coffee machine in orange and Sam at home The front door page on the 4.3-inch Waveshare: the front door camera live on a tile of two by two cells, the lock, the porch light, the weather and Sam

The living room page on the 7-inch Waveshare: the album cover on a tile of two by two cells, a clock with the date, the weather for five days, the heating and the curtains one cell wide and two high, a temperature graph and a lamp dimmer The living room page on the 10.1-inch Guition: twenty-five cells with a clock, the weather, Sam, the album cover and the front door camera on two by two tiles each, the heating two cells high, graphs for the temperature and the energy, a lamp dimmer, the coffee machine, the robot and a good-night script

Two of the same screens built standing up, to scale: the 10.1-inch Guition with the same living room page in five columns of tall cells, and the 7-inch Waveshare by the front door with a clock, the weather, the front door camera, the lock, the porch light, the heating, Sam and the alarm in two columns

The same home standing up. Every board that is not square hangs either way, chosen when the screen is set up and changed later in the editor without a new build, with a grid of its own: the 7-inch Waveshare 2 × 7 instead of 4 × 4, while the 10.1-inch Guition keeps its 5 × 5 in tall cells. Which board is which, and what to look for when you buy one: Which screen.

The living room on the 10.1-inch Guition with six rows, thirty cells: a clock, the weather for five days with the chance of rain, Sam, the album cover and the front door camera live on two by two tiles, the heating two cells high, graphs for the temperature and the energy, a lamp dimmer, the lock, the ceiling light, the robot, the curtains and two scenes The same living room with seven rows, thirty-five cells: the alarm, the porch light, a second thermostat for the hallway and the coffee machine join the page

The same living room with eight rows, forty cells: a kitchen speaker with its cover and volume, a small live porch camera, the kitchen lights and Alex fill the last row The page with eight rows in Dark mode

Six, seven and eight rows on the 10.1-inch Guition, from thirty to forty tiles on a page, and eight rows in Dark mode. Rendered from the firmware's own code. The editor changes the rows beside the pages, and the layout moves along by itself: what no longer fits on a page moves on to a new page after it. Thanks to Jeroen Peters for the rows.

Your house's energy, live

The 10.1-inch Guition in Dark mode with the energy card on three by three cells: the sun gives 5.2 kW, the house uses 2.5 kW, the battery at 64 % charges with 1.5 kW and 1.2 kW goes back to the grid, with lines and moving dots between their circles and the heat pump, the fridge, the washing machine and the office around the house; beside it the weather, the solar energy of today, the EV charger, the battery and graphs of the solar power and the living room temperature

The energy card on two by two cells of the 4-inch Guition: solar, grid, battery and the house with their power, above the solar energy of today and the EV charger The 4.3-inch Waveshare with the energy card two cells wide and three high, beside the solar energy of today, the EV charger and the battery The 2.8-inch CYD standing up with the energy card over its whole page, the diagram turned upright: the grid at the top, solar and the battery at the sides and the house at the bottom

A tap on the solar circle opens the history of the solar sensor: a day with its highest and lowest moment The 7-inch Waveshare in Dark mode with the energy card on three by three cells and four devices, and the weather, the solar energy of today, the EV charger, the battery, the kitchen light, the heat pump and the car's battery beside and under it

The energy card shows the power of your house right now, the way Home Assistant's own live Energy view and power-flow-card-plus show it: solar, the grid and the battery around the house, dots that run faster as more power flows, and the devices that draw the most. It reads the Energy settings you already have in Home Assistant, so there is nothing to set up, and a tap on a circle opens that sensor's history. It fits every screen, upright on one standing up (how). Rendered from the firmware's own LVGL code with a made-up house.

Meters for every sensor

The 10.1-inch Guition in Dark mode with a page of sensors as LCD bars: the living room at 21.4 degrees on a big amber bar, the office CO2 at 840 ppm, the bathroom humidity and the phone's battery standing up, the house's power in purple, the CPU, the disk and the memory, the wind, the outside temperature in light blue and the bedroom CO2 at 1,260 ppm, whose cells turn from green to orange to red where its thresholds are

The 10.1-inch Guition with a page of rings: the living room and the solar power two by two, each with its ring on the left and the last 24 hours as a line on the right, the office CO2, the bathroom and the phone's battery as big rings, and smaller rings for the CPU, the disk, the memory, the outside temperature, the wind, the pressure, the grid, the fridge and the freezer The same screen in Dark mode with a page of tapes in the style of Teenage Engineering: the name in small capitals, the value large, a still ruler of fine marks over the sensor's range with one pointer at the value, for the rooms, the outside, the humidity, the pressure, the solar power, the wind, the fridge, the noise, the daylight and the office CO2

The 4-inch Guition: the phone's battery as a ring, the humidity as a tape, the house's power as a bar of cells, and the living room as a ring with its day beside it The 4.3-inch Waveshare in Dark mode: the living room as a ring with its day, the phone's battery, the office CO2 as a big value over a bar of cells, the house's power as a tape, the CPU as a ring and the humidity as a tape The 2.8-inch CYD: the office CO2 as a bar, the living room as a tape, the outside temperature as a ring and the pressure as a tape over its range from 980 to 1040 hPa

Any sensor whose state is a number can show where its value stands: as a ring with the tile's icon inside, as a tape with a pointer on a ruler, or as a bar of LCD cells that fills the tile. Every look fills the tile it gets, from one cell to the whole page, and grows with it. The range comes from Home Assistant (0 to 100 for a percentage) or is the tile's own, and the colour is the sensor's own, one you choose, or two or three segments, green, orange and red by default, that change at thresholds in the sensor's own unit, such as 800 and 1200 ppm. Choose Meter under Display. New in the next release; already on the dev channel. Rendered from the firmware's own LVGL code with made-up sensors.

Taller tiles, richer cards

The 10.1-inch Guition in Dark mode: a clock with the date, the weather for five days, a media tile two cells wide and two high with the album cover dimmed behind the title and the play keys, the front door camera live beside it, the heating one cell wide and two high with minus, plus and its mode keys, graphs for the temperature and the energy, a table lamp dimmer, the coffee machine, the robot and a good-night script

The 4-inch Guition: a media tile two by two with the album cover behind the track, the artist and the previous, pause and next keys, above a table lamp with its dimmer The Comfort page: the heating one cell wide and two high with its setpoint between minus and plus and its mode keys, heat lit in orange, the curtains open at 70 % with a slider, and a temperature graph The Evening page: Movie night and Good night in pastel lilac and blue, and two tiles one cell wide and two high: the ceiling light at 59 % and the bedroom fan, each with a big slider

The 4.3-inch Waveshare: the media tile two by two with its album cover, the heating one cell wide and two high, a lamp dimmer and Sam at home The same screen in Dark mode: the bedroom thermostat two by two with its setpoint between minus and plus, the curtains one cell wide and two high, a temperature graph and the coffee machine

A tile can be 1 × 2 or 2 × 2 cells as well as one cell, double width or the whole page, and the card follows the room it gets: a player shows its album cover behind the track (every screen but the CYD), the heating shows its setpoint and the modes Home Assistant lists for it (the last key opens the card when they do not all fit), a blind shows its position, and its slats where there is room, and a lamp, a switch, a script or a scene two cells high is one big key. Every board works out the same card from its own glass. Each page has its own title and top bar, any page can be Home, and a page can stay out of the page dots and be opened from a tile, with a Back key to return. Rendered from the firmware's own LVGL code with a demo home.

Weather, heating, cameras, your alarm and your locks

The 4-inch Guition with two weather tiles: a wide one with today and the next three days, and a big one listing the days under each other, each with a coloured bar from its low to its high on one scale Three thermostats: the heating with its setpoint between minus and plus and a bar with Heat and Auto, an airco on cool with heat, cool and more behind three dots, and a wide bedroom tile with the stepper on one row A garden camera on a tile of two by two cells, its picture filling the whole card with the camera's name at the bottom, above the garden lights and the garden temperature

Four alarm panels as tiles: the house disarmed in grey, the garage armed away in green, the shed arming in orange and the studio armed home in green The alarm card: the shield in its circle, keys for Home, Away, Night and Vacation, and the Disarmed key The keypad to arm away: four dots for the code, the digits 1 to 0, a clear key and a check key

Six locks as tiles: the front door asking to confirm in orange, the back door unlocked in red, the gate locked in green, the garage jammed in red, the shed locking in orange and the cellar unavailable in grey The lock card: a big green lock to tap with Unlock under it, and an Open door key The lock card waiting for the second tap: the big lock orange and open, with Confirm under it

The 4.3-inch Waveshare: a wide weather tile with the coming days, the bedroom thermostat, a garden camera filling a tile of two by two cells, the washing machine on Cotton eco and the dryer The select card of a washing machine on the 4.3-inch Waveshare: its programmes in two columns, Cotton eco checked, and page dots for the rest

The weather with the coming days, and on a bigger tile the whole week with a bar from each day's low to its high. A thermostat has its − / + and a bar with a key per mode; an airco shows heat and cool first and the rest behind "…". A live camera on a taller tile fills the card with its picture and its name, or shows the whole picture. Your alarm is a tile in Home Assistant's colours, with a key for every mode and Home Assistant's keypad when the panel asks for a code; someone coming in wakes every screen with the keypad to disarm. A lock locks with one tap and asks for a second one before it unlocks; its card has Open door where the lock can open its latch, and Home Assistant's keypad when the lock asks for a code. A select, such as a washing machine's programme, opens a list with a check at the one it is on. On every screen with the memory for it, every page is built ahead and kept, so the next one is there the moment you turn to it. Rendered from the firmware's own LVGL code with a demo home.

Music, from the speaker to the library

The same player card on five screens side by side on one scale, from the 2.8-inch CYD to the 10.1-inch Guition: the album cover on a ground in its own colours, the speaker Kitchen at the top, the title, the bar through the track, the keys and the volume

The player card on the 4-inch Guition: the album cover on a ground in the cover's own colours, the speaker Kitchen at the top, the title and artist, a bar to drag through the track, shuffle, previous, pause, next and repeat, and the volume The speaker menu open over the card: Bedroom, Kitchen with a check mark, and Living room A page of favourites: an album and a playlist with their covers dimmed behind the name and a play key, the playlist that plays ringed in blue with a pause key, an artist and the player itself

The library of the player: Playlists, Artists, Albums, Liked songs, Podcasts, Recently played, Top artists and Top tracks A page of albums: six covers with their titles, page dots and arrows to turn to the next six The same favourites on the 2.8-inch CYD, drawn with icons: an album, two playlists, an artist and the player

The player card on the 4.3-inch Waveshare: the cover at the left on its coloured ground, the title, the bar and the keys beside it, the volume along the bottom A page of albums on the 4.3-inch Waveshare: five covers in a row with page arrows

Favourites on the 4.3-inch Waveshare: the wide favourite Sunday Morning starting on the Kitchen speaker, a spinner round its play key The speaker menu over the player card on the 4.3-inch Waveshare: Bedroom, Kitchen with a check mark, and Living room

A page of albums on the 10.1-inch Guition: eighteen covers in three rows of six

A media player's card sits on the colours of the cover that plays, and the speaker it plays on is at the top: tap it to move the music to another one. Shuffle, repeat and a bar you drag through the track sit under the title. The library key opens what Home Assistant can browse on that player, folder by folder down to a page of covers, and a tap on a cover plays it. A favourite is a tile that plays one playlist, album or artist on the speaker you choose, with its cover behind it, and a player at rest keeps its card, so you pick a speaker and start from there. Nothing here is made for one service: it is the player and its library as Home Assistant reports them, so Spotify works like any other player that can browse. The covers and the library need a screen with the memory for pictures (how); the CYD keeps the card, the speakers and the favourites, drawn with icons. Rendered from the firmware's own LVGL code with made-up records.

Where everyone is

The 4-inch Guition with a map tile of two by two cells: the streets and canals of a city in soft greys, a marker for each person with a photo or initials and their first name beside it, and the tile's name Family at the bottom, above a lamp and a temperature The same map tapped open over the whole screen in Dark mode: dark streets, the people in their own colours, the round back key and the name Family at the top The 4.3-inch Waveshare with the map tile following everyone: four people, two with a photo in their marker, and a car

A person tile can be a map of where they and the people with them are, and the map tile follows everyone Home Assistant knows the place of, or only whom you choose. Photos in the markers and the same colours as Home Assistant's own maps; a tap opens the map over the whole screen. Tessera draws it in the screen's own colours, light or dark, from Home Assistant's own map tiles, and draws it again only when someone moves; the screen gets a picture, never a location (how). Rendered from the firmware's own LVGL code with a made-up household; map data © OpenStreetMap contributors.

A clock beside your bed

The bedside clock on the 4-inch Guition in dark mode: 23:47 in large grey digits on a black page, and under it three round keys: the bedside lamp on in amber, the front door locked in green and the alarm armed for the night in green

The bedside clock takes a whole page: the time as large as the glass allows, with up to three round keys under it for what you reach for at night. A key is a tile in its round form and does what its tile does: the lamp switches with a tap, the front door asks for a second tap before it unlocks, and the alarm shows how it is armed. With Dark mode and the screen's night hours the page is black and the backlight dims. Rendered from the firmware's own LVGL code with a demo home.

On the screen

The Front door page on the Guition 4-inch screen: the front door camera live on a tile of two by two cells with its name, the front door locked and the porch light on The Energy page: today's energy as a graph, the power and the humidity as large values, and the robot vacuum with start, stop and dock The Weather page: the garden forecast on a big tile, each day with a bar from its low to its high, above the sun's path with sunrise and sunset

A full-page tile: one big amber light switch that fills the screen, so you push anywhere without looking Navigation tiles: Heating, Blinds and Weather each open their own page, next to a person and a lamp A full-page heating tile: the room temperature big in the middle, the mode keys at the bottom

Weather card: current weather, the coming hours and the coming days with chance of rain Climate card: the target temperature between big minus and plus keys, the mode keys, and fan and swing choices Light control: color, color temperature and brightness

Vacuum card: docked at 100 %, Start cleaning and Dock, and the suction from Quiet to Max Cover card for a venetian blind: its battery, the position slider with the blind hanging from the top, the tilt slider over slats, and open, stop and close A finger on the history graph: the top of the card shows the average of that hour and its time, the graph stays as it is

The effects page of a WLED lamp: the effect, colour palette, preset and playlist rows with what they are set to, and the speed and intensity sliders The effect picker: a drum with every effect Home Assistant lists, TV Simulator in the middle, and the check key at the top right that sends it The same effects page on the CYD: four rows and the two sliders in 320 by 240 pixels

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. A lamp with modes (a WLED) gets an effects page with a drum picker, named and filled from what Home Assistant lists for it. Rendered from the firmware's own LVGL code with a demo home.

Cameras as tiles on the Guition: the front door camera filling a tall tile with its name at the bottom, a porch camera showing its whole picture with black above and below, the porch light and Sam at home A camera tile tapped: the front door camera full screen, with the round back key and the camera's name at the top The same camera in an alert: its picture across the top of the card, with the card's rounded corners

Cameras are tiles too, not only part of an alert: any camera or snapshot in Home Assistant (a doorbell's last ring, for example) goes on a screen like any other tile. Tap it for the picture full screen, refreshed every four seconds, or let the tile itself show its live picture (Display → Live picture, every 5 to 30 s) over the whole tile, on every size up to a full page, filled or whole, with or without its name; an alert can carry the same picture. Every screen but the CYD, the Waveshare 3.5-inch and the Hosyond 4-inch, which have no memory for pictures (how it works).

CYD 2.8-inch screen: the weather forecast, a pasta timer, the coffee machine in orange, the kitchen lamp and the power usage as a large value Second CYD page: the Sonos volume, Sam at home, the Movie night scene in lilac and an energy graph The weather card on the CYD: current weather, the coming hours and the coming days

The CYD with heating mode keys, playback keys for the radio and a ceiling fan's speed slider The vacuum card on the CYD: docked at 100 %, clean and dock, and the suction from Quiet to Max The history card on the CYD: power over 24 hours with its highest and lowest moment, an axis in watts and clock times

The media card on the CYD on the colours of its cover: the player's icon where the cover would be, the title, artist and album, the bar with its times, the keys and the volume slider A media player over the whole CYD page: the icon at the left, the track and the keys beside it, the volume row along the bottom The media card on the CYD in dark mode

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 on the Guition: the living room page on a black page, the album cover and the lamp dimmer in their own colours Dark mode on the Good morning page: graphite cards and soft white text, the clock, the weather, the coffee machine in a deep orange and Sam Dark mode on the Evening page: the two scenes in deeper lilac and blue, and the tall ceiling light and fan sliders keep their colours

Dark mode, for a screen beside the bed: the same pages, darker. It is a switch on the screen, in Tessera and in Home Assistant, so an automation can turn it on at bedtime.

The settings page on the Guition, Screen: back to Home by itself and after how long, also on standby, swiping between pages and the page buttons, with the rotation on its second page The settings page on the Guition, Brightness: the brightness with minus and plus, Dark mode off, Auto standby on, standby after 10 minutes and the standby brightness The same Brightness page right after turning Dark mode on: a black page with graphite rows and soft white text

Settings on the screen itself: hold the top bar. The same brightness, Dark mode, standby, night hours, clock and rotation as in Tessera, and every one of them is an entity in Home Assistant.

Managed from Home Assistant

Tessera in Home Assistant: Your screens, seven screens from the 2.8-inch CYD to the 10.1-inch Guition, each with a preview of its first page drawn by its own firmware, one with an update waiting

Tessera in Home Assistant: the living room screen's pages side by side, each with its title and top bar, Living room, Good morning, Comfort and Evening, and the library under them grouped by room

Tessera, a page in Home Assistant: every screen at a glance, then the pages of the chosen one side by side with the values Home Assistant reports right now, and the library of your home under them.

Choosing tiles: the pages of the screen side by side, and the library searched for lamp with the four lamps of the home and their rooms Tile settings of the curtains in the drawer: on tap Perform action with Set cover position at 50 %, the position slider on the tile, the icon and the pastel background

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.

The top bar in the drawer: the page title on the left, and on the right the outdoor temperature, people at home and the time, with how each looks on the screen Settings in Tessera: New screen and Firmware & USB, the firmware updates, Language & region, the Alerts cheatsheet, and the Claude skill

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.

Tessera on a phone: Your screens, each with a preview of its first page drawn by its own firmware, one with an update waiting One screen on a phone: its page as the screen shows it, the page picker under it and one big Add tile button A tile tapped on a phone: a sheet with its icon and pastel background, More settings, Move and Remove Add tile on a phone: a sheet with search, the kinds as chips and the home's devices by room, each with a plus

On a phone, Tessera is the editor of everyday changes: your screens, a page as the screen shows it, a tap on a tile for its icon and colour, and Add tile. Everything else is in the screen's ··· menu, and Full editor there opens the whole editor.

The Screen settings tab in Tessera: Brightness with Dark mode and standby, Night with its hours and brightness, and Screen with back to Home, swiping, the page buttons and the rotation

Screen settings apply at once, and a change made on the screen or by an automation shows up here too.

Override YAML for the living room screen: a small file of its own, loaded after the shared package, here with the example that changes the display controller

Other hardware on your board? A CYD with the other display controller is a choice in New screen, and for anything else every screen has an Override YAML of its own, checked by ESPHome before a build and kept through every update.

In your language

A Guition in German: Wohnzimmer at the top with 16,8 °C, Dienstag, 15. September beside the analog clock, the days Di Mi Do, the Tischlampe at 75 % and Sam Zuhause The same screen in French: Salon, mardi 15 septembre beside the clock, Éclaircies with the days ma me je, the Lampe de table at 75 % and Sam Maison The same screen in Polish: Salon, wtorek, 15 września beside the clock, the days wt śr cz, the Lampa stołowa at 75% and Sam w domu

The same home in German, French and Polish, its rooms and tiles named in each. The screens follow your Home Assistant: its language, its words for a light or a robot, and how your country writes a date, a time and a number: 75 % in German and French, 75% in Polish and English.

The screens, the editor and its messages speak English (US and UK), Nederlands, Deutsch, Français, Italiano, Español, Português, Polski and Magyar. Nothing to set up: Tessera takes the language of your Home Assistant.

Language and region in Tessera: the screen language set to Home Assistant's language, the time format on 24 hour and the number format following the language

Settings → Language & region, when you want something else than Home Assistant's own.

  • The editor follows the language of your Home Assistant profile, so two people in one house each read their own.
  • A screen carries one language, built into its firmware: change it and press Update on the screen (or let the nightly round do it). The clock (24 hours or 12 with AM/PM) and the number format change straight away, on every screen at once.
  • Words from Home Assistant stay Home Assistant's: what a door, an airco or a robot says on a tile and in its card is the word its own dashboard shows, in your language.

Most languages still need someone who speaks them to read the texts through, and a new language is one file. Translating Tessera walks through both; a language without a file falls back to English while it keeps your country's clock and numbers.

Alerts

An alert on the Guition with the front door camera's picture across the top: someone is at the door, with a Coming button The front door camera full screen on the Guition, with the round back key and the camera's name at the top

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.

An alert on the Guition asking to open the garage, with a red Decline and a green Accept button side by side The Alerts cheatsheet in Tessera: a preview of the alert, a form to try one, and the action name of every screen, ready to copy

Any alert, on one screen or all of them, in a pastel color of your choice, with one button or two to choose from, each in a color of its own and with its own action. How alerts work. An automation can also put a page in front, such as the page with the full-page player when the music starts: Open a page from an automation.

Installing from Home Assistant

Which screen

Screen Resolution Display / touch
CYD ESP32-2432S028 320 × 240, 2 × 3 tiles ILI9341 / resistive XPT2046
CYD ESP32-2432S028 with ILI9342 (experimental) 320 × 240, 2 × 3 tiles ILI9342 / resistive XPT2046; hardware acceptance pending
Guition ESP32-S3-4848S040, 4 inch 480 × 480, 2 × 3 tiles ST7701S RGB / capacitive GT911
Waveshare ESP32-S3-Touch-LCD-4.3 800 × 480, 3 × 3 tiles ST7262 RGB / capacitive GT911 (backlight always on: no standby, no night)
Waveshare ESP32-S3-Touch-LCD-5 (new) 800 × 480, 3 × 3 tiles RGB / capacitive GT911, the 4.3-inch's board with 5-inch glass (backlight always on: no standby, no night; details)
Guition JC8048W550C_I, 5 inch (experimental) 800 × 480, 3 × 3 tiles ST7262 RGB / capacitive GT911; dimmable backlight, the capacitive variant only (details)
Waveshare ESP32-S3-Touch-LCD-7 (experimental) 800 × 480, 4 × 4 tiles RGB / capacitive GT911; backlight always on, hardware acceptance pending (details)
Waveshare ESP32-S3-Touch-LCD-7B (experimental) 1024 × 600, 4 × 4 tiles RGB / capacitive GT911; dimmable backlight, hardware acceptance pending (details)
Sunton ESP32-8048S070, 7 inch (experimental) 800 × 480, 4 × 4 tiles RGB / capacitive GT911; dimmable backlight, hardware acceptance pending (details)
Waveshare ESP32-S3-Touch-LCD-4B, 4 inch (experimental) 480 × 480, 2 × 3 tiles ST7701S RGB / capacitive GT911; dimmable backlight, hardware acceptance pending (details)
Waveshare ESP32-S3-Touch-LCD-3.5 (new) 480 × 320, 2 × 2 tiles ST7796 SPI / capacitive FT6336; dimmable backlight, no camera pictures (details)
Hosyond ESP32-32E, 4 inch (experimental) 480 × 320, 2 × 3 tiles ST7796 SPI / resistive XPT2046; dimmable backlight, no camera pictures, hardware acceptance pending (details)
Guition JC3248W535, 3.5 inch (new) 480 × 320, 2 × 2 tiles AXS15231B QSPI / capacitive AXS15231B; dimmable backlight, camera pictures
Guition JC8012P4A1, 10.1 inch 1280 × 800, 5 × 5 tiles MIPI-DSI JD9365 / capacitive GSL3680, ESP32-P4 (new) (details)
Guition JC8012P4A1 V2, 10.1 inch (experimental) 1280 × 800, 5 × 5 tiles MIPI-DSI JD9365 / capacitive GSL3680, early ESP32-P4 with the newer LCD; hardware acceptance pending (details)
Guition JC8012P4A1 V3, 10.1 inch (experimental) 1280 × 800, 5 × 5 tiles MIPI-DSI JD9365 / capacitive GSL3680, rev3 ESP32-P4; hardware acceptance pending (details)
Waveshare ESP32-P4-86-Panel-ETH-2RO, 4 inch (experimental) 720 × 720, 2 × 3 tiles MIPI-DSI ST7703 / capacitive GT911, ESP32-P4; dimmable backlight, Wi-Fi only (details)
Guition JC1060P470 and JC1060P470 V2, 7 inch (experimental) 1024 × 600, 4 × 4 tiles MIPI-DSI JD9165 / capacitive GT911, ESP32-P4; hardware acceptance pending (details)
Guition JC4880P443, 4.3 inch (experimental) 800 × 480, 3 × 3 tiles MIPI-DSI ST7701 / capacitive GT911, pre-v3 ESP32-P4; dimmable backlight (details)
Elecrow CrowPanel Advanced 10.1 inch, ESP32-P4 (experimental) 1024 × 600, 5 × 5 tiles MIPI-DSI EK79007 / capacitive GT911, pre-v3 ESP32-P4, V1.1 or V1.2; dimmable backlight, speaker and microphone (details)
M5Stack Tab5 (ST7121 variant, new) 1280 × 720, 3 × 3 tiles MIPI-DSI ST7121 / capacitive ST7121, ESP32-P4; hardware tested (details)

Each screen links to its page on the Tessera website, with what owners report about it.

Got your screen working? Tell the next person. Whether a board is worth buying is something only owners can tell. On the website, My screen works records your exact board, its firmware version and whether the display, touch and connection work, one report per account and board. It takes a minute (you sign in with GitHub), and it is how an experimental board becomes one people can buy with confidence. Something not right? Report a problem there, or open an issue here.

Use these exact board variants: similar-looking product names can have different controllers or connectors. Wallbox relays are not controlled by default; a 4-inch Guition with relays can switch them through its Override YAML (docs/GUITION.md).

The one we use ourselves is the 4-inch Guition, and it has been good to us: bright, responsive touch, and it has been on the wall for months without a hiccup. We buy it here: Guition ESP32-S3-4848S040 on AliExpress. AliExpress being AliExpress, that link may go dead at some point. If it does, search for "ESP32-S3-4848S040" and check the listing says 480 x 480, ST7701S and a capacitive GT911 touch panel before you order.

Tessera builds with its own ESPHome 2026.9.0. The firmware also builds in your own ESPHome Device Builder with ESPHome 2026.6.2 or newer; the 10.1-inch Guition asks for 2026.8.0 or newer, because its touch panel is newer than that.

The 10.1-inch Guition is new in this release and has not yet been through our own acceptance test: its hardware was worked out and flashed on a real panel, and the screens' own software is the same on every board, but the two have not stood on one desk together. Tell us how it goes. It needs a panel with pre-v3 silicon (the boot log says chip revision: v1.3 or another below v3.0), which is what these panels have shipped with so far; rev3 silicon needs a firmware of its own.

Do I need ESPHome?

You don't need to install the separate ESPHome Device Builder app. Tessera Screen Manager already includes the ESPHome CLI and can build firmware itself, install it via USB, put it on a screen plugged into your own computer from the browser, or give you the file, and later update it wirelessly over OTA.

Nothing to set up in Home Assistant. As soon as a flashed screen is on your Wi-Fi, Tessera adds it to Home Assistant's ESPHome integration with the screen's own key and allows it to perform Home Assistant actions, which a tile needs to control anything.

Component Needed? What for?
Tessera 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 Tessera
ESPHome integration in HA Yes, Tessera adds every screen to it by itself 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 Install with Docker.

For Home Assistant OS with Apps/Add-ons on aarch64 or amd64:

  1. Tessera is not in the standard App store, so add its repository first. One click does it:

    Add the Tessera repository to your Home Assistant

    Or add it by hand: open the App store, choose Repositories in the menu in the top right, and add https://github.com/MaxGramser/homeassistant_espscreen.

  2. Install Tessera Screen Manager from the store, start the app, and open Tessera in the sidebar. 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 click + beside Screens in the sidebar. New screen takes three steps: Screen (pick your board), Set up (name it and choose which way it hangs) and Install (choose USB on Home Assistant and click Install). If Wi-Fi is missing from the ESPHome secrets.yaml, Set up asks for it once and Tessera 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? Plug the screen into your own computer and choose From this computer in the Install step: Tessera builds the firmware and the page puts it on the screen, in Chrome or Edge with Home Assistant opened over https. Or choose Download the file and put it on the screen with ESPHome Web. After that, updates go over Wi-Fi as usual.

  4. CYD: go through the calibration on the screen. Guition: uses GT911 without resistive calibration. The screen joins your Wi-Fi and shows up in Tessera by itself.

  5. Select the screen in Tessera, choose your tiles, and click Save & send. Then test the physical controls.

New screen in Tessera: the first of three steps, every supported board with its size, resolution and touch chip, the 4-inch Guition chosen Choosing tiles: the pages of the screen side by side, and the library searched for lamp

New screen, its first step (step 3 above), and choosing your tiles (step 5).

New firmware goes on over Wi-Fi with the Update button of a screen in Tessera, or by itself every night if you turn that on under Settings; Firmware & USB → Wi-Fi / OTA in the sidebar installs it by hand. For an existing screen, always use the existing profile; creating a new installation profile generates new keys.

The manual on the website walks through every step in more detail.

More

Credits and license

ESP Screens was inspired by Adrian Kuehlewind's ESPHome-touch-display-mount, and its very first version started from his code. The project has gone its own way since, but his repository is still the place to go to give a CYD a proper home. It has beautiful 3D-printable desk, under-desk, wall and flush mounts.

Not to be confused with Tesserae (tesserae.ink), a separate open-source project that makes calm dashboards for e-ink panels in Home Assistant. Same word, different screens: Tessera is for colour LCD touch screens, Tesserae for e-ink. A question meant for the other project is gladly passed on.

The front door in the camera pictures is a photo by Virginia Marinova on Unsplash.

Tessera (formerly ESP Screens) is licensed under the GNU Affero General Public License v3.0, see LICENSE and NOTICE. Releases up to and including 0.4.38 were MIT licensed and stay so.

Projets similaires

A visual drag-and-drop editor for ESPHome displays (E-Ink, OLED, LCD, Touch), running as a Home Assistant integration or a standalone web app.

JavaScriptcustom-componentdashboardeditor
Kkoosoli
1,1 k étoiles76

Touch dashboards for Home Assistant on ESP32-P4 and ESP32-S3 displays. Lights, climate, sensors, energy, weather and more, set up in your browser.

Cdashboardesp32esp32-p4
GGalusPeres
169 étoiles28

ESP32 Cheap Yellow Display (ESP32-2432S028) Home Assistant Touch Panel – LVGL UI + 3D Printed Desk / Under Desk / Wall / Flush Mounts

3d-printingcheap-yellow-displayesp32
Aakuehlewind
387 étoiles45