ESP32-UI
A wall panel whose screen layout is data, not firmware. Change what the house exposes over MQTT and the interface rebuilds itself: no cable, no reflash.
Why the UI is data
The usual way to build an embedded control panel is to lay the screen out in code and flash it. That works until the house changes: a new device, a room renamed, a control that should have been on the first page. Each of those becomes a firmware release and a walk to the wall with a cable.
ESP32-UI treats the interface as something the board receives. Screen definitions arrive over MQTT and the panel rebuilds its LVGL widget tree at runtime, so what the panel shows is a property of the house, not of the binary running on it.
Working within the hardware
The board is a Waveshare ESP32-S3-Touch, a capacitive touch panel with enough headroom for LVGL and not much more, so rebuilding a widget tree on the fly means watching fragmentation carefully on a device with no virtual memory. It resolves where it is by IP geolocation, with geocoding as a fallback, so it's useful the moment it joins a network rather than after a setup step, and the display responds to real-time conditions instead of showing one fixed theme.
How it connects to the rest
The panel is also one of the bridges into Project Alfred, which is where the "interface as data" idea earns its keep: the assistant can change what the wall shows without anything being rebuilt.
- Role
- Sole developer
- Status
- In active development
- Hardware
- Waveshare ESP32-S3-Touch
- Stack
- C++, LVGL, MQTT