HomeTiles: Open-Source ESP32-P4 Touch Dashboards for Home Assistant

Hi everyone,

I’ve been working on HomeTiles, an open-source firmware that turns ESP32-P4 touch displays into dedicated tile-based dashboards for Home Assistant.

Everything is configured in the browser while the display is running. Changes appear on the device immediately and are saved automatically, no restarts and no config files.

The project is still under active development and testing. I’m sharing it now because I would like to get feedback from people outside my own Home Assistant setup.

Demo video · Documentation · GitHub

The interface uses a configurable tile grid inspired by the Stream Deck layout. Tiles can be resized and customized with colors, icons and labels, and organized into folders for different rooms or functions.

The available tile types include sensors with history graphs, lights, scenes, switches, weather forecasts, media players with cover artwork and playback controls, and statistics from the Home Assistant Energy Dashboard.

Many tiles also open a detail popup instead of only displaying a value on the grid. Energy tiles provide 24-hour and 7-day charts, while light tiles offer brightness, RGB color and color-temperature controls.

The dashboard is configured through a web admin panel hosted directly by the display. You click a position, choose and configure a tile type, and then move or resize tiles using drag and drop.

Changes are saved automatically, and complete layouts can be exported and imported as JSON. Creating or changing the dashboard does not require editing configuration files or rebuilding the firmware.

HomeTiles communicates with Home Assistant over MQTT through the companion HomeTiles Bridge custom integration. The bridge provides entity states, icons, sensor history, weather forecasts and energy data to the displays, and sends commands from the displays back to Home Assistant.

New displays can be discovered and paired directly from Home Assistant. After confirmation, the bridge can automatically provide the display with the existing MQTT broker credentials.

Wi-Fi is configured on the display itself, and firmware updates can be installed over the air from GitHub releases. The device interface and web admin are currently available in English and German, with additional languages planned.

Prebuilt firmware binaries are currently available for:

  • M5Stack Tab5 (5 inch, 1280×720)
  • Waveshare ESP32-P4 Touch-LCD-4B (4 inch, 720×720)
  • Waveshare ESP32-P4 Touch-LCD-8 (8 inch, 1280×800)

I would especially appreciate feedback about the initial setup, documentation, usability and stability. If you own one of the supported displays and would like to test HomeTiles, I would be very interested to hear how it works with your setup.

HomeTiles and the bridge integration are open source.

I was about to try this out but I don’t see any mention of climate entity support anywhere. In my opinion thats what I want to control the most from a smart display since it can get complicated.

Nice work! That certainly looks and sounds very good, I’ve been looking for something similar to this as a control panel for daily use, music etc.

I hope you’re able to keep maintaining this and I look forward to trying it out soon if I get the chance (and the hardware).

Agreed. I too would like to see a climate card.

I’m just getting involved with HA having used Homeseer for many years. Your panel designs are just what I’m looking for (once I’m proficent using HA and completely moving 300 events and 600 entities from HS). Thanks for all your work.

Hi, you were right, climate support was still missing when I created this post.

I spent the last few days working on it and it is now available in v0.6.0.

Climate support took quite a bit of work because there are many different types of climate devices, each with different features and controls. The climate tiles can therefore be freely configured. You can choose which values and controls are shown and arrange them in different tile sizes.


The popup design is inspired by Home Assistant. It adapts to the selected entity and only shows the controls it actually supports, such as target temperature, heating and cooling ranges, humidity, HVAC modes, presets, fan modes and swing controls.

For example, this is the popup for a heating-only device:

And this is the popup for a device with combined heating and cooling:

I also added a configurable screensaver with an SD card slideshow, clock and regular HomeTiles tiles.

Please update both the firmware and the HomeTiles Bridge if you want to try it. Feedback is welcome!

Download the latest firmware
Download the latest bridge

Thanks for the quick work! I’ve got it downloaded and testing it right now. One other small issue is the HACS integration doesn’t appear to have multiple language support. Just a minor issue if you can get around to it. Thanks!

I have managed to find time to test it out and and I am liking it so far, with its simplicity in both use and look, but enough to let me control my lights and climate in a satisfying way from my desk. I’m using the Waveshare P4-86 on my desk btw.

One thing I observe is that it doesn’t consistently change to screen saver or go to sleep after idling based on the timeout settings i use. Its probably not detecting idle properly. I hope this is not a hardware problem.

The other thing I would like to see is maybe a separate brightness setting for screensaver mode, which would be great for those wanting a less distracting, dimmer screensaver when watching movies in the dark or as a bedside clock.

Also would be cool, if you add entities like: date.;time.;number.
Currently, they available only as sensor.

Thank you for your valuable feedback. There was indeed an issue with idle detection. With the v0.6.4 update, I fixed it and added separate screensaver brightness. Please let me know if the timeout issue still occurs.

Thank you for the suggestion. I will definitely add it to the list. I still have several ideas planned for future updates.

Thanks for this amazing piece of software!!
Is there any chance that support for Home Assistant cover entities (roller shutters, blinds, etc.) will be added in the near future?

HomeTiles has been a game changer for me. This is exactly what I’ve been looking for on a compact panel I can scatter around the house. I’ve been managing a fork on GitHub that has some tweaks that are useful for me personally but I’m not sure if the author wants to accept any outside PR’s. I think I’m going to order more panels now that I’ve been able to achieve so much. Thank you @GalusPeres!

Hi Peter, hi Doctor Pants,

thank you both for your kind words and support. Cover entities are now supported in v0.6.5, including position, tilt position and controls. HomeTiles Bridge v0.6.35 is required.

Doctor Pants, I have also seen your fork and really appreciate your work, your offer to help and your generous support.

Right now, my priority is to create a healthy foundation for HomeTiles by improving performance, memory usage, stability and overall code quality across all supported devices. With every change, I need to ensure that it does not introduce new bottlenecks, particularly in memory usage, rendering, storage or networking.

Once that foundation is in place, I can think more carefully about broader collaboration and larger changes. Small, focused pull requests are already welcome, and I would also be happy to look at individual ideas or solutions from your fork.

Thank you both again!

I am enjoying the simplistic experience so far, however my family had ask if one day we will get notification support, at least visually. I wonder if we can go a step further and get TTS notification support since the Waveshare P4 86 which I use already have speakers built in and we already pay for them so I hope we can maximize the use of what we pay for. I know it also has mics and there are ESPhome projects that make use of those to get Voice Assist working but I don’t really need that, it feels like it will make the device too complicated, so I hope we can see TTS notification in the near term.

On another note, I am having mixed experience specifically with the temperature adjustment in the Climate tile. I would like to see a longer or a configurable debounce because for example when I adjust the temperature from 20C to 25C, i dont tap the + button fast enough and I hear 5 confirmation beeps from my AC, which I find slightly iritating, meaning all 5 temperature settings were sent to the AC in a row. I would prefer if the command was only sent once after the user stops interacting with the display and I only hear one beep.