Python information display framework aimed at e-ink devices

Related tags

Hardwareinfodisplay
Overview

My display, using a Raspberry Pi Zero W and Waveshare 6" e-paper hat

infodisplay

Modular information display framework aimed at e-ink devices.

Built using Python 3.7 and pillow. Works out of the box with IT8951-powered e-paper displays.

Setting up

  • When using an e-paper display with IT8951 controller, install GregDMeyer's IT8951 library following the instructions there.
  • Clone this repository and cd to its folder
  • Install the basic required packages using pip:
pip3 install -r requirements.txt
  • (If you plan to use the google calendar integration) install the optional packages:
pip3 install -r optional-requirements.txt
  • Copy the example config file:
cp config.ini.example config.ini
  • Make your changes to config.ini using your favourite editor.

You should now be able to run the info display using something like python3 run.py.

FontAwesome icons

The class in fontawesome.py lets you use FontAwesome icons. These are used in the Calendar widget by default.

To see the icons, download a set of FontAwesome svg's (e.g. from here) and unzip the regular, solid, and brands folders into the fa/ folder:

wget https://use.fontawesome.com/releases/v5.15.4/fontawesome-free-5.15.4-desktop.zip
unzip fontawesome-free-5.15.4-desktop.zip
mv fontawesome-free-5.15.4-desktop/svgs/* fa/

Running as a service

A sample systemd unit file is provided in infodisplay.service. This is set up so the service only starts after an NTP time sync is established. Raspberry Pi's don't have a hardware RTC, so system time can be wildly inaccurate until they get the network time.

  • Edit infodisplay.service to reflect where you cloned the repository to, and what user it should run as. (default: /home/pi/infodisplay and pi)
  • Enable the systemd time-sync.target:
sudo systemctl enable systemd-time-wait-sync
  • Copy your unit file:
sudo cp infodisplay.service /etc/systemd/system/
  • Reload systemd:
sudo systemctl daemon-reload
  • Enable autostart of the service:
sudo systemctl enable infodisplay.service
  • Finally, start the service:
sudo systemctl start infodisplay.service

Google Calendar integration

To get events from your Google Calendar you need a Google Cloud Platform project, OAuth credentials and finally a token. Follow the 'Prerequisites' section of this tutorial and you should have a credentials.json file at the end.

The following needs to be done on your desktop computer, as a dialog will pop up for authorization:

  • Clone this repo.
  • Install the optional requirements using pip3 install -r optional-requirements.txt.
  • Copy your credentials.json to the util folder.
  • cd to the util folder.
  • Run python3 get-google-calendars.py.

This script should give you the ID's of the calendars synced to your account. Pick the ones you want and add them to the config.ini. There should now also be a token.json file in the directory, copy this to your main infodisplay folder.

Structure

Have a look through the example config file. This has one main section with global configuration parameters, all other sections are specific to widgets.

The display is divided into a grid, where each widget is given a canvas spanning one or more grid cells. The scheduler calls each widget to update their canvas, pastes updated widgets onto the global canvas, and triggers a display update at the right time.

The most basic example of a widget is given in Dummy.py. Widgets are automatically loaded if their name exists as a section in your config.ini. These sections should have names matching files in the widgets/ folder with corresponding widget classes that go by the same name (e.g. there is a 'Dummy' section in config.ini and widgets/Dummy.py has a class named Dummy).

Looking to add support for your own type of (e-ink) display? You should only have to modify display.py. Keep in mind that the default canvas is of image mode L, or 8-bit greyscale. You will have to modify this to suit your display.

Notes

In due time this information should be moved to the wiki section and expanded.

Owner
Niek Blankers
Niek Blankers
Play a song with a 3D printer.

MIDI to GCODE Play a song with a FDM 3D printer. SLA printers don't have motors, so they cannot play music. Warning: Be ready to turn off the 3D print

Patrick 6 Apr 11, 2022
New armachat based on Raspberry Pi PICO an Circuitpython code

Armachat-circuitpython New Armachat based on Raspberry Pi PICO an Circuitpython code Software working features: send message with header and store to

Peter Misenko 44 Dec 24, 2022
This repository contains all the code and files needed to simulate the notspot quadrupedal robot using Gazebo and ROS.

Notspot robot simulation - Python version This repository contains all the files and code needed to simulate the notspot quadrupedal robot using Gazeb

50 Sep 26, 2022
Pure micropython ESP32 SPI driver for sdcard and screen at the same SPI bus

micropython-esp32-spi-sdcard-and-screen-driver Proof of concept of Pure micropython espidf SPI driver for sdcard with screen at the same SPI bus (exam

Thomas Favennec 7 Mar 14, 2022
Jarvis: a personal assistant which can help you to manage your system

Jarvis Jarvis is personal AI based assistant which can help you to manage stuff in your computer. This is demo but I decided to make it more better so

2 Jun 02, 2022
Small Robot, with LIDAR and DepthCamera. Using ROS for Maping and Navigation

🤖 RoboCop 🤖 Small Robot, with LIDAR and DepthCamera. Using ROS for Maping and Navigation Made by Clemente Donoso, 📍 Chile 🇨🇱 RoboCop Lateral Fron

Clemente Donoso Krauss 2 Jan 04, 2022
A iot Bike sytem based on RaspberryPi, Ardiuino

Cyclic 's Kernel ---- A iot Bike sytem based on RaspberryPi, Ardiuino, etc 0x1 What is This? Cyclic 's Kernel is an independent System With self-produ

Retr0mous 2 Oct 09, 2022
A IC scan test interface for Arduino

ICSCAN_ARDUINO Prerequisites Python 3.6 or higher arduino uno or nano what is this It is a bitstream tranceiver to test IC chip It sends bitstream to

Nifty Chips Laboratory 0 Sep 15, 2022
AERO 421: Spacecraft Attitude, Dynamics, and Control Final Project.

AERO - 421 Final Project Redevelopment Spacecraft Attitude, Dynamics, and Control: Simulation to determine and control a satellite's attitude in LEO.

Gagandeep Thapar 3 Dec 16, 2022
A global contest to grow and monitor your own food with Raspberry Pi

growlab A global contest to grow and monitor your own food with Raspberry Pi A capture from phototimer of my seed tray with a wide-angle camera positi

Alex Ellis 442 Dec 23, 2022
Philippe 1 Jan 09, 2022
Home Assistant custom integration for e-distribución

e-Distribución is an energy distribution company that covers most of South Spain area. If you live in this area, you probably are able to register into their website to get some information about you

VMG 17 Sep 07, 2022
Mycodo is open source software for the Raspberry Pi that couples inputs and outputs in interesting ways to sense and manipulate the environment.

Mycodo Environmental Regulation System Latest version: 8.12.9 Mycodo is open source software for the Raspberry Pi that couples inputs and outputs in i

Kyle Gabriel 2.3k Dec 29, 2022
Authentication provider using Synology DSM users for Home Assistant

Authentication provider using Synology DSM users for Home Assistant The Synology authentication provider lets you authenticate using the users in your

Sam Debruyn 5 Oct 06, 2022
A Python script to monitor the latest block on an LCD.

PiHole-Monitoring A Python script to monitor the latest block on a lcd display. The first number represents the dns queries from the last 24h, the sec

Maxi 4 Dec 05, 2022
This application works with serial communication. Use a simple gui to send and receive serial data from arduino and control leds and motor direction

This application works with serial communication. Use a simple gui to send and receive serial data from arduino and control leds and motor direction

ThyagoKZKR 2 Jul 18, 2022
Water quality integration for Home Assistant with data provided by Budapest FVM

Water Quality FVM (Budapest, HU) custom integration for Home Assistant This custom component integrates water quality information provided by Budapest

Atticus Maximus 3 Dec 23, 2021
BMP180 sensor driver for Home Assistant used in Raspberry Pi

BMP180 sensor driver for Home Assistant used in Raspberry Pi Custom component BMP180 sensor for Home Assistant. Copy the content of this directory to

747Developments 1 Dec 17, 2021
A python file which I wrote to allow the Dorna Robots API to draw an Image on a 3D plane

Dorna-Robotics-Internship Code In the directory "Code" is a python file which I wrote to allow the Dorna Robots API to draw an Image on a 3D plane. I

Stephen Otto 2 Dec 06, 2021
MicroPython driver for 74HC595 shift registers

MicroPython 74HC595 A MicroPython library for 74HC595 8-bit shift registers. There's both an SPI version and a bit-bang version, each with a slightly

Mike Causer 17 Nov 29, 2022