Hello! I have serious doubts about the release of a PRO version for the ESP32-S3, but a demo for the ESP32-P4 will most likely appear in April, if I manage to finish it. Why is there a problem with the ESP32-S3? First of all, the issue is FLASH and PSRAM memory! Their capacities are too small for a full-fledged firmware capable of managing a bunch of entities dynamically. I could make a dynamic API for Home Assistant for the ESP32-S3, and maybe it would even work, but for 20β30 entities at mostβ¦ and thatβs not guaranteed. I wonβt go into technical details for long; Iβve already explained all this multiple times in the Telegram group.
When I have time, I will make a version for the new LVGL 9.5, but more as separate widgets essentially demonstrating capabilities, and the user will construct what they need themselves! But if you want a full-fledged smart home panel, you will need a device based on the ESP32-P4, for example this one (Forum). Now there, you can implement a lot of things, and thatβs actually what Iβm working on right now. Here are screenshots of test UI versions for the device I linked above:
These are not the final screenshots (especially for the webserver), and there is still a lot of work to be done to bring everything into a cohesive look, but the logic is almost fully written and is currently being tested. As for the demo, it will most likely be available for testing at the end of April β you will be able to flash it with a single click via the website, and then configure through a convenient web server whatever you need from all your Home Assistant entities. As you can see from my screenshots, I subscribed to 500+ entities without any issuesβ¦ meaning I can use any of them for which widgets have been implemented.
P.S. The screenshots were taken directly from the device, not via SDL. Unfortunately, they get darkened and the quality is reduced; in reality, everything looks much nicer. The web server screenshots were obviously taken from a computer browser screen, but this is not a separate application β itβs code running on the ESP32-P4 device that automatically launches your browser when you navigate to the deviceβs IP address (for those who donβt know what a device web server is).
Also can use a different kind of plastic or more heat when printing. or just make the clips thicker.
ABS or PET works well for this.
Magnets work too. You screw a frame to the box and attach powerful magnets, and then another frame to the device and magnets there too. Depending on the magnet, it can stick like glue and even be hard to remove.
As an example, look how Philips Hue mounts their removable control dimmer to a wall plate.
I think magnets are the best solution, better than clips, but youβd need to design plates that self-align and have places to glue the magnets.
First offβ¦I truly appreciate what @alaltitov has been able to accomplish with the ESP32-S3. I thank him for the inspiration! Over the last 8mos I have been adding more and more to the original base code he created to adapt to my needs. Since his next version eliminates the S3 device due to lack of RAM I wanted to at least share what I have done. Hope this helps others.
BTW I have no idea how to capture a good screenshot of my running image. Any guidance on that would be greatly appreciated. Sorry about the horrible photos.
Hello! Have you tried explicitly enabling the memory configuration options for the ESP32-S3? I ran a few tests, and it seems that in many cases malloc /new defaults to using internal memory instead of SPIRAM.
Following settings make it work much stable:
platformio_options:
board_build.flash_mode: dio
board_build.arduino.memory_type: qio_opi
build_flags:- -DBOARD_HAS_PSRAM -DCONFIG_SPIRAM_USE_MALLOC -D CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=4
Significant updates to the project. There are no limitations of what can be used either. Every widget and feature works without sacrifice of functionality. Still a work in progress but a good baseline to start with.
A complete, production-ready smart home dashboard for the Guition ESP32-S3-4848S040 480Γ480 touch display. Built on top of ESPHome and LVGL, this firmware turns the panel into a rich control centre for Home Assistant β with real-time weather, calendar, HVAC, lights with colour temperature, fans, covers/blinds, media player, vacuum, alarm, scene shortcuts, presence indicators, screensaver, and notification banners.
The first flag is useless because itβs already enabled via the βpsram:β option! It just signals β βhey, I have PSRAM, use itβ (esphome/esphome/components/psram/__init__.py at 2449aa75af91ba01b3b812d5fde43d73eb918d5a Β· esphome/esphome Β· GitHub).
The second flag enables a mechanism that allows the standard malloc() function to allocate memory not only from internal RAM but also from external PSRAM. However, this is not safe and can break everything because a buffer might be allocated in the wrong memory region and cause a failure.
The third flag is more interesting, and maybe these settings are even the defaults β I canβt say for sure right now. But what does it mean? It specifies that anything above a certain size should be placed in PSRAM. Is this good or bad? I donβt know. On one hand, it can free up internal memory from heavy tasks. On the other hand, those tasks might need fast memory. It all depends on which components are used in the project and what their requirements are.
Youβve mixed everything upβ¦ your settings arenβt better, theyβre just different and about different options. There are about 3000 settings in total, just so you know. Your settings can be either useful or not, and can even cause errors β it all depends on the specific projectβ¦ For example, in your first option, you allocate a 64 KB cache in internal memory instead of 32 KB β this will help with LVGL, but if you have a large project, you simply wonβt have enough internal memory and your project wonβt workβ¦ As for the second and third options, they are useful when the project is large and you can offload part of the executable code from flash to PSRAM, but the flip side is that you fill up PSRAM, which may cause it to overflow. The conclusion to all this is that each option must be approached cautiously and you need to understand exactly what it does, because it can either improve or worsen operation depending on the specific project.
I just pushed a big update to the esphome-modular-lvgl-buttons library. Now all button types work as both local or HA objects. I also updated everything to support ESPHome 2026.4.0. This includes LVGL 9.5 and also now handles screen rotation in LVGL instead of hardware. This also supports rotation using the built in PPA (if you have a ESP32 P4). This rotates the graphics AND the touch screen at the same time.
You can now call your hardware file like this and specify the rotation.
Iβve been playing with your library this weekend and it was a nice way to spin up a quick solar info panel. Thank you. I think your refactoring and migration to LVGL 9.5 may have broken some things like icon colors, and (as is hard to avoid) your examples donβt reflect new folder structures and other updates.