my e-ink dashboard

Background

I’m a huge HomeAssistant fan. It’s an open source home automation platform similar to SmartThings that allows fully automating things like lights, sensors, and other smart devices around the house. The nice thing is that it’s fully private - runs on a computer in my house, so I have full control of the data. It also means I have a lot of data that I can display in interesting ways. The question is where and how to display it.

This little project builds a small, power-efficient display solution that can run on battery power for a few days at least. I’m still testing out the full battery life, but it’s been pretty good.

To achieve the power efficiency, I wanted to try two things:

  • an e-ink display, which only needs power to refresh the screen
  • a microcontroller like an ESP8266 or an ESP32, which has wifi and a decent amount of RAM but a very, very power efficient deep sleep mode.

On Reddit, I stumbled across a great looking build that used an off-the-shelf solution that brings both in one package, the LilyGo T5. This looked perfect, so I set about recreating that person’s dashboard with my own data ideas. I started with his code, then simplified and evolved it into something a little different. The result is in the photo above.

Ingredients

Build Notes

  • The data displayed here is not the final use case. I have some ideas for the kids that I’m still working on. I don’t care this much about the temperature in my house. 😀
  • I modified the sleep code from the original to try and get an exact sleep window. The original is simpler, but prone to weird bugs if you get the math wrong on the night_sleep_time
  • This display supports partial refresh, which is nice. Still some blinking/flickering that’s part of the update process, but it’s very localized. If you’ve used a Kindle, think about how that updates - this is like that. ESPHome doesn’t support it well, so take a close look at my display section to see how I set that up.
  • ESPHome’s embedded C++ thing (look at the lambdas or the display logic) is weird, but ok once you get the hang of it. Helps if you’ve ever coded C or C++, though it’s not necessary.
  • I chose the 18650 battery version, since I had a few lying around. Make sure you pick the right one and get a battery. It can be powered by USB-C without a battery, too.

Other Resources

Have fun, and share your builds! Ping me @usefulclever on Twitter or Instagram if you have questions.