Inkycal/README.md

189 lines
9.4 KiB
Markdown
Raw Normal View History

# Refactoring branch. Work in progress!
Please do not use this branch as this is in pre-alpha stage. It it only intended for development purposes.
## Short Summary
Aim of refactoring:
2020-05-21 01:37:44 +02:00
* [x] Use settings.json file instead of .py file
* [x] Fully dynamic images (changable section sizes)
* [x] No preferred module positions or sizes
* [x] Switch from scripts to classes
* [ ] Allow using pip3 install .... to install inkycal
* [x] Update dependencies
* [x] Switch from ics to icalendar library for better parsing of iCalendars
* [ ] Allow using on windows (no-render mode)
* [x] Implement features from dev branch
* [ ] Implement testing for each module
2020-05-21 01:37:44 +02:00
## Testing
While the main file is incomplete, you can still try out a few tests. To run these tests, please follow the steps below:
* Clone this branch:
`git clone -b dev_ver2_0 https://github.com/aceisace/Inky-Calendar inkycal`
* Navigate to inkycal directory:
`cd inkycal`
* run tests:
`python3 dev_tests.py`
## Info
The main folder is now inkcal.
Folder structure:
```bash
2020-05-15 03:06:41 +02:00
| Inkycal.py -main file (work in progress)
| __init__.py
|
+---config
| layout.py -handles layout of image (size, section-sizes)
| parser.py -parse the settings.json file
| settings.json -JSON file for all the user-config
| __init__.py
|
+---custom
| functions.py -custom functions of inkycal-software (writing text, etc..)
| __init__.py
|
+---display
| | __init__.py
| |
| \---drivers - drivers....
| epdconfig.py
| epd_4_in_2.py
| epd_4_in_2_colour.py
| epd_5_in_83.py
| epd_5_in_83_colour.py
| epd_7_in_5.py
| epd_7_in_5_colour.py
| epd_7_in_5_v2.py
| epd_7_in_5_v2_colour.py
| __init__.py
|
\---modules - folder containing all modules
ical_parser.py - parses icalendars
inkycal_rss.py - parses rss feeds
inkycal_weather.py - parses weather from openweathermap
__init__.py
```
2019-03-23 20:27:10 +01:00
<p align="center">
2020-05-15 19:46:13 +02:00
<img src="https://github.com/aceisace/Inky-Calendar/blob/dev_ver2_0/Gallery/logo.png" width="800">
2019-03-23 20:27:10 +01:00
</p>
2019-03-23 20:27:10 +01:00
<p align="center">
2019-03-24 20:26:12 +01:00
[![Version](https://img.shields.io/github/release/aceisace/Inky-Calendar.svg)](https://github.com/aceisace/Inky-Calendar/releases)
2019-03-23 20:27:10 +01:00
[![Python](https://img.shields.io/pypi/pyversions/pyowm.svg)](https://img.shields.io/pypi/pyversions/pyowm.svg)
2019-05-22 11:45:07 +02:00
[![Licence](https://img.shields.io/github/license/aceisace/Inky-Calendar.svg)](https://github.com/aceisace/Inky-Calendar/blob/Stable/LICENSE)
2019-03-23 20:27:10 +01:00
[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.me/SaadNaseer)
</p>
2018-10-02 17:58:17 +02:00
2020-02-13 18:00:51 +01:00
A python3 software for displaying events (from iCalendars), weather (from openweathermap) and RSS feeds on selected E-Paper displays (4.2", 5.83", 7.5"(v1), 7.5"(v2)) from Waveshare/GoodDisplay.
2019-03-04 20:24:41 +01:00
2019-12-17 16:04:38 +01:00
## Main features
* Monthly Calendar that shows events from your Google (or other) iCalendar/s
* Live weather info and forecasts for next 9 hours (openweathermap)
* Agenda to show what is on your shedule (from your iCalendar/s)
* RSS feeds from various providers to keep up to date with news, quotes etc.
2018-08-27 00:15:18 +02:00
## News:
2020-02-18 23:25:18 +01:00
* **Looking for a server-only solution? [This repo offers a server-only solution](https://github.com/Atrejoe/Inky-Calendar-Server) (Credit to Atrejoe)**
* **Discord chat open now. [Click here to enter](https://discord.gg/sHYKeSM)**
2020-01-19 00:43:34 +01:00
* **Version 1.7.1 released with support for 4.2", 5.83", 7.5" (v1) and 7.5" (v2) E-Paper displays** (Mid January 2020)
2019-12-17 16:04:38 +01:00
* **Added support for Debian Buster, Buster Lite is not supported!**
2018-10-14 22:00:24 +02:00
2020-02-03 00:34:30 +01:00
## Development status
2020-02-13 18:00:51 +01:00
This software is in active development. To see the current development status, [[Click here]](https://github.com/aceisace/Inky-Calendar/projects/2).
2020-02-03 00:34:30 +01:00
2019-03-23 20:27:10 +01:00
## Preview
<p align="center">
<img src="https://github.com/aceisace/Inky-Calendar/blob/master/Gallery/inkycal-modes.gif" width="900"><img
2019-03-23 20:27:10 +01:00
</p>
2018-08-27 00:15:18 +02:00
## Hardware required
* 7.5" 3-Colour E-Paper Display (Black, White, Red/Yellow) with driver hat from [waveshare](https://www.waveshare.com/product/7.5inch-e-paper-hat-b.htm)
**or**
* 7.5" 2-Colour E-Paper Display (Black, White) with driver hat from [waveshare](https://www.waveshare.com/product/7.5inch-e-paper-hat.htm)
* Raspberry Pi Zero WH (with headers) (no soldering iron required)
* Or: Raspberry Pi Zero W. In this case, you'll need to solder 2x20 pin GPIO headers yourself
2018-08-27 00:41:35 +02:00
* MicroSD card (min. 4GB)
* MicroUSB cable (for power)
2019-05-03 21:04:10 +02:00
* Something to be used as a case (e.g. a RIBBA photo-frame or a 3D-printed case)
2018-08-27 00:15:18 +02:00
2018-08-29 00:28:25 +02:00
# Setup
2018-08-29 00:22:30 +02:00
## Getting the Raspberry Pi Zero W ready
2019-12-17 16:04:38 +01:00
1. After [flashing Raspbian Buster (with Desktop)](https://www.raspberrypi.org/downloads/raspbian/), set up Wifi on the Raspberry Pi Zero W by copying the file [**wpa_supplicant.conf**](https://github.com/aceisace/Inky-Calendar/blob/installer/wpa_supplicant.conf) (from above) to the /boot directory and adding your Wifi details in that file.
2. Create a simple text document named **ssh** in the boot directory to enable ssh.
3. Install the SD card and boot your Raspberry Pi. Connect to it over the network with ssh and login.
2018-08-27 16:47:33 +02:00
3. Expand the filesystem in the Terminal with **`sudo raspi-config --expand-rootfs`**
4. Enable SPI by entering **`sudo sed -i s/#dtparam=spi=on/dtparam=spi=on/ /boot/config.txt`** in the Terminal
5. Set the correct timezone with **`sudo dpkg-reconfigure tzdata`**, selecting the correct continent and then the capital of your country.
6. Reboot to apply changes
2018-10-02 21:42:12 +02:00
7. Optional: If you want to disable the on-board leds of the Raspberry, follow these instructions:
**[Disable on-board-led](https://www.jeffgeerling.com/blogs/jeff-geerling/controlling-pwr-act-leds-raspberry-pi)**
2018-08-27 16:03:47 +02:00
2019-03-23 20:27:10 +01:00
## Installing required packages for python 3.x
Execute the following command in the Terminal to install all required packages. Please use Raspbian Buster with Desktop (preferably the latest version). Raspbian Buster **LITE** is __not__ supported.
2018-09-09 19:57:13 +02:00
2019-12-18 13:40:46 +01:00
**`bash -c "$(curl -sL https://raw.githubusercontent.com/aceisace/Inky-Calendar/master/Installer.sh)"`**
**Installing tagged versions**:
If you want to install a different version than the *master* branch, insert the tag name into the above URL, e. g.
`bash -c "$(curl -sL https://raw.githubusercontent.com/aceisace/Inky-Calendar/v1.7.1/Installer.sh)"`
2020-01-29 10:22:11 +01:00
**Upgrading from old versions:**:
If you were using a previous version, please use the web-ui for generating a new settings file. Settings files from previous versions are not compatible.
2020-01-29 10:22:11 +01:00
If you get some red lines, please run `pip3 install Pillow`.
2019-12-22 16:32:07 +01:00
If the installer is broken, please follow the instructions here [manual installation](https://github.com/aceisace/Inky-Calendar/wiki/Manual-installation)
If the Installer should fail for any reason, kindly open an issue and paste the error. Thanks.
**Preview of Installer:**
2019-12-19 00:32:15 +01:00
<p align="center">
<img src="https://github.com/aceisace/Inky-Calendar/blob/master/Gallery/Installer-gif.gif" width="700">
2019-12-19 00:32:15 +01:00
</p>
2018-09-23 23:26:55 +02:00
## Adding details to the program
2019-12-17 16:04:38 +01:00
When you run the installer, you can add details in the last step. For new-users, it is recommended to use the 'web-UI' option.
~~You can also manually edit the settings file like this: `nano /home/$USER/Inky-Calendar/settings/settings.py`~~
2019-12-17 16:04:38 +01:00
~~Once your details are added, run the software with: `python3 /home/$USER/Inky-Calendar/modules/inkycal.py`. If everything is working correctly, you'll see some lines being printed on the console (not red ones). Lastly, the E-Paper display will show a fresh image.~~
2020-02-07 18:21:10 +01:00
If you encounter any issues, please leave a comment in the issues or via email. Thanks in advance.
2019-02-11 14:38:47 +01:00
## iCalendar
Although Google Calendar is strongly recommended, iCalendars from other providors may work. Support for iCalendar requiring authentification (e.g. Owncloud) has been added, however this is still __experimental__.
2019-02-26 10:01:14 +01:00
2019-12-17 16:04:38 +01:00
Event names will be truncated until they fit in their allocated space/line. Try avoiding too long event names.
2019-02-26 10:01:14 +01:00
If you encounter errors related to your iCalendar, please feel free to report the error either by opening an issue or by sending a mail.
2019-02-11 14:38:47 +01:00
## Updating
~~Before updating, re-name the current Inky-Calendar folder e.g. Inky-Calendar-old and then run the installer again (see above), choosing the **update** option.~~
2018-08-27 00:54:59 +02:00
## Contributing
2019-03-24 20:26:12 +01:00
All sorts of contributions are most welcome and appreciated. To start contributing, please follow the [Contribution Guidelines](https://github.com/aceisace/Inky-Calendar/blob/master/CONTRIBUTING.md).
2019-12-17 16:04:38 +01:00
The average response time for issues, PRs and emails is usually 24 hours. In some cases, it might be longer.
## Setting up VS Code Remote development in WSL
In order to speed up development, most development tasks (apart from the actual rending to E-Ink display) can be developed on more powerful machines and in richer environments than running this on a Pi zero. In case of Windows PC the most convenient way is to use VS Code Remote development in Windows Subsystem for Linux (WSL), please follow [Tutorial](https://code.visualstudio.com/remote-tutorials/wsl/getting-started).
~~To disable the eInk functionality set the flag to "image_only" (in /settings/settings.py):~~
~~`render_target = "image_only"`~~
2019-03-23 20:27:10 +01:00
### Don't forget to check out the Wiki. It contains all the information to understanding and customising the script.
2019-05-17 21:34:42 +02:00
**P.S:** Don't forget to star and/or watch the repo. For those who have done so already, thank you very much!
2018-09-08 16:07:12 +02:00
2019-03-23 20:27:10 +01:00
## Contact
* Email: aceisace63@yahoo.com (average response time < 24 hours)
* Discord: [Inky-Calendar chatroom](https://discord.gg/sHYKeSM)