Use ESPHome with e-ink Displays to blend in with your home decor!

I got this working! It shows:

  • current temperature and weather icon
  • row of temperatures and weather icons for: now, now+3h, now+6h, now+9h
    • This is useful because I want to know how hot it will be this evening, for example
    • Uses PirateWeather
  • two bus stops near my house and their departure/arrival times
    • Uses the Portland-area transit Trimet Web Services API for arrival/departure times instead of GTFS
      • I had to do this because TriMet supports GTFS but not realtime GTFS
  • Art of some weather-related characters I like from Deltarune :slight_smile:

I ended up putting it in a freestanding picture frame and just plugging it in, with the ESP device coming out the back and sitting right behind it:

Crucially, the device is plugged into a smart plug that I have configured to turn off between 11pm and 6am, which means the device is off 7 hours a day. I did this because I don’t have a motion sensor at home and the original code had some clever stuff that only refreshed the display when motion was detected (since the device is only good for a high-but-fixed number of refreshes). So I wrote an override setting the “motion detector” to just be a state variable that is always on. The manufacturer also recommends keeping the device unpowered from time to time, so having it plugged in to a smart plug that is off 7 hours a day kills two birds with one stone.

My code is all here:

I included inline comments all throughout, I hope it helps someone!

1 Like