Mani Mohan
Built a low-power dashboard implementation using Raspberry Pi Zero WH and Waveshare 7.5" E-Ink display (800x480), mounted in a repurposed 5x7 frame. Aggregates data from multiple APIs to display calendar events, weather, market data, and sports information.
Raspberry Pi Zero WH (pre-soldered headers required)
Waveshare 7.5" E-Paper HAT (800x480, black/white)
5x7 photo frame (modified for component mounting)
Standard GPIO ribbon connection
5V/2A power supply
Waveshare EPD Python library for display control
Google Calendar API (OAuth2 authentication)
OpenWeatherMap API key (free tier sufficient)
Football-data.org API token (free tier)
Yahoo Finance API access (free)
Python 3.7+ environment
Data aggregation occurs through multiple threads with varying refresh intervals:
Calendar updates: 15-minute intervals
Weather data: 60-minute intervals
Market data: 15-minute intervals
Sports updates: 1-day intervals
Display updates implement partial refresh for static elements while maintaining complete refresh cycles for critical data changes.
Multi-section information display:
Calendar (Top Left)
24-hour event horizon
Time-sorted appointments
Weather (Top Right)
Current temperature/humidity
Air quality metrics
Short-term forecast
MUFC fixture (Center Left)
Upcoming PL fixture in local time
Market Data (Bottom Left)
Selected equity tickers
Percentage changes
Index tracking
Tech Updates (Bottom Right)
Tech news from TheVerge RSS feed.
E-Ink refresh limitations: ~3-4 seconds/refresh, which is not terrible.
API rate limits: Weather API calls are okay for personal use.
Display artifacts: Managed through partial update scheduling
Current focus areas:
Memory usage optimization
Update cycle refinement
Error handling improvements
Display buffer optimization
Commute delays
Local events
Home automation status
Personal fitness/health metrics dashboard
Todo list integration
What other data sections would you be interested in?
Are you interested in building one? After refining some code sections, I hope to publish the code and accept pull requests. Once I do that, I will update this section.