I recently built a 10-inch e-paper dashboard for my 3D printer using Seeed Studio's new reTerminal E1003, and I was surprised at how much I loved it for what it was. It sat next to the printer, told me what I needed to know at a glance, and was an otherwise easy-to-ignore piece of tech. I liked it enough that I started thinking about where else an always-on panel like that might earn its keep, and the answer was obvious: a smart home. So, I rebuilt the dashboard from scratch, pointed at Home Assistant instead.
The end result is a display with lights, a media player, room temperatures, power monitoring, a wake-on-LAN button for my PC, and yes, the Bambu printer is still on there, because I couldn't bring myself to take it off. It has the same quirks with my ESPHome implementation, and the refresh rate isn't going to win any awards, but it works. Plus, a wall-mounted tablet glows, dims, sleeps, wakes up, and the brightness can be annoying. This, though, does the exact opposite. It looks like actual paper, draws no power while it's idle, and there's no glow or distracting light coming from it. The information is there, but it's there in the way that a clock on the wall is there, not in a way that's distracting.
Most smart home hardware looks like smart home hardware. We're talking plastic bezels, status LEDs, glossy screens; the typical visual language of consumer electronics. The reTerminal E1003 I'm using here sits in an aluminum frame, with its matte e-paper panel looks more like a photo frame or a print than actual tech. Seeed quotes up to six months of battery life for these panels at low update intervals, and with its internal battery, it likely can keep going for a number of months if you just update the display every couple of hours. Because this screen also supports touch, you could use the touchscreen as a deep sleep wake-up pin, too.
reTerminal E1003
- Brand
- Seeed Studio
- Storage
- 32 MB
- CPU
- ESP32-S3
- Memory
- 8 MB PSRAM
The reTerminal E1003 is a 10.3-inch ePaper display with 16 levels of grayscale, an ESP32-S3, temperature and humidity sensors, a buzzer, a microphone, and an optional aluminum frame. It's powerful, genuinely useful, and looks fantastic.
One panel, most of the controls I actually use
Lights, music, sensors, and a 3D printer
The dashboard is laid out in five rows on the reTerminal's E1003 1872x1404 panel, and that's a lot of pixels to work with. The top of the screen is a header with a water leak indicator that I hope I never see go off. Below that is the media player row, with a placeholder where the album art should go, the track and artist printed alongside, and three buttons for previous, play/pause, and next. Underneath that is a row of three light buttons for the bedroom, the office, and the bedside lamp, each of which inverts when the light is on so I can see the state at a glance.
The middle of the screen is given over to sensors. Room temperature and humidity for the living room and the bedroom on the left, then power draw for my PC, networking gear, and Proxmox server on the right, with the total wattage at the bottom. The bottom row is the printer status block I carried over from the original build, complete with progress bar, status text, time remaining, and nozzle and bed temperatures. To the right of that is a wake-on-LAN button so I can boot my desktop without walking over to it, connected to my OPNsense.
Touch is handled by the GT911 controller, and when you tap a transport button, it fires the corresponding Home Assistant action followed by a debounced redraw a second later. The reason for the delay is that Home Assistant takes anywhere from 100 to 500 milliseconds to push the new state back to the panel, and the full refresh is incredibly slow with this driver. Redrawing inline would either paint the old state for a fraction of a second or stall the next tap behind a refresh that hadn't finished yet, whereas the debounce lets the state settle, batches up any other sensor updates that happened in the same window, and only then triggers one refresh that shows everything correctly. It refreshes on a schedule, but it also refreshes only when you tap a button.
The trade-offs are there, but I'm fine with them
Refresh rate, color, and the cost of admission
A full refresh on the IT8951 controller in the E1003 takes about 15 seconds right now with the custom component that I'm using; once it actually starts to refresh, that part is quick, but you're waiting quite a while for it to be picked up in the first place. That's not a fault of the panel mind you, but rather the driver, and it's a lot faster on Seeed's own firmware.
Color is the other obvious limitation. The E1003 is monochrome, and while there are color e-paper options now, they're quite slow, some are muted, and they're expensive. I quite like that this display is monochrome, though, as you can use contrast and typography to handle most of what color can, and it simplifies the UI design, too.
On that cost point, that is one of the true limitations here. A 10-inch e-paper panel with a controller and a frame is more expensive per inch than an LCD, and it's not really close, either. The reTerminal E1003 will set you back by about $160 for just the display, and the aluminum frame will set you back another $20. You're paying extra for the hardware, battery life, and the look, so if you're okay with that, then a setup like this makes sense for you.
You can build one too
It doesn't have to be the reTerminal E1003
The whole config is one ESPHome YAML file, plus the same community component for the it8951_reterminal_e1003 driver I used in the original printer build. The Home Assistant side is nothing exotic, just the Bambu Lab integration for the printer, the official Spotify integration for the media player, a Zooz Z-Wave device, and Tuya plugs readable by ESPHome for the sensors. Unfortunately, the one thing I haven't been able to get working is the album art.
The plan was to pull the cover for whatever's playing on Spotify via Home Assistant's media_player_proxy endpoint, decode it into a one-bit image buffer in PSRAM, and draw it next to the track info. ESPHome's online_image component is supposed to handle exactly that, and it should have enough free RAM to hold the image. However, the image was too large for ESPHome's online_image component, which defaults to a maximum buffer length of 64kb. The fix is almost certainly to do the resize on the Home Assistant side and serve the panel a tiny pre-decoded image it can swallow whole, but that's a job for future me. For now, the media row reads the track and artist just fine, and there's a placeholder where the cover should be.
I've published the YAML on GitHub if you want to check it out for yourself. It's designed for, and assumes the layout of, the reTerminal E1003 specifically, but the pattern would translate to any ePaper panel ESPHome supports. That includes the smaller E1001 if you wanted to use it on a smaller device, but you'd need to strip out the touch component. Regardless, the whole point of automating your house is that you shouldn't be staring at it, and this is the kind of tech that enables me to do exactly that.
