Making your own e-paper dashboard for home from scratch (2021)
lengrand.fr
lengrand.fr
Thanks to jlengrand https://news.ycombinator.com/user?id=jlengrand for sharing this!
This link was posted as an alternative to someone's paid project https://news.ycombinator.com/item?id=30002491
I love it, really want to make something similar, just need the time/focus!
They also have a 9.7” version: https://www.crowdsupply.com/soldered/inkplate-10
It occurs to me that an interesting low-power extension could be to have the device turn itself off after refreshing the display and then plug it in via a timer switch.
If the dashboard only needed hourly or daily updates and the previously rendered dashboard stays visible, there's no need to leave the Raspberry Pi running all the time.
The downside is that powering down loses the display buffer needed to correctly do partial updates, do you have to refresh the display every time - which is actually very distracting if it's sitting on your desk.
The ESP32 has the builtin capability to deep sleep and only draw a few uA of current. In addition, WaveShare offers existing micropython libraries, so it's easy to just flash an ESP32 board with micropython, get your data from an API, format it and go to sleep after displaying it. There are lots of boards with onboard LiIon management, this this setup is very easy to do.
I'm building an expedition vehicle on the back of a Mercedes Actros 6x6 semi-truck. I'm using M5Stack ESP32 devices (flashed with esphome) to read all the sensors and control everything. I'm using a MQTT server as the messaging hub: the UI will read/write from that, and the ESP32 devices will subscribe to that for controls.
Here's my notes on getting the e-ink screen working full-screen with a Gioui app (without a desktop linux environment): https://github.com/dave/iot/tree/main/ui
It would be great to find a cheaper alternative (the BOOX Mira is $800 ouch!)
One nitpick: It seems odd that, if I understand correctly, the data being served is from Netlify. Why not serve it locally on the device?
You might as well have a ftp site (or equivalent) where you would just dump a YYYYMMDDHHMMSS.png (or jpg or whatever) and a script that just sends the latest to the display.
That would also let you run everything from initrd, so you can follow by a poweroff (and schedule a RTC wake in say 20 minutes)
If it's powered from USB, it doesn't really matter, but if you want to power it from batteries (especially something like AAA NiMH batteries) so that you can easily hang it on a wall somewhere and make it last a month or so (refresh every 10-15 minutes maybe), you pretty much have to use something much more low power (like an ESP8266, ESP32, etc.).
Having pre-stored pictures is also unnecessary, just generate them on the fly. Unless generating the picture takes a long time (e.g. having to contact a lot of slow external services), you can just draw it on the server in memory with each request.
In the same request, the device can also send its battery voltage to the server, where you can collect it as metrics.
I was just suggesting a slightly more efficient way that would not require the author to buy new hardware, but I agree: an ESP with direct IO to the "framebuffer" is better.
https://github.com/matopeto/kindle-weather-dashboard
If you want to display something more, you could just self-host a page.
Come to think of it I think the Kindle browser is based on WebKit, so it probably runs any JS that the version of WebKit supports, but given the low-power processor and the 0.5 FPS display, you probably won't get anything too crazy to work.