Coder Social home page Coder Social logo

acourdier / inkycal Goto Github PK

View Code? Open in Web Editor NEW

This project forked from aceinnolab/inkycal

0.0 0.0 0.0 233.62 MB

Create awesome e-paper dashboards within minutes! Modularity? Check! Python3? Check? Works on Raspberry Pi Zero W? Check! Support for own modules? Check!

Home Page: https://aceinnolab.github.io/Inkycal/

License: GNU General Public License v3.0

Shell 23.00% Python 22.00% C 39.16% Makefile 8.90% HTML 6.84% Batchfile 0.05% M4 0.05%

inkycal's Introduction

Welcome to inkycal v2.0.2!

Version Licence GitHub stars python

Inkycal is a software written in python for selected E-Paper displays. It converts these displays into useful information dashboards. It's open-source, free for personal use, fully modular and user-friendly. Despite all this, Inkycal can run well even on the Raspberry Pi Zero. Oh, and it's open for third-party modules! Hooray!

Main features

Inkycal is fully modular, you can mix and match any modules you like and configure them on the web-ui. For now, these following built-in modules are supported:

  • Calendar - Monthly Calendar with option to sync events from iCalendars, e.g. Google.
  • Agenda - Agenda showing upcoming events from given iCalendar URLs.
  • Image - Display an Image from URL or local file path.
  • Slideshow - Cycle through images in a given folder and show them on the E-Paper.
  • Feeds - Synchronise RSS/ATOM feeds from your favorite providers.
  • Stocks - Display stocks using Tickers from Yahoo! Finance.
  • Weather - Show current weather, daily or hourly weather forecasts from openweathermap.
  • Todoist - Synchronise with Todoist app or website to show todos.
  • iCanHazDad - Display a random joke from iCanHazDad.com.

Hardware guide

Before you can start, please ensure you have one of the supported displays and of the supported Raspberry Pi: |4|3A|3B|3B+|0W|0WH|. We personally recommend the Raspberry Pi Zero W as this is relatively cheaper, uses less power and is perfect to fit in a small photo frame once you have assembled everything.

Serial displays are usually cheaper, but slower. Their main advantage is ease of use, like being able to communicate via SPI. A single update will cause flickering (fully normal on e-paper displays) ranging from a few seconds to half an minute. We recommend these for users who want to get started quickly and for more compact setups, e.g. fitting inside a photo frame. The resolution of these displays ranges from low to medium. Usually, these displays support 2-3 colours, but no colours in between, e.g. fully black, fully red/yellow and fully-white.

Parallel displays on the other hand do not understand SPI and require their own dedicated driver boards individually configured for these displays. Flickering also takes place here, but an update only takes about one to a few seconds. The resolution is much better than serial e-paper displays, but the cost is also higher. These also have 16 different grayscale levels, which does not compare to the 256 grayscales of LCDs, but far better than serial displays.

❗️Important note: e-paper displays cannot be simply connected to the Raspberry Pi, but require a driver board. The links below may or may not contain the required driver board. Please ensure you get the correct driver board for the display!

type vendor affiliate links to product
7.5" Inkycal (plug-and-play) Author of Inkycal  Buy on Tindie Pre-configured version of Inkycal with custom frame and a web-ui. You do not need to buy anything extra. Includes Raspberry Pi Zero W, 7.5" e-paper, microSD card, driver board, custom packaging and 1m of cable. Comes pre-assembled for plug-and-play.
Inkycal frame Author of Inkycal coming soon (ultraslim frame with custom-made front and backcover inkl. ultraslim driver board). You will need a Raspberry Pi and a 7.5" e-paper display
[serial] 12.48" (1304×984px) display waveshare / gooddisplay  Waveshare 12.48 Inch E-Paper
[serial] 7.5" (640x384px) -> v1 display waveshare / gooddisplay Waveshare 7.5 Inch E-Paper
[serial] 7.5" (800x400px) -> v2 display waveshare / gooddisplay Waveshare 7.5 Inch E-Paper
[serial] 7.5" (880x528px) -> v3 display waveshare / gooddisplay Waveshare 7.5 Inch E-Paper
[serial] 5.83" (400x300px) display waveshare / gooddisplay Waveshare 5.83 Inch E-Paper
[serial] 4.2" (400x300px)display waveshare / gooddisplay Waveshare 4.2 Inch E-Paper
[parallel] 10.3" (1872×1404px) display waveshare / gooddisplay  Waveshare 10.3 Inch E-Paper
[parallel] 9.7" (1200×825px) display waveshare / gooddisplay Waveshare 9.7 Inch E-Paper
[parallel] 7.8" (1872×1404px) display waveshare / gooddisplay  Waveshare 7.8" E-Paper
Raspberry Pi Zero W Raspberry Pi  Raspberry Pi Zero W
MicroSD card Sandisk  MicroSD card (8GB)

Important note for Raspberry Pi OS!

Please note that with the latest version of Raspberry Pi OS, there no longer is the default user pi, as it is (now) considered a security risk. You will now have to set both, a new username and password. While the fix in the software is in progress, please use the Raspberry Pi flashing tool and set the username via the gear button to pi. Special thanks to LakesideMiners from the [Discord] for the note. Here is a GIF showing how to set a username this way!

raspberry-pi-os-add-user

Configuring the Raspberry Pi

  1. Flash Raspberry Pi OS according to the instructions. Leave the SD card plugged in your computer.
  2. Create and download settings.json file for Inkycal from the WEB-UI.
  3. Download the ssh text file from the WEB-UI.
  4. Create and download a WiFi-configuration file (wpa_supplicant.conf) from the WEB-UI
  5. Copy these three downloaded files (settings.json, ssh, wpa_supplicant.conf) to the flashed microSD card in the /boot folder of microSD card. On Windows, this is the only visible directory on the SD card. On Linux, copy these files to /boot of the microSD card.
  6. Eject the microSD card from your computer now, insert it in the Raspberry Pi and power the Raspberry Pi.
  7. Once the green LED has stopped blinking after ~3 minutes, use an SSH client to connect to the Raspberry Pi. On Windows, you can use PUTTY, but you can also use an SSH App. on your smartphone. Use the address: raspberrypi.local with pi as the username and raspberry as the password. For more detailed instructions, check out the page from the Raspberry Pi website
  8. After connecting via SSH, run the following commands, line by line:
sudo raspi-config --expand-rootfs
sudo sed -i s/#dtparam=spi=on/dtparam=spi=on/ /boot/config.txt
sudo dpkg-reconfigure tzdata

These commands expand the filesystem, enable SPI and set up the correct timezone on the Raspberry Pi. When running the last command, please select the continent you live in, press enter and then select the capital of the country you live in. Lastly, press enter.

  1. Change the password for the user pi by entering passwd in the Terminal, enter your current password, hit enter, then type your new password and press enter. Please note you will have to remember this password to access your Raspberry Pi.
  2. Follow the steps in Installation (see below) on how to install Inkycal.

Installing Inkycal

⚠️ Please note that although the developers try to keep the installation as simple as possible, the full installation can sometimes take hours on the Raspberry Pi Zero W and is not guaranteed to go smoothly each time. This is because installing dependencies on the zero w takes a long time and is prone to copy-paste-, permission- and configuration errors.

ℹ️ Looking for a shortcut to safe a few hours? We know about this problem and have spent a signifcant amount of time to prepare a pre-configured image with the latest version of Inkycal for the Raspberry Pi Zero. It comes with the latest version of Inkycal, is fully tested and uses the Raspberry Pi OS Lite as it's base image. You only need to copy your settings.json file, we already took care of the rest, including auto-start at boot, enabling spi and installing all dependencies in advance. Pretty neat right? Check the sponsor button at the very top of the repo to get access to Inkycal-OS-Lite. This will help keep this project growing and cover the ongoing expenses too! Win-win for everyone! 🎊

Manual installation

Run the following steps to install Inkycal. Do not use sudo for this, except where explicitly specified.

# the next line is for the Raspberry Pi only
sudo apt-get install zlib1g libjpeg-dev libatlas-base-dev rustc libopenjp2-7 python3-dev scons libssl-dev python3-venv python3-pip git libfreetype6-dev
cd $HOME
git clone --branch main --single-branch https://github.com/aceisace/Inkycal
cd Inkycal
python3 -m venv venv
source venv/bin/activate
python -m pip install --upgrade pip
pip install wheel
pip install -e ./

# If you are running on the Raspberry Pi, please install the following too to allow rendering on the display
pip install RPi.GPIO==0.7.1 spidev==3.5

Running Inkycal

To run Inkycal, type in the following command in the terminal:

cd $HOME/Inkycal
source venv/bin/activate
python3 inky_run.py

Running on each boot

To make inkycal run on each boot automatically, you can use crontab. Do not use sudo for this

(crontab -l ; echo "@reboot sleep 60 && cd $HOME/Inkycal && venv/bin/python inky_run.py &")| crontab -

Updating Inkycal

To update Inkycal to the latest version, navigate to the Inkycal folder, then run:

git pull

Yep. It's actually that simple! But, if you have made changes to Inkycal, those will be overwritten. If that is the case, backup your modified files somewhere else if you need them. Then run:

git reset --hard
git pull

Uninstalling Inkycal

We'll miss you, but we don't want to make it hard for you to leave. Just delete the Inkycal folder, and you're good to go!

Additionally, if you want to reset your crontab file, which runs inkycal at boot, run:

crontab -r

Modifying Inkycal

Inkycal now runs in a virtual environment to support more devices than just the Raspberry Pi. Therefore, to make changes to Inkycal, navigate to Inkycal, then run:

cd $HOME/Inkycal && source venv/bin/activate

Then modify the files as needed and experiment with Inkycal. To deactivate the virtual environment, simply run:

deactivate

3D printed frames

With your setup being complete at this stage, you may want to 3d-print a case. The following files were shared by our friendly community: 3D-printable case

Contributing

All sorts of contributions are most welcome and appreciated. To start contributing, please follow the Contribution Guidelines

The average response time for issues, PRs and emails is usually 24 hours. In some cases, it might be longer. If you want to have some faster responses, please use Discord (link below)

P.S: Don't forget to star and/or watch the repo. For those who have done so already, thank you very much!

Join us on Discord!

We're happy to help, to beginners and developers alike. In fact, you are more likely to get faster support on Discord than on Github.

Inkycal chatroom Discord

Sponsoring

Inkycal relies on sponsors to keep up maintainance, development and bug-fixing. Please consider sponsoring Inkycal via the sponsor button if you are happy with Inkycal.

We now offer perks depending on the amount contributed for sponsoring, ranging from pre-configured OS images for plug-and-play to development of user-suggested modules. Check out the sponsor page to find out more. If you have been a previous sponsor, please let us know on our Dicord server or by sending an email. We'll send you the perks after confirming 💯

As featured on

inkycal's People

Contributors

aceisace avatar atrejoe avatar stevenseifried avatar lakesideminers avatar emilyboda avatar ch3lmi avatar tobychui avatar actions-user avatar dependabot[bot] avatar worstface avatar sapostoluk avatar freezingdaniel avatar dealyllama avatar priv-kweihmann avatar surak avatar alessandromandelli avatar davidcamre avatar mshulman avatar vitasam avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.