This project is a personal script to power a small e-ink display at home. It was built for fun as a weekend project, and is not intended to be a polished product—just a useful and hackable tool!
- Bus Departures: Shows the next buses leaving from my local bus stop (using Sweden's Trafiklab API).
- Weather: Displays the current weather and forecast (using Open-Meteo), so I don't forget an umbrella or jacket.
- Calendar: Shows the next event from my Apple Calendar (via iCloud integration).
All of this is shown on a 4.26-inch e-paper (e-ink) display, driven by a Raspberry Pi Zero W v1.
- Raspberry Pi Zero W v1
- 4.26" e-paper display (Waveshare)
- 3D-printed case (Printables model)
- Some soldering and assembly required!
- Two M3 screws for assembling
- Python 3
- Open-Meteo for weather data
- Trafiklab for Swedish public transport
- iCloud for Apple Calendar events
- Pillow for image drawing
- Requests for HTTP API calls
The code is designed to be easily customizable—swap out the APIs or add your own data sources as you like.
- The
main.pyscript is the one you should schedule (e.g., withcron) on your Raspberry Pi to refresh the e-ink display. Running it every minute is a good idea:* * * * * /usr/bin/python3 /path/to/main.py - The API server can be run either on the Raspberry Pi itself or on another server. Just make sure to set the correct API URL in your
.envfile. You can also set an API key for security, especially if the server is exposed to the internet.
This code is definitely not perfect! It was written quickly as a fun Saturday project, from designing and printing the 3D case to soldering, programming, and assembling the whole thing. If you want to improve it, go ahead!
MIT (see LICENSE file)