
Web E-Paper Dashboard
Creator and engineer / 2026
- Rust
- ESP32-S3
- ESP-IDF
- C/C++
- Playwright
Web E-Paper Dashboard puts an HTML dashboard on a 7.5-inch e-paper panel. The ESP32 does not render the page. A Mac/remote service opens it in Chromium, takes an 800×480 screenshot, converts it to four shades of gray, and sends the PNG over USB.
This split keeps dashboard work simple. I can use normal HTML, CSS, and JavaScript instead of building each screen in firmware. The device has a smaller job: receive the file, check it, save it, and pass it to the display driver.
The full path
The edisplay service waits for a dashboard readiness flag before it takes the screenshot. It then normalizes and dithers the image and sends it through a custom serial protocol. Rust firmware on the ESP32-S3 handles the transfer and storage. A small C/C++ bridge calls the panel driver.
E-paper keeps its last image when it loses power, so failed updates need careful handling. A new file replaces the current one only after it passes validation. The saved display hash changes only after the panel reports success. If the image has not changed, the device skips the refresh.
I put the hardware work behind testable interfaces. Most of the renderer, protocol, storage, and state logic can run on my Mac, which shortens the edit-test cycle and leaves hardware tests for the parts that need hardware.
Future intentions
I built the code with the idea that the display could eventually reach out to a remote server and fetch updates on a interval when the Mac was not connected. This hasn’t been tested yet, but the architecture should support it. The device is definetely capable of doing this, since it comes out of the box with TRMNL support.