E-Paper display loop with plugins

Related tags

MiscellaneousPaperPi
Overview

PaperPi V3

Spellcheck

NOTE

This version of PaperPi is under heavy development and is not ready for the average user. We are working on adding more screen compatibility, possibly adding color screen support for inkyPHAT and WaveShare 3 color screens. There are also plans to make plugins easier to install and update.

See our Milestones here. PRs, bug reports, contributions, and testers are welcome.

This version is compatible with Raspberry Pi OS Bullseye and does not work properly with Buster.

The stable version of PaperPi can be found here.

Splash Screen Splash Screen PaperPi PaperPi Weather Plugin

About PaperPi

PaperPi is an e-Paper display with multiple rotating display plugins that contain dynamic content.

PaperPi is a quiet and clean portal to the internet. No loud colors, no busy animations, just a lovely selection of the information you want without buzz and distraction. PaperPi rotates through your choice of plugin screens at the pace you choose.

PaperPi is written to work with almost all of the WaveShare SPI displays out of the box. PaperPi will work with the tiny 2" displays all the way up to the 10" HD displays with minimal configuration. Check the complete list of supported screens below.

For information on building a frame, case and custom cable, see these instructions.

To get started, jump to the Setup Instructions

Plugins

PaperPi supports many different plugins and layouts for each plugin.

Complete Plugins List

librespot pluginLibreSpot (spotify) Plugin word clock pluginWord Clock lms client pluginLogitech Media Server Plugin
decimal binary clockMoon Phase met_no pluginMet.no Weather Crypto Currency TickerCrypto Currency
reddit/r/quotesReddit Quotes XKCD ComicXKCD Comic Basic ClockBasic Clock

See the Developing Plugins guide for more information on creating your own plugins.

Changes

See the Change Log for a complete list of updates

V 0.3.0

  • PaperPi is no longer distributed as a PyInstaller frozen blob and now installs into /usr/local/paperpi and places an executable entry script in /usr/local/bin/.
  • Plugins can now be edited easily in /usr/local/paperpi/plugins/
  • Additional plugins can be placed in /usr/local/paperpi/plugins without rebuilding
  • Add support for mirroring output

PaperPi Requirements

PaperPi is compatible with Raspberry Pi OS Bullseye. Some python dependencies such as numpy will not build properly under Buster.

Required Hardware

  • Raspberry Pi (Pi 4, Pi 3, and Pi Zero)
  • Raspberry Pi OS Buster or later (64-bit supported)
  • WaveShare EPD Screen with PiHat
    • see the full list of currently supported screens
    • Note: HDMI screens are not supported

Optional Hardware

  • HiFiBerry hat (optional)
    • The HiFiBerry DAC+ PRO and similar boards add high-quality audio output to the Pi so it can act as a display and also work as a LMS client player using squeezelite
    • GPIO 2x20 headers must be added to the HiFiBerry HAT to provide an interface for the WaveShare HAT.
    • HiFiBerry's DAC+ Bundle with the following configuration is a good choice:
      • DAC+ Pro
      • Acrylic Case for (RCA) AND DIGI+
      • Raspberry Pi 4B 2GB (1GB should be sufficient as well)
      • 16GB SD Card
      • PowerSupply (USB C 5.1V/3A)
      • 2x20 Pin Male Header (required for WaveShare HAT)

Optional Software

PaperPi plugins work with a variety of other software such as Logitech Media Server and Spotify. Check the Plugin documentation for further instructions

Install & Setup

PaperPi requires only small amount of setup and is packaged with amateurs in mind. By default PaperPi will install as a daemon service that will start at boot.

Install

To get started, copy and paste the following command into a terminal window to download the latest stable version of PaperPi and automatically start the install and setup process.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/txoof/PaperPi/main/install/remote_install.sh)"

If you would rather install PaperPi yourself, clone this repo and run ./install/install.sh

Setup

Daemon Mode

The installer should prompt you to edit /etc/defaults/paperpi.ini. At minimum you must add your EPD Screen and enable several plugins. A complete list of supported EPD Screens are listed below.

Any changes to the PaperPi configuration require a restart of the service:

sudo systemctl restart paperpi-daemon.service

To disable the service from starting on boot, run the command:

sudo systemctl disable paperpi-daemon.service

On Demand

If you would rather run PaperPi on-demand rather than a daemon service you can run it as regular user (e.g. pi) by running /usr/local/bin/paperpi. A new configuration file will be created in your user's directory. Make sure to edit this file and add, at minimum, your EPD Screen.

PaperPi can be run on demand in daemon mode using paperpi -d

Uninstall

To uninstall PaperPi, run ./install/install.sh with either -u to uninstall or -p to uninstall and remove all configuration files.

Command Reference

usage: paperpi.py [-h] [--add_config plugin user|daemon] [-c CONFIG_FILE.ini]
                  [-l LOG_LEVEL] [-d] [--list_plugins]
                  [--plugin_info [plugin|plugin.function]]
                  [--run_plugin_func plugin.function [optional_arg1 arg2 argN ...]]
                  [-V]

optional arguments:
  -h, --help            show this help message and exit
  --add_config plugin user|daemon
                        copy sample config to the user or daemon configuration
                        file
  -c CONFIG_FILE.ini, --config CONFIG_FILE.ini
                        use the specified configuration file
  -l LOG_LEVEL, --log_level LOG_LEVEL
                        change the log output level
  -d, --daemon          run in daemon mode (ignore user configuration if
                        found)
  --list_plugins        list all available plugins
  --plugin_info [plugin|plugin.function]
                        get information for plugins and user-facing functions
                        provided by a plugin
  --run_plugin_func plugin.function [optional_arg1 arg2 argN ...]
                        run a user-facing function for a plugin
  -V, --version         display version and exit

--add_config plugin user|daemon: add a configuration file for plugin to the user configuration or daemon configuration files

-c/--config CONFIG_FILE.ini: Use the specified CONFIG_FILE instead of the default

-l/--log_level DEBUG|INFO|WARNING|ERROR: Specify the logging level from the command line

--list_plugins: List all plugins that have been found.

--plugin_info plugin|plugin.function: Print help information for a plugin and all of it's helper functions or a specific plugin.function

--run_plugin_func plugin.function Some plugins provide helper functions such as determining the LAT/LON of a location (met_no, moon_phases) or finding local Logitech Media Servers (lms_client). --run_plugin_func runs a plugin helper function. Use --plugin_info to learn more.

-V/--version: Display version information and exit

Developing PaperPi

If you would like to develop plugins for PaperPi, you will likely need a working build environment.

Requirements

  • python 3.7+
  • pipenv

Create a Build Environment

  1. Clone the repo: https://github.com/txoof/PaperPi
  2. Run $ ./utilities/create_devel_environment.sh to create a build environment
    • This will check for all necessary libraries and python modules and create a local venv for development

Contributing

Plugins can be pure python, but should follow the guide provided.

Supported Screens

Most NON-IT8951 screens are only supported in 1 bit (black and white) mode. Color output is not supported at this time. Some waveshare drivers do not provide 'standard' display and Clear methods; these displays are not supported at this time.

All IT8951 Screens now support 8 bit grayscale output.

Some WaveShare screens that support color output will also work with with the non-colored driver. Using the 1 bit driver can yield significantly better update speeds. For example: the waveshare_epd.epd2in7b screen takes around 15 seconds to update even when refreshing a 1 bit image, but can be run using the waveshare_epd.epd2in7 module in 1-bit mode which takes less than 2 seconds to update.

WaveShare Screen

NN. mfg.name

  1. inky.auto
  2. inky.impression
  3. inky.phat1608_black
  4. inky.phat1608_red
  5. inky.phat1608_yellow
  6. inky.phat_black
  7. inky.phat_red
  8. inky.phat_yellow
  9. inky.what_black
  10. inky.what_red
  11. inky.what_yellow
  12. omni_epd.mock
  13. waveshare_epd.epd1in02
  14. waveshare_epd.epd1in54
  15. waveshare_epd.epd1in54_V2
  16. waveshare_epd.epd1in54b
  17. waveshare_epd.epd1in54b_V2
  18. waveshare_epd.epd1in54c
  19. waveshare_epd.epd2in13
  20. waveshare_epd.epd2in13_V2
  21. waveshare_epd.epd2in13b
  22. waveshare_epd.epd2in13b_V3
  23. waveshare_epd.epd2in13c
  24. waveshare_epd.epd2in13d
  25. waveshare_epd.epd2in66
  26. waveshare_epd.epd2in66b
  27. waveshare_epd.epd2in7
  28. waveshare_epd.epd2in7b
  29. waveshare_epd.epd2in7b_V2
  30. waveshare_epd.epd2in9
  31. waveshare_epd.epd2in9_V2
  32. waveshare_epd.epd2in9b
  33. waveshare_epd.epd2in9b_V3
  34. waveshare_epd.epd2in9c
  35. waveshare_epd.epd2in9d
  36. waveshare_epd.epd3in7
  37. waveshare_epd.epd4in01f
  38. waveshare_epd.epd4in2
  39. waveshare_epd.epd4in2b
  40. waveshare_epd.epd4in2b_V2
  41. waveshare_epd.epd4in2c
  42. waveshare_epd.epd5in65f
  43. waveshare_epd.epd5in83
  44. waveshare_epd.epd5in83_V2
  45. waveshare_epd.epd5in83b
  46. waveshare_epd.epd5in83b_V2
  47. waveshare_epd.epd5in83c
  48. waveshare_epd.epd7in5
  49. waveshare_epd.epd7in5_HD
  50. waveshare_epd.epd7in5_V2
  51. waveshare_epd.epd7in5b
  52. waveshare_epd.epd7in5b_HD
  53. waveshare_epd.epd7in5b_V2
  54. waveshare_epd.epd7in5c
  55. waveshare_epd.it8951

Issues

Hardware Issues See the troubleshooting guide

Software Bugs Please open tickets at GitHub.

Document updated 2022.05.01

PaperPi (Development)

This is a development version of PaperPi that's not fit for prime-time yet.

The official version can be found here.

Helping Out

If you're interested in helping out, check out the issues and jump in. Collaborators are always welcome

Owner
Aaron Ciuffo
Aaron Ciuffo
Adansons Base is a data management tool that organizes metadata of unstructured data and creates and organizes datasets.

Adansons Base is a data management tool that organizes metadata of unstructured data and creates and organizes datasets. It makes dataset creation more effective and helps find essential insights fro

Adansons Inc 27 Oct 22, 2022
LinkScope allows you to perform online investigations by representing information as discrete pieces of data, called Entities.

LinkScope Client Description This is the repository for the LinkScope Client Online Investigation software. LinkScope allows you to perform online inv

108 Jan 04, 2023
High-level bindings to the Valhalla framework.

Valhalla for Python This spin-off project simply offers improved Python bindings to the fantastic Valhalla project. Installation pip install valhalla

GIS • OPS 20 Dec 13, 2022
A clock purely made with python(turtle)...

Clock A clock purely made with python(turtle)... Requirements Pythone3 IDE or any other IDE Installation Clone this repository Running Open this proje

Abhyush 1 Jan 11, 2022
🤞 Website-Survival-Detection

- 🤞 Website-Survival-Detection It can help you to detect the survival status of the website in batches and return the status code! - 📜 Instructions

B0kd1 4 Nov 14, 2022
bamboo-engine 是一个通用的流程引擎,他可以解析,执行,调度由用户创建的流程任务,并提供了如暂停,撤销,跳过,强制失败,重试和重入等等灵活的控制能力和并行、子流程等进阶特性,并可通过水平扩展来进一步提升任务的并发处理能力。

bamboo-engine 是一个通用的流程引擎,他可以解析,执行,调度由用户创建的流程任务,并提供了如暂停,撤销,跳过,强制失败,重试和重入等等灵活的控制能力和并行、子流程等进阶特性,并可通过水平扩展来进一步提升任务的并发处理能力。 整体设计 Quick start 1. 安装依赖 2. 项目初始

腾讯蓝鲸 96 Dec 15, 2022
51AC8 is a stack based golfing / esolang that I am trying to make.

51AC8 is a stack based golfing / esolang that I am trying to make.

7 May 22, 2022
ChronoRace is a tool to accurately perform timed race conditions to circumvent application business logic.

ChronoRace is a tool to accurately perform timed race conditions to circumvent application business logic. I've found in my research that w

Tanner 64 Aug 04, 2022
A topology optimization framework written in Taichi programming language, which is embedded in Python.

Taichi TopOpt (Under Active Development) Intro A topology optimization framework written in Taichi programming language, which is embedded in Python.

Li Zhehao 41 Nov 17, 2022
Python Repository for Bachelor Ski Sign.

BachelorSkiSign Python Repository for Bachelor Ski Sign. This application reads data from https://bachelorapi.azurewebsites.net/ It is written in Ciru

Winston 1 Jan 04, 2022
Sample python script for monitoring Rocketchat database and get statistics of users.

rocketchat-DB-monitoring Sample python script for monitoring Rocketchat database and get statistics of users. 1. Update python: yum check-update && yu

Mojtaba Taleghani 1 Apr 12, 2022
Wordle is fun, so let's ruin it with computers.

ruin-wordle Wordle is fun, so let's ruin it with computers. Metrics This repository assesses two metrics about each algorithm: Success: how many of th

Charles Tapley Hoyt 11 Feb 11, 2022
VAST - Visualise Abstract Syntax Trees for Python

VAST VAST - Visualise Abstract Syntax Trees for Python. VAST generates ASTs for a given Python script and builds visualisations of them. Install Insta

Jesse Phillips 2 Feb 18, 2022
Agora-token-helper - Some help tools for AgoraToken

Agora Token Helper Support AgoraToken version 001 - 006. But for security reason

A Curated Collection of Awesome Python Scripts

A Curated Collection of Awesome Python Scripts that will make you go wow. This repository will help you in getting those green squares. Hop in and enjoy the journey of open source. 🚀

Prathima Kadari 248 Dec 31, 2022
NBT-Project: This is a APP for building NBT's

NBT-Project This is an APP for building NBT's When using this you select a box on kit maker You input the name and enchant in there related boxes Then

1 Jan 21, 2022
TrainingBike - Code, models and schematics I've used to interface my stationary training bike with PC.

TrainingBike Code, models and schematics I've used to interface my stationary training bike with PC. You can find more information about the project i

1 Jan 01, 2022
Url-check-migration-python - A python script using Apica API's to migrate URL checks between environments

url-check-migration-python A python script using Apica API's to migrate URL chec

Angelo Aquino 1 Feb 16, 2022
MDAnalysis tool to calculate membrane curvature.

The MDAkit for membrane curvature analysis is part of the Google Summer of Code program and it is linked to a Code of Conduct.

MDAnalysis 19 Oct 20, 2022
Feapder的管道扩展

FEAPDER 管道扩展 简介 此模块为feapder的pipelines扩展,感谢广大开发者对feapder的贡献 随着feapder支持的pipelines越来越多,为减少feapder的体积,特将pipelines提出,使用者可按需安装 管道 PostgreSQL 贡献者:沈瑞祥 联系方式:r

boris 9 Dec 07, 2022