https://github.com/13bytes/einkcalendar
A small desk-calendar, portal-themend. It display the current date, the next few events in your calendar and whether a person in your contact list has a birthday
https://github.com/13bytes/einkcalendar
Last synced: 4 months ago
JSON representation
A small desk-calendar, portal-themend. It display the current date, the next few events in your calendar and whether a person in your contact list has a birthday
- Host: GitHub
- URL: https://github.com/13bytes/einkcalendar
- Owner: 13Bytes
- License: cc-by-4.0
- Created: 2021-12-25T12:00:40.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-09-29T09:27:52.000Z (over 1 year ago)
- Last Synced: 2025-03-31T12:57:21.667Z (about 1 year ago)
- Language: Python
- Homepage:
- Size: 528 KB
- Stars: 189
- Watchers: 8
- Forks: 18
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Portal eInk Calendar
A small desk-calendar with the theme of a portal chamber info.
It displays the current date, the next few events in your calendar and whether a person in your contact list has a birthday (inc. their name).
Table of Contents
## About The Project
The finished project on my desk:

The pie is displayed when a person in your contacts has a birthday (along with the name below it).
The other three icons are currently displayed randomly.
### Components
This repo includes the software (100% python) and the STLs of the frame.
I used the following hardware:
* [Waveshare 800×480, 7.5inch E-Ink display (13505)](https://www.waveshare.com/product/displays/7.5inch-e-paper-hat-b.htm)
* [Raspberry Pi 3b](https://www.raspberrypi.com/products/raspberry-pi-3-model-b/)\
(The Raspi is a bit overkill if you only want to update the calendar. But since it's powered on anyways, I use it to host many other things as well. If you only want to use it for the calendar, you should take a look at the Raspberry Pi Zero series)
## Getting Started
### Prerequisites
The prerequisites are based on [this](https://www.waveshare.com/wiki/7.5inch_e-Paper_HAT_(B)) waveshare instruction to get your rapi ready for the display:
* Enable the SPI interface on your raspi
```sh
sudo raspi-config
# Choose Interfacing Options -> SPI -> Yes to enable SPI interface
```
* Install BCM2835 libraries
```sh
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.60.tar.gz
tar zxvf bcm2835-1.60.tar.gz
cd bcm2835-1.60/
sudo ./configure
sudo make
sudo make check
sudo make install
```
* Install wiringPi libraries
```sh
sudo apt-get install wiringpi
#For Pi 4, you need to update it:
cd /tmp
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
```
### Installation
1. Clone the repo
```sh
git clone https://github.com/13Bytes/eInkCalendar
cd eInkCalendar
```
2. Install requirements
```sh
sudo apt-get update
# requirements by waveshare
sudo apt-get install python3-pip python3-pil python3-numpy RPi.GPIO python-spidev
# requirements by this repo
sudo python3 -m pip install -r requirements.txt
```
3. Create config-file
```sh
cp settings.py.sample settings.py
```
Now edit `settings.py` and set all your settings:
`LOCALE: "en_US"` (or e.g. `en-GB.UTF-8`) Select your desired format and language.
It needs to be installed on your device (which 95% of time is already the case - as it's you system-language.
You can list all installed local-packages with `locale -a`.
If the desired one is missing, add it in this menu `sudo dpkg-reconfigure locales` (for Raspberry Pis) or take a look at the general [Debian Wiki](https://wiki.debian.org/Locale)).
`WEBDAV_CALENDAR_URL = "webcal://p32-caldav.icloud.com/published/2/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"` The address of your shared wabdav calendar. (It needs to be publicly accessible by this URL)
`WEBDAV_IS_APPLE = True` Is the calendar hosted on icloud?
`CALDAV_CONTACT_USER = "louis"` Username for logging into your CALDAV contact-list.
`CALDAV_CONTACT_PWD = "secret"` Password for logging into your CALDAV contact-list.
`ROTATE_IMAGE = True` This will rotate the image 180° before printing it to the calendar. `True` is required if you use my STL, as the dipay is mounted upside-down.
4. Add the start-script to your boot-process:\
(You might need to adapt the path `/home/pi/eInkCalendar/run_calendar.sh` acordingly)
Make `run_calendar.sh` executable
```sh
chmod +x /home/pi/eInkCalendar/run_calendar.sh
```
and add it to crontab, as follows:
```sh
crontab -e
```
and add following line:\
```@reboot sleep 60 && /home/pi/eInkCalendar/run_calendar.sh```
## Frame
The STLs of the frame can be found in [hardware](https://github.com/13Bytes/eInkCalendar/tree/main/hardware).
It's designed for 3D-printing.
The two parts can be screwed together in three of the four corners.
The raspi is held in place by threaded heat set inserts.

## Questions
Stuck somewhere? \
You can contact me, or create a [issue](https://github.com/13Bytes/eInkCalendar/issues).
## Contact
Louis - [@Louis_D_](https://twitter.com/Louis_D_) - coding@13bytes.de
## Acknowledgments
* I got the idea from following [reddit-post](https://www.reddit.com/r/RASPBERRY_PI_PROJECTS/comments/qujt3i/wip_portal_desktop_calendar/).
* This readme-page uses this [template](https://github.com/othneildrew/Best-README-Template).