← /research

MagInkCal: E-Ink Calendar Project

Processing · Reading Notes Created Jan 4, 2025

Source

MagInkCal GitHub — speedyg0nz (Article)
View source →
Project: eink-training-display
e-inkraspberry-piprior-art

Prior art for the eink training display spec. A mature e-ink calendar project with lessons learned.

Architecture

PiSugar2 RTC wakes Pi → Cron triggers script →
Fetch Google Calendar → Render with PIL →
Display on e-ink → Shutdown

The Pi only runs for the few seconds needed to update. E-ink persistence means the calendar stays visible while powered off.

Key Decisions

Waveshare 12.48” tri-color display: Supports black, white, red. But tri-color is slow (26s refresh). For my project, B/W with 4s refresh is better.

PiSugar2 for battery + RTC: Provides scheduled wake via onboard RTC. Gets 3-4 weeks battery life. Since my display is wall-powered, I don’t need this — but the RTC concept applies.

Bootstrap CSS → PIL rendering: Uses HTML/CSS for layout, then renders to image. Interesting approach but adds complexity. Direct PIL drawing is simpler.

Google Calendar Integration

Uses official Google API Python client:

  1. Generate OAuth credentials in Google Console
  2. Run quickstart.py locally to authenticate
  3. Creates token.pickle for persistent auth
  4. Transfer pickle to Pi

This is the standard Google Calendar approach — works but requires initial OAuth dance on a machine with a browser.

Display Constraints

  • Only 3 events per day fit (with “4 more” overflow indicator)
  • Shows 35 days (current week + 4 weeks)
  • Multi-day events show start/end with arrows

These constraints come from resolution and readability. My 7.5” display (800×480) will have similar limits.

Lessons for My Project

Do:

  • Use cron for scheduling
  • Cache API responses aggressively
  • Full refresh daily to clear ghosting
  • Shutdown/sleep when not updating

Don’t:

  • Depend on “bullseye” RPiOS with older Pi Zero (use Pi Zero 2 W)
  • Expect complete documentation (plan to read code)
  • Use tri-color if refresh speed matters
  • MagInkDash: Same author, adds weather + OpenAI
  • mendhak/epaper-dashboard: SVG-based templating, multiple weather providers
  • mcal: Uses Pico W + 12” Pervasive Displays

Sources: