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
Install / Use
/learn @13Bytes/EInkCalendarREADME
About The Project
The finished project on my desk:
<img src="https://user-images.githubusercontent.com/12069002/150647924-80f5f8fa-098a-4592-b257-7ac27326abfb.jpg" height=500> <img src="https://user-images.githubusercontent.com/12069002/150647951-48b0ee2c-e09c-45f7-ba01-4635f47f1a91.jpg" height=500>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.
<p align="right">(<a href="#top">back to top</a>)</p>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)
- Raspberry Pi 3b
(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 waveshare instruction to get your rapi ready for the display:
- Enable the SPI interface on your raspi
sudo raspi-config # Choose Interfacing Options -> SPI -> Yes to enable SPI interface - Install BCM2835 libraries
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
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
-
Clone the repo
git clone https://github.com/13Bytes/eInkCalendar cd eInkCalendar -
Install requirements
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 -
Create config-file
cp settings.py.sample settings.pyNow edit
settings.pyand 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 withlocale -a. If the desired one is missing, add it in this menusudo dpkg-reconfigure locales(for Raspberry Pis) or take a look at the general Debian Wiki).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 = TrueIs 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 = TrueThis will rotate the image 180° before printing it to the calendar.Trueis required if you use my STL, as the dipay is mounted upside-down. -
Add the start-script to your boot-process:
(You might need to adapt the path/home/pi/eInkCalendar/run_calendar.shacordingly)Make
run_calendar.shexecutablechmod +x /home/pi/eInkCalendar/run_calendar.shand add it to crontab, as follows:
crontab -eand add following line:
@reboot sleep 60 && /home/pi/eInkCalendar/run_calendar.sh
Frame
The STLs of the frame can be found in 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.
<img src="https://user-images.githubusercontent.com/12069002/150642718-5a24c717-1a19-4883-b932-1f1588f124fa.png" height=400> <img src="https://user-images.githubusercontent.com/12069002/150642799-6145283c-6e35-43b8-842b-40c608fecd77.png" height=400> <p align="right">(<a href="#top">back to top</a>)</p>Questions
Stuck somewhere?
You can <a href="#contact">contact</a> me, or create a issue.
Contact
Louis - @Louis_D_ - coding@13bytes.de
<p align="right">(<a href="#top">back to top</a>)</p> <!-- ACKNOWLEDGMENTS -->Acknowledgments
- I got the idea from following reddit-post.
- This readme-page uses this template.
Related Skills
node-connect
338.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
338.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.4kCommit, push, and open a PR
