E-Ink calendar from repurposed old e-book reader

Root cause

For some time, I wanted to have small e-ink device for showing basic information about my PC or my work day in general. The issue is that, e-ink screens are harder to control (from electrical standpoint) than simple TFT screen with SPI connection. After doing research and roughly BOM (for waveshare screen with controller and eg. RPI) I was surprised - but not in the pleasant way. Then, the new idea was born - reuse old e-book reader.

Nook Simple Touch

I found laying around almost ancient (exactly 10 year old) e-ink ebook reader - Nook Simple Touch. Hardware specification is not breathtaking:

  • 6" e-ink screen, touch screen, 800x600
  • Android 2.1 “Eclair”
  • 800 MHz TI OMAP 3621
  • 256 MB RAM and 2GB Flash
  • WiFi

So we have an old, slow device that is running Android version not supported from eons ago. What can we do?

Root… but this time the device and applications

My device was already rooted for a few years but it would be a the first step (search for the information on XDA).

After rooting and installing modded firmware, we acquire options to change screen behavior and orientation - perfect! The hardware is not powerful enough to calculate/process anything demanding. That is why, I crossed out VNC usage - also battery consumption would be stupidly high…

From my experience we can try 3 different apps now:

  • Opera Mini v6.5.2 - working but had issues with https and scripts at all
  • Opera Classic v12.1.9 - working a little better with handling newer pages
  • Electric Sign v.1.0.3

Electric Sign

It’s a application created with this kind of applications in mind. Features and limitations:

  • allows to refresh page in intervals, with device sleep in between
  • support only http
  • scripts can’t be used on webpage, only basic tags

With this we can show simple page or website’s image on NST screen. It works with CNN light page so we need our page to show.

Personal homepage

It was possible to create website/application by myself but it would be a lost of time - I’m not a web developer. I decided to use the existing solution. There were a few interesting projects:

But finally, I used Magic Mirror which allowed me to show not only multiple calendars but also weather.

To run, you can use docker-compose found in official documentation. Configuration is done in config.js, some minor tweaks may be also necessary in custom.css.

Capturing webpage

This was the biggest issue in this small project. First, I tried to use chromium and firefox with CLI interfaces. Magic mirror is loading all the data after the page is loaded. This was the limitation here. I was not able to take screenshot with known windows size after a certain period reliably. Chromium was freezing with all of this parameters.

After hours of reading/testing, I found npm module which was using chromium and puppeter - capture-website.
With that it was possible to get repeatable results using call like:

1
capture-website http://<ip>:8080 --width=600 --height=800 --timeout=15 --delay=10 --output=<path>/image.png --overwrite

The last step was to share final image, for that I used nginx in docker with default config and page with <img> tag.

Summary

The whole workflow looks like this:

Calendar server -> Magic Mirror (docker) -> capture-website-cli (run by cron) -> nginx (docker) —WiFI—> NST

In the result, I have my shared calendar shown in the kitchen. It refreshes automatically, downloads new snapshot of the webpage and goes to sleep. And all of that without draining a battery in minutes.

<End of Post>

Marek Pawlak